Do-While-Schleife in While Schleife

phpameise

Mitglied
Ich habe ein Formular mit 4 Feldern: RefJahr, RefVeranstaltung, RefTaetigkeit und RefDozent.
Das Feld RefTaetigkeit ist eine Select-Box. Die Taetigkeiten werden aus einer Tabelle dort eingelesen. Nun gibt es offensichtlich ein Problem. Ich baue eine Tabelle auf, die sich an der Anzahl von Datensätzen aus einer anderen Tabelle orientiert. Es geht alles außer - das Feld RefDozent bleibt beim Echo leer uns so klappt wohl auch die ganze nachfolgende UPDATE Funktion nicht. Liegt es an den beiden WHILE? Kann mir jemand eine Lösung anbieten?

PHP:
<?php
while($rows=mysql_fetch_array($Satz_Referenzen)){
?>
	<tr>
            	<td width="10%"><? $id[]=$rows['id']; ?><? echo $rows['id']; ?></td>
            	<td width="35%"><input name="RefJahr[]" type="text" id="RefJahr" onBlur="checkdate()" value="<? echo $rows['RefJahr']; ?>"></td>
            	<td width="30%">Name der Veranstaltung</td>
            	<td width="25%"><input name="RefVeranstaltung[]" type="text" id="RefVeranstaltung" value="<? echo $rows['RefVeranstaltung']; ?>" maxlength="50"></td>
        	</tr>
        	<tr>
            	<td>T&auml;tigkeit</td>
            	<td><select name="RefTaetigkeit[]" id="RefTaetigkeit">
              <option value=""></option>
<?php
do {  
?>
              <option value="<?php echo $row_Taetigkeitsbereiche_Satz['Name']?>"<?php if (!(strcmp($row_Taetigkeitsbereiche_Satz['Name'], $rows['RefTaetigkeit']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Taetigkeitsbereiche_Satz['Name']?></option>
<?php
} while ($row_Taetigkeitsbereiche_Satz = mysql_fetch_assoc($Taetigkeitsbereiche_Satz));
$rows = mysql_num_rows($Taetigkeitsbereiche_Satz);
if($rows > 0) {
mysql_data_seek($Taetigkeitsbereiche_Satz, 0);
$row_Taetigkeitsbereiche_Satz = mysql_fetch_assoc($Taetigkeitsbereiche_Satz);
}
?>
            	</select>
	</td>
            	<td>Dozent</td>
            	<td><input name="RefDozent[]" type="text" id="RefDozent" value="<? echo $rows['RefDozent']; ?>" maxlength="50"></td>
         	</tr>
         	
<?php
}
?>
 
Zuletzt bearbeitet:
Ich bae jetzt mal das ganze unnütze HTML-Zeugs rausgeworfen und ein 'lesbarer' Code draus gemacht.
Leider versteh ich beim besten Willen nicht, was dieser Code eigentlich machen soll
PHP:
while($rows=mysql_fetch_array($Satz_Referenzen)){
 	$id[]=$rows['id'];
 	echo $rows['id'];
 	echo $rows['RefJahr'];
 	echo $rows['RefVeranstaltung'];
	do {  
		// In der Folgezeile fehlt ein ;
		echo $row_Taetigkeitsbereiche_Satz['Name']
		if (!(strcmp($row_Taetigkeitsbereiche_Satz['Name'], $rows['RefTaetigkeit']))) {
			echo "selected=\"selected\"";
		} 
		// In der Folgezeile fehlt ein ;
		echo $row_Taetigkeitsbereiche_Satz['Name']
	} while ($row_Taetigkeitsbereiche_Satz = mysql_fetch_assoc($Taetigkeitsbereiche_Satz));
	$rows = mysql_num_rows($Taetigkeitsbereiche_Satz);
	if($rows > 0) {
		mysql_data_seek($Taetigkeitsbereiche_Satz, 0);
		$row_Taetigkeitsbereiche_Satz = mysql_fetch_assoc($Taetigkeitsbereiche_Satz);
	}
	echo $rows['RefDozent'];
}

Was ist $row_Taetigkeitsbereiche_Satz?
Was ist $Taetigkeitsbereiche_Satz?

Wenn ein $Taetigkeitsbereiche_Satz ein SQL-Result ist, dann solltest du es for der der ersten Schleife in ein Array knallen und dann diesen durchgehen. Weils so ist $Taetigkeitsbereiche_Satz nach dem ersten durchlauf am Ende und beginnt nicht wieder von vorne
 
Ich versuchs mal. $row_Taetigkeitsbereiche_Satz ist ein array das aus den in einer Tabelle tabTaetigkeiten stehenden Taetigkeiten besteht, die in der Spalte 'Name' stehen. (Code der Select Abfrage, query, fetch habe ich nicht hier reingeschrieben, weil es funktioniert)
Das Select-Feld wird also mit den Daten aus der 'tblTaetigkeiten' gefüllt und die Start-Einstellung ist der bereits eingestellte Wert in der 2.Tabelle 'tblReferenzen'. Dort stehen mehrere Datensätze drin. Inhalt dort: id, user_id, RefJahr, RefVeranstaltung, RefTaetigkeit, RefDozent. Es funktioniert alles. Nur wird jeweils das Feld 'RefDozenten' nicht gefüllt, obwohl der Datensatz auch dort einen Eintrag hat. Ich habe jetzt die Felder mal vertauscht (die anderen 3 Felder sind reine Textfelder) und das Select-Feld an das Ende gepackt. Dann werden alle 4 Felder gefüllt. Ich kann damit leben. Wenn es allerdings eine Lösung gibt durch eine andere grammatische Form - Zeichensätzung das Problem zu beheben, wäre es mir natürlich lieber - auch für andere Projekte, in denen ich das Select-Feld mit der DO-While Schleife nicht einfach ans Ende der aussenliegenden While-Schleife packen kann.
 

Neue Beiträge

Zurück