Trennen von Tabellen

Jetzt nochmal neu...

Hier musst du die Tabelle beenden und wieder anfangen. Mit den <tr>'s musst du mal selbst abzählen. :)
PHP:
            if($rubrik != $rubrik_akt) {             
            echo"</table><br>";
            echo"<table border=\"1\" align=\"center\">";
            echo"<tr>";
            echo"<td colspan=\"5\" align=\"center\" id=\"abteilung\"><a name=".$row['aName'].">".$row['aName']."</a></td>";
            echo"<td><a href=\"index.php?p=mitarbeiter#top\">Top</a></td>";
            echo"</tr>";
            }

PHP:
<?php

$sql="SELECT abteilung.name AS aName, 
   bild, 
   mitarbeiter.name AS mName, 
   email,
   kurzwahl,
   geburtstag,
   telefonnr,
   DATE_FORMAT(mitarbeiter.geburtstag,'%d.%m')AS datum
   FROM mitarbeiter
         JOIN abteilung      ON abteilung.id = mitarbeiter.abteilung
   ORDER BY abteilung.name ASC,
            mitarbeiter.name ASC";
    $result = mysql_query($sql) OR die(mysql_error());
   
    
    
    $rubrik_akt="";
    echo"<table border=\"1\" align=\"center\">";
    echo"<tr>";
    if(mysql_num_rows($result)) {
        while($row = mysql_fetch_assoc($result)) {
        
            $rubrik = $row['aName']; 
            
            
            if($rubrik != $rubrik_akt) {             
            echo"</table><br>";
            echo"<table border=\"1\" align=\"center\">";
            echo"<tr>";
            echo"<td colspan=\"5\" align=\"center\" id=\"abteilung\"><a name=".$row['aName'].">".$row['aName']."</a></td>";
            echo"<td><a href=\"index.php?p=mitarbeiter#top\">Top</a></td>";
            echo"</tr>";
            }
            $rubrik_akt = $rubrik;
            
            echo"<tr>";
            echo"<td id=\"bild\"><a name=".urlencode($row['mName'])."></a><img src=\"../bilder/".$row['bild'].".jpg\" alt=".$row['mName']."></td>";
            echo"<td id=\"name\">".$row['mName']."</td>";
            echo"<td id=\"kw\">".$row['kurzwahl']."</td>";
            echo"<td id=\"telnr\">".$row['telefonnr']."</td>";
            echo"<td id=\"mail\"><a href=\"mailto:".$row['email']."\">".$row['email']."</a></td>";
            echo"<td id=\"datum\">".$row['datum']."</td>";            
            echo"</tr>";        
                                                        
            }          
                echo"</table>";                
    }    
    else {
            echo "Kein Mitarbeiter eingetragen\n";
        }   

?>
 
Sorry Schreibfehler :) man man man... Den hättest du aber sehen können...

PHP:
<?php

$sql="SELECT abteilung.name AS aName, 
     bild, 
     mitarbeiter.name AS mName, 
     email,
     kurzwahl,
     geburtstag,
     telefonnr,
     DATE_FORMAT(mitarbeiter.geburtstag,'%d.%m')AS datum
     FROM mitarbeiter
     JOIN abteilung      ON abteilung.id = mitarbeiter.abteilung
     ORDER BY abteilung.name ASC,
     mitarbeiter.name ASC";
$result = mysql_query($sql) OR die(mysql_error());
    
$rubrik_akt="";
echo"<table border=\"1\" align=\"center\">";
$flag = false;
if(mysql_num_rows($result)) {
   while($row = mysql_fetch_assoc($result)) {        
      $rubrik = $row['aName'];          
      if($rubrik != $rubrik_akt) {     
         echo"<tr>";        
         echo"<td colspan=\"5\" align=\"center\" id=\"abteilung\"><a                 name=".$row['aName'].">".$row['aName']."</a></td>";
         echo"<td><a href=\"index.php?p=mitarbeiter#top\">Top</a></td>";
         echo"</tr>";
         $flag = false;    
      }else{
           $flag = true;
        }
      $rubrik_akt = $rubrik;         
         echo"<tr>";
         echo"<td id=\"bild\"><a name=".urlencode($row['mName'])."></a><img src=\"../bilder/".$row['bild'].".jpg\" alt=".$row['mName']."></td>";
         echo"<td id=\"name\">".$row['mName']."</td>";
         echo"<td id=\"kw\">".$row['kurzwahl']."</td>";
         echo"<td id=\"telnr\">".$row['telefonnr']."</td>";
         echo"<td id=\"mail\"><a href=\"mailto:".$row['email']."\">".$row['email']."</a></td>";
         echo"<td id=\"datum\">".$row['datum']."</td>";            
         echo"</tr>"; 
         if($flag == true){
            echo '<tr><td colspan="6"></td></tr>';
         }            
   }          
   echo"</table>";                
} else {
   echo "Kein Mitarbeiter eingetragen\n";
}   
?>
 
Wie ich die Leerzeile grösser mache ist mir klar, soviel wissen hab ich auch:P

Aber das nur 2 Datensätze passen und der rest wieder seperiert wird, das ist was ich meine.
 
PHP:
         if($flag == true){
            echo '<tr><td colspan="6"></td></tr>';
         }   else{
          echo"<tr>";
         echo"<td id=\"bild\"><a name=".urlencode($row['mName'])."></a><img src=\"../bilder/".$row['bild'].".jpg\" alt=".$row['mName']."></td>";
         echo"<td id=\"name\">".$row['mName']."</td>";
         echo"<td id=\"kw\">".$row['kurzwahl']."</td>";
         echo"<td id=\"telnr\">".$row['telefonnr']."</td>";
         echo"<td id=\"mail\"><a href=\"mailto:".$row['email']."\">".$row['email']."</a></td>";
         echo"<td id=\"datum\">".$row['datum']."</td>";            
         echo"</tr>";
}
 
Im prinzip ist es glaub ich einfacher, für jede Abteilung einen eigenen Table tag zu machen.

Nur wird, wenn ich den ganzen Table Code in die While Schleife packe, für jeden Mitarbeiter der jeweiligen Abteilung ein eigener Table kreiert, nicht wie beabsichtigt für jede Abteilung.

Also so wenn ich den ganzen Code in die While packe:

----------------------------------------------------------------------------
------------------------------- abteilung ------------------------------
----------------------------------------------------------------------------
------------ mitarbeitergebrabbel----------------------------------
----------------------------------------------------------------------------

----------------------------------------------------------------------------
------------------------------- abteilung ------------------------------
----------------------------------------------------------------------------
------------ mitarbeitergebrabbel----------------------------------
----------------------------------------------------------------------------
 
Hi,

müsste eigentlich auch funktionieren wenn du die einzelnen Abteilungen erstmal mit GROUP BY holst und dann die Datensätze schleifst. Die ganzen trennungen kannst du dir dann mit ein paar Variablen und if, elseif zusammensetzten.

Hab jetzt kein konkreten code für dich, aber so gehe ich das immer an wenn ich komplexe DB tables sinnvoll aufspalten will.
 
Ich hab jetzt ne weile herumprobiert, ich glaube der Fehler liegt in meinem gruppier code.

Egal was ich mache, es wird nur eine zeile generiert und dann wird die tabelle beendet.
Die Rows werden allerdings weiter ausgelesen und ausgegeben nur halt ohne tabelle.

Ich hoffe ich hab mich verständlich ausgedrückt.
 
So, hier jetzt meine endgültige, überdachte Lösung!? ;-)

Tabelle wird außerhalb der Ausgabeschleife geöffnet und geschloßen. Wenn die Abteilung sich ändert, geschloßen und wieder geöffnet mit der "Abteilungstopspalte".

Grüße
Bastian

PHP:
<?php

$sql="SELECT abteilung.name AS aName, 
   bild, 
   mitarbeiter.name AS mName, 
   email,
   kurzwahl,
   geburtstag,
   telefonnr,
   DATE_FORMAT(mitarbeiter.geburtstag,'%d.%m')AS datum
   FROM mitarbeiter
         JOIN abteilung      ON abteilung.id = mitarbeiter.abteilung
   ORDER BY abteilung.name ASC,
            mitarbeiter.name ASC";
    $result = mysql_query($sql) OR die(mysql_error());
   
    echo"<table border=\"1\" align=\"center\">";
    
    if(mysql_num_rows($result)) {
        while($row = mysql_fetch_assoc($result)) {
        
            $rubrik = $row['aName']; 
            if($rubrik_akt == 0) $rubrik_akt=$rubrik;
            
            if($rubrik != $rubrik_akt) {             
            echo"</table><br>";
            echo"<table border=\"1\" align=\"center\">";
            echo"<tr>";
            echo"<td colspan=\"5\" align=\"center\" id=\"abteilung\"><a name=".$row['aName'].">".$row['aName']."</a></td>";
            echo"<td><a href=\"index.php?p=mitarbeiter#top\">Top</a></td>";
            echo"</tr>";
            $rubrik_akt = $rubrik;
           
            echo"<tr>";
            echo"<td id=\"bild\"><a name=".urlencode($row['mName'])."></a><img src=\"../bilder/".$row['bild'].".jpg\" alt=".$row['mName']."></td>";
            echo"<td id=\"name\">".$row['mName']."</td>";
            echo"<td id=\"kw\">".$row['kurzwahl']."</td>";
            echo"<td id=\"telnr\">".$row['telefonnr']."</td>";
            echo"<td id=\"mail\"><a href=\"mailto:".$row['email']."\">".$row['email']."</a></td>";
            echo"<td id=\"datum\">".$row['datum']."</td>";            
            echo"</tr>";        
        }          
    echo"</table>";
    }    
    else {
            echo "Kein Mitarbeiter eingetragen\n";
        }   

?>
 
Zurück