Trennen von Tabellen

nchristoph

Erfahrenes Mitglied
Hallo

Kurze Erklärung meines Problems:

Ich lese Daten aus einer MySql DB aus und fülle eine Tabelle damit. Die Tabelle wird in der Whileschleife erstellt.

Jetzt ist mein Problem, das ich mehrere Abteilungen hab und mit meinem momentanen Code alles in einer Wurst ausgegeben wird.

Ich möchte aber zwischen 2 Abteilungen eine Leerzeile haben. Ich hab da schon bissel zeit investiert und kriegs nicht richtig hin.

Hier mal mein Code
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"<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";
        }   

?>

Abgesehen davon funktioniert das teil zur vollsten zufriedenheit.

Wie kann ich das lösen?
mfg
 
Hallo,

habe nur mal kurz raufgeschaut, vielleicht so...

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\">";
    
    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>";
            }
            $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";
        }   

?>
 
Zuletzt bearbeitet von einem Moderator:
Danke für die Antwort.

So hab ichs auch schon versucht, allerdings hab ich dann zwischen jedem Datensatz eine Leerzeile.

imo is es so

------------------------------------------------------------
------------ blbalbabl---------------------- top------
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
------------ blbalbabl---------------------- top------
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------

Ich will , das es so aussieht:


------------------------------------------------------------
------------ blbalbabl---------------------- top------
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------


------------------------------------------------------------
------------ blbalbabl---------------------- top------
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------


------------------------------------------------------------
------------ blbalbabl---------------------- top------
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------

usw.

Mit der Lösung die du vorgeschlagen hast Kalle, schaut es so aus


------------------------------------------------------------
------------ blbalbabl---------------------- top------
------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------

------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------

------------------------------------------------------------
-- bild -- name -- telnr -- kw -- mail -- dat --
------------------------------------------------------------

Und das ist genau das was ich nicht haben will

Ich hoffe das es jetzt leichter verständlich ist.
 
dann musst du das auch so sagen ;)

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\">";
    $zahl = 0;
    if(mysql_num_rows($result)) {
        while($row = mysql_fetch_assoc($result)) {
        
            $rubrik = $row['aName']; 
            
            
            if($rubrik != $rubrik_akt && $zahl == 0) {     
               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>";
                
                $zahl++;
            }else{
                  echo"<tr><td colspan=\"6\" ></td></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 ist schon spät ;), glaube so wenn ich dich richtig verstanden habe.

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 = true;
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";
}   
?>
 
Hallo zusammen.

Die Reihenfolge der Ausgabe ist ja wie es aussieht schon richtig. Du musst nur nach jeder Abteilung die Tabelle beenden (</table>) dann vielleicht ein <br> und dann natürlich <table ...>

Zum Überprüfen wann eine Tabelle zuende ist, machst du dir ne Variable in der die aktuelle Abteilungs ID drinsteht und überprüfst am Anfang der Ausgabeschleife ob die ID noch gleich ist. Wenn nicht, Tabelle beenden und wieder beginnen!

Edit: Ich hätte mir besser den Code anschauen sollen. ;)
So solltest das ganze ans Ende der Ausgabeschleife packen!

Gruß
Bastian
 
Zuletzt bearbeitet:
Zurück