kleines Problem mit zwei Whileschleifen...

Vaio82

Erfahrenes Mitglied
Guten Morgen... :o)

Ich habe da so ein kleines Archiv gebaut, nur habe ich ein Problem. Liegt wohl am wenigen schlafen... ;-)

Die Ausgabe erfolgt anhand einer While-Schleife, inder eine zweite While-Schleife läuft. Die erste gibt mir die Rubriken + Erstellungsdatum aus und die zweite holt mir aus einer anderen Tabelle die Namen der Menschen, die das angelegt haben. Soweit zur Logik.

Bis zu der zweiten While-Schleife läuft alles wunderbar, er gibt mir auch das Erstellungsdatum aus... Somit ergibt Schleife 2 "true". Doch danach gibt er mir den restlichen Wert der ersten Schleife nicht aus:

Beginn Schleife 1

- Ausgabe der Rubriken nach Überschriften ($subject)
- Verlinkung dieser Rubriken

Beginn Schleife 2

- Anhand der user_id wird der Username und seine Email ausgegeben.

Ende Schleife 2

- Ausgabe des Datums ($timestamp)

Ende Schleife 1


Doch genau ab dem Ende der zweiten Schleife gibt er nichts brauchbares aus...

Würde mich über einen kleinen "Denkanstoß" sehr freuen... :o)

PHP:
<?

// Ausgabe der Unterrubriken unter den 3 Oberkategorien!

if($s ==0){


$x = 0;

	

	$result = mysql_query("select * from nmscc_project where subject = '$subject' order by name asc");
		while($zeile = mysql_fetch_object($result)){ 
		
		$id_user = $zeile->user;
		$x = $x +1;
		
			echo("<table width=\"100%\">
					<tr>
					<td width=\"50%\"><li><a href=\"$PHP_SELF?subject=$subject&s=1&x=$zeile->id\">$zeile->name</a></li><br><br></td>
					<td width=\"10%\"><br><br></td>
					<td width=\"25%\">");
					
					// Mitarbeitername
					$result1 = mysql_query("select name,email from nmscc_mitarbeiter where id = '$id_user'");
						while($zeile = mysql_fetch_object($result1)){ 
							echo("<a href=\"mailto:$zeile->email\">$zeile->name</a>");
						}
					
					echo("<br><br></td>
					<td width=\"15%\">");echo date("d.m.Y", $zeile->timestamp); echo("<br><br></td>
					</tr>
					</table>");
		}
echo("<br><br>Administration:<hr>
<a href=\"anlegen.php?subject=$subject&s=$s&type=1\"><img src=\"anlegen.png\" border=\"0\" width=\"80\" height=\"15\"></a>
<a href=\"anlegen.php?subject=$subject&s=$s&type=2\"><img src=\"editieren.png\" border=\"0\" width=\"80\" height=\"15\"></a>
<a href=\"anlegen.php?subject=$subject&s=$s&type=3\"><img src=\"loeschen.png\" border=\"0\" width=\"80\" height=\"15\"></a>");		

}

// Ausgabe der Inhalte jeder Unterkategorie!

if($s==1){

	$result = mysql_query("select * from nmscc_inhalt where subject = '$subject' and x = '$x' order by name asc");
			while($zeile = mysql_fetch_object($result)){ 
					echo("<table width=\"100%\">
							<tr>
							<td width=\"40%\"><li><a href=\"show.php?modul=2&nummer=$zeile->Ident\" target=\"_blank\">$zeile->dname</a></li></td>
							<td width=\"20%\">");
							
							$hilf = $zeile->type;

								if($hilf == "application/pdf"){
									echo("*.pdf");
								}elseif($hilf == "application/msword"){
									echo("*.doc");
								}elseif($hilf == "application/vnd.ms-excel"){
									echo("*.xls");
								}elseif($hilf == "application/vnd.ms-powerpoint"){
									echo("*.ppt");
								}elseif($hilf == "text/html"){
									echo("*.html");
								}elseif($hilf == "image/pjpeg"){
									echo("*.jpeg");
								}elseif($hilf == "image/gif"){
									echo("*.gif");
								}elseif($hilf == "application/x-zip-compressed"){
									echo("*.zip");
								}

					echo("</td>
							<td width=\"25%\">");

							$result1 = mysql_query("select * from pro_03_mitarbeiter where id = '$zeile->user'");
								while($zeile = mysql_fetch_object($result1)){ 
									echo("<a href=\"mailto:$zeile->email\">$zeile->name</a>");
								}

		 			echo("</td>
		 					<td width=\"15%\">11.12.2003</td>
							</tr>
							</table>");
		}
		
		echo("<br><br>Administration:<hr>
			<a href=\"anlegen.php?subject=$subject&s=$s&type=1&x=$x\"><img src=\"anlegen.png\" border=\"0\" width=\"80\" height=\"15\"></a>
			<a href=\"anlegen.php?subject=$subject&s=$s&type=2&x=$x\"><img src=\"loeschen.png\" border=\"0\" width=\"80\" height=\"15\"></a>");	
		
			
}

?>

Schönen Gruß,
Claus
 
Ich habe es bisher vermieden zwei Datenbankabfragen in Schleifen zu verschachteln. Das Problem wird wohl sein, dass er in der zweiten Schleife das Ergebnis der ersten Abfrage überschreibt.
Es gibt an dieser Stelle mehrere Lösungsansätze. Du könntest die erste Abfrage in ein Array speichern, und dieses dann mit der ersten WHILE-Schleife durchgehen... dann hast du keine Probleme mehr mit den Abfrage.
Evtl. gibt es aber auch eine Möglichkeit die SQL-Abfrage so zu optimieren oder die Datenbank zu modifizieren, dass es mit einer Abfrage machbar ist. Das funktioniert aber nicht immer.
 
Danke für Deine Antwort... Natürlich wäre es möglich die DB-Tabelle "redundant" zu machen, um die Abfrage realisieren zu können, aber das habe ich eigentlich nicht vor... (präventiver Schutz vor meinem Liebling der Referentiellen Integrität) Mal sehen was mir da so einfällt... :o) Aber ein globaler Array wäre schon etwas feines...
 
Zuletzt bearbeitet:
wenn ich dich rihtig verstanden habe kommt nach dem block nichts gescheites raus ?
$result1 = mysql_query("select name,email from nmscc_mitarbeiter where id = '$id_user'");
while($zeile = mysql_fetch_object($result1)){
echo("<a href=\"mailto:$zeile->email\">$zeile->name</a>");
}

timestamp kann er nach der Schleife ja nicht ausgeben, da $zeile von der 1. Whileschleife ja glücklicherweise überschrieben wurde...
oder habe ich dein problem doch falsch verstanden?
 
Zurück