hannes2: php problem mit mysqli_query

Hallo, ich bin bereits den zweiten Tag am gleichen Problem, und finde die Lösung nicht (was ich nicht alles probiert habe!).

Ich möchte, dass eine Navigation dynamisch erweitert wird. Wenn z.B. ein neues Dokument hochgeladen wurde (inkl. DB-Eintrag), soll dieses Dokument als Navigationspunkt aufgeführt werden. Die Navigation sieht so aus (Ausschnitt):

<li><a href='#'>Mitteilungen</a>
	    <ul>
		  <li>
			<ul>";
				$query1 = "SELECT * FROM dokumente WHERE dir='Mitteilungen' AND thema='Publikationen Schulpflege' ORDER BY unix_time";
				$RES = mysqli_query($connect,$query1);

				while(list($dokumentID[],$dateiname[],$dokuName[]) = mysqli_fetch_array($RES,MYSQLI_BOTH));{
				$max_num = count($dokuName);
				$max_num = $max_num -1;
				for($i=0;$i<$max_num;$i++){

				echo "
				  <li>
					<a href='".$quellverzeichnis.$dateiname[$i]."' onFocus='this.blur();'>".$dokuName[$i]."<img src='../Grafik/pdf_small.gif' style='margin:0 0 -2px 3px; border:0;' alt='pdf-Datei'></a>
				  </li>
				  ";
				}
				}

			  echo"
			 </ul>".$Publikationen_Schulpflege." 
		  </li>
		  <li>
			<ul>";
				$query2 = "SELECT * FROM dokumente WHERE dir='Mitteilungen' AND thema='amtliche Publikationen' ORDER BY unix_time";
				$RES = mysqli_query($connect,$query2);

				while(list($dokumentID[],$dateiname[],$dokuName[]) = mysqli_fetch_array($RES,MYSQLI_BOTH));{
				$max_num = count($dateiname);
				$max_num = $max_num -1;
				for($i=0;$i<$max_num;$i++){

				echo "
				  <li>
					<a href='".$quellverzeichnis.$dateiname[$i]."' onFocus='this.blur();'>".$dokuName[$i]."<img src='../Grafik/pdf_small.gif' style='margin:0 0 -2px 3px; border:0;' alt='pdf-Datei'></a>
				  </li>
				  ";
				}
				}

			  echo"
			  </ul>".$amtliche_Publikationen."
		  </li>
		  <li>
			<ul>";
				$query3 = "SELECT * FROM dokumente WHERE dir='Mitteilungen' AND thema='Medienmitteilungen' ORDER BY unix_time";
				$RES = mysqli_query($connect,$query3);

				while(list($dokumentID[],$dateiname[],$dokuName[]) = mysqli_fetch_array($RES,MYSQLI_BOTH));{
				$max_num = count($dateiname);
				$max_num = $max_num -1;
				for($i=0;$i<$max_num;$i++){

				echo "
				  <li>
					<a href='".$quellverzeichnis.$dateiname[$i]."' onFocus='this.blur();'>".$dokuName[$i]."<img src='../Grafik/pdf_small.gif' style='margin:0 0 -2px 3px; border:0;' alt='pdf-Datei'></a>
				  </li>
				  ";
				}
				}

			  echo"
			  </ul>".$Medienmitteilungen."
		  </li>

Das sichtbare Resultat in der Navigation ist nicht wie erwüncht. Statt dass jeweils im entsprechenden <li> nur die Dokumente (entsprechend der DB-Afrage) angezeigt werden, werden alle Dokumente (alles, was im $RES-array ist) aufsummiert.

Ich hoffe, dass mein Anliegen verständlich formuliert ist. Vielleicht kann mir hier jemand helfen.

  1. Tach!

    Das sichtbare Resultat in der Navigation ist nicht wie erwüncht. Statt dass jeweils im entsprechenden <li> nur die Dokumente (entsprechend der DB-Afrage) angezeigt werden, werden alle Dokumente (alles, was im $RES-array ist) aufsummiert.

    Das ist aus der Sicht des Anwenders. Aber du bist der Programmierer und musst das Problem aus Programmierersicht untersuchen, damit du da weiterkommst. Also à la: In Zeile A erwarte ich in Variable / als Funktionsergebnis B den Wert C, bekomme aber D.

    Du könntest dann merken, dass du zwar zeilenweise das Ergebnis aus der Datenbank holst, aber dann für jede Zeile über die gesamte bisherige Menge läufst und die Ausgabe machst. Natürlich wächst diese Menge mit jeder Fetch-Zeile. Aber eigentlich möchtest nur mit jedem Fetch die geholte Zeile ausgeben und dann mit dem nächsten Fetch fortfahren, genauso wie es die Beispiele im PHP-Handbuch zeigen.

    dedlfix.

  2. Entschuldigung, ich glaube, ich habe soeben das Problem selbst gelöst. Ich habe vor jede DB-Abfrage die Arrays mit unset() geleert.