Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

mysql Abfrage -> nach bestimmtem Wert ein Absatz

Hallo,

ich hoffe ihr könnt mir helfen, ich habe schon jede erdenkliche Schleife oder if Funktion ausprobiert.

Ich möchte alle Werte aus einer Datenbank auslesen (Schichtplan) und möchte das nach jeder Kalenderwoche ein Absatz gemacht wird.
Das er nach KW und Datum sortiert hab ich schon geschafft.

BSP:

47 bla bla bla
47 bla bla bla
47 bla bla bla

48 bla bla bla
48 bla bla bla
48 bla bla bla

meine momentane Abfrage ist:

$query = "SELECT * FROM schichtplan WHERE Tag >= CURDATE() ORDER BY Tag ASC, KW DESC";
              $result = mysql_query($query);
              
            while ($ausgabe = mysql_fetch_array($result))
         {
            

            setlocale(LC_TIME,"de_DE");
            list($year,$month,$day) = explode('-',$ausgabe[1]);
            $date = mktime(0,0,0,$month,$day,$year);
            
            echo "<tr>
            <td width='5'></td>   
            <td><font face='verdana' size='1px'>$ausgabe[0]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[6]</font></td>
            <td><font face='verdana' size='1px'>$day.$month.$year "; echo strftime('%A',$date);
            echo "</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[2]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[3]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[4]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[5]</font></td>
            </tr>";
            
         }

Ich habe nämlich vor nachher die einzelnen Datensätze, welche nach Datum und KW sortiert sind. in einzelnen Tabellen darzustellen.

Ich hoffe auch zahlreiche Hilfestellungen. Danke schonmal im vorraus.

Mfg.

-Tipsy-


Antworten zu mysql Abfrage -> nach bestimmtem Wert ein Absatz:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Wo genau ist jetzt das Problem? Einfach den Wert der KW in eine Zwischenvariable speichern - erfolgt eine Änderung (alter Wert != neuer Wert), dann Umbruch / leere Zelle / wasauchimmer. ;)

greez 8)
JoSsiF

Hm, danke für den Tip,

ich werde es mal ausprobieren.

mfg.

-Tipsy-

hm,

so ich hab das mal versucht, jedoch teilt er jetzt irgendwie recht willkürlich.

mein code jetzt ist

Zitat


$query2 = "SELECT * FROM schichtplan WHERE Tag >= CURDATE() ORDER BY Tag ASC, KW DESC LIMIT 0,1";
             $result2 = mysql_query($query2);

       while ($ausgabe2 = mysql_fetch_row($result2))
         {
            $KW = $ausgabe2[6];
         }
          
 
             $query = "SELECT * FROM schichtplan WHERE Tag >= CURDATE() ORDER BY Tag ASC, KW DESC";
              $result = mysql_query($query);
              
            while ($ausgabe = mysql_fetch_array($result))
         {
            

            setlocale(LC_TIME,"de_DE");
            list($year,$month,$day) = explode('-',$ausgabe[1]);
            $date = mktime(0,0,0,$month,$day,$year);
            
            echo "<tr>
            <td width='5'></td>   
            <td><font face='verdana' size='1px'>$ausgabe[0]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[6]</font></td>
            <td><font face='verdana' size='1px'>$day.$month.$year "; echo strftime('%A',$date);
            echo "</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[2]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[3]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[4]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[5]</font></td>
            </tr>";
            if($KW !== $ausgabe[6])
            {
            echo "<tr><td height='20'></td></tr>";
            }
            
         }



Ich hoffe ihr könnt mir helfen, der macht irgendwie immer dann ein Break wenn es nciht sein soll, die ersten 5 Zeilen funktioniert es, aber dann macht er immer einen BR.

mfg -Tipsy-

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Wozu diese unsinnige 2. Query? Du sollst doch nur gucken, ob beim Schleifendurchlauf x+1 die KW immer noch dieselbe ist wie zum Durchlauf x. Wenn nein, dann Umbruch bauen und Zwischenbariable mit dem neuen KW-Wert belegen.

greez 8)
JoSsiF

Hm, ich danke dir schonmal das du mit mir so geduldig bist :-)

Jetzt hab ich den Query mal gelöscht und die $ausgabe[6] = die Kalenderwoche in der DB in $KW gespeichert.

Zur info: in der Datenbank ist immer die ganze woche gespeichert + die KW. Nun möchte ich die Ausgabe so anzeigen lassen, dass er die Wochen nach der KW sotiert auflistet (mit leerzeile zwischen den einzelnen KWs)

hier nochmal mein jetziger code:

 

Zitat

$query = "SELECT * FROM schichtplan WHERE Tag >= CURDATE() ORDER BY Tag ASC, KW DESC";
              $result = mysql_query($query);
              
            while ($ausgabe = mysql_fetch_array($result))
         {
            
            $KW = $ausgabe[6];
            setlocale(LC_TIME,"de_DE");
            list($year,$month,$day) = explode('-',$ausgabe[1]);
            $date = mktime(0,0,0,$month,$day,$year);
            
            echo "<tr>
            <td width='5'></td>   
            <td><font face='verdana' size='1px'>$ausgabe[0]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[6]</font></td>
            <td><font face='verdana' size='1px'>$day.$month.$year "; echo strftime('%A',$date);
            echo "</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[2]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[3]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[4]</font></td>
            <td><font face='verdana' size='1px'>$ausgabe[5]</font></td>
            </tr>";
            if($KW!=$ausgabe[6])
            {
            echo "<tr><td height='10'></td></tr>";
            }
            
            
         }

Vielleicht siehst du da ja einen Fehler, zumindest macht er jetzt garkein Absatz mehr nach den einzelnen KWs.

 ??? ??? ???

mfg

-Tipsy-

hm jetzt habe ich es geschafft, jedoch ist das komische das er mir jetzt immer den Montag der Kalenderwoche abschneidet...

weisst du vielleicht warum?


hier der jetzige code:

 

Zitat
$query = "SELECT * FROM schichtplan WHERE Tag >= CURDATE() ORDER BY Tag ASC, KW DESC";
              $result = mysql_query($query);
               $kwtest = 47;
            while ($ausgabe = mysql_fetch_array($result))

         {
            
            if($kwtest == $ausgabe[6])
               {
               setlocale(LC_TIME,"de_DE");
               list($year,$month,$day) = explode('-',$ausgabe[1]);
               $date = mktime(0,0,0,$month,$day,$year);
               echo "<tr>
               <td width='5'></td>   
               <td><font face='verdana' size='1px'>$ausgabe[0] $ausgabe[6]</font></td>
               <td><font face='verdana' size='1px'>$day.$month.$year "; echo strftime('%A',$date);
               echo "</font></td>
               <td><font face='verdana' size='1px'>$ausgabe[2]</font></td>
               <td><font face='verdana' size='1px'>$ausgabe[3]</font></td>
               <td><font face='verdana' size='1px'>$ausgabe[4]</font></td>
               <td><font face='verdana' size='1px'>$ausgabe[5]</font></td>
               </tr>";
            }
            else
            {
               echo "<tr><td height='10'></td></tr>";
               $kwtest=$kwtest + 1;
            }         
         }

mfg

-Tipsy-

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
jedoch ist das komische das er mir jetzt immer den Montag der Kalenderwoche abschneidet...

weisst du vielleicht warum?

Jupp, weiß ich.

In deinem Vorhaben hat ein if-else-Konstrukt nichts zu suchen. Denk doch mal nach! Du gibst den ganzen Datenmüll nur dann aus, wenn die Bedingung in der If-Klausel erfüllt ist. Aber warum denn? Die Daten sollen doch IMMER ausgegeben werden, nur dass bei einer neuen KW ZUSÄTZLICH eine Leerzeile eingefügt werden soll.

Naja, Versuch macht kluch, und jetzt darfst du nochmal ;D

greez 8)
JoSsiF

« MitgliederanmeldungAdobe GoLive - Ebene »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Datenbank
Eine Datenbank (DBS), im englischen database, ist eine strukturierte Datensammlung und fungiert wie ein "digitales Archiv". Datenbanken dienen der effizienten Aufbewahrun...

Tag
Ein Tag ist ein englischer Begriff und bedeutet so viel wie Etikett, Mal, Marke, Auszeichner und Anhänger. Generell ist Tag eine Auszeichnung eines Datenbetandes mit...

ASCII
ASCII (American Standart Code for Information Interchange) ist ein 7-Bit-Zeichencode, der 128 verschiedene Zeichen darstellen kann. Diese 128 Zeichen umfassen die englisc...