Schleife beendet sich nicht :-(

So,

in line 37, 39,41 tritt der gleiche Fehler auf: Die Schleife möchte sich nicht beenden, aber in meiner Google-Suche wurde immer der Tipp gegeben bei Mysql-Abfragen eine Schleife einzubinden aber das geht nicht richtig...sie beendet sich nicht.

Der Aufbau ist aber völlig gleich!

PHP:
<?php
session_start();
?>
<?php
$db = mysql_connect('localhost', 'root', '') or die ("Konnte keine Verbindung zur Datenbank herstellen"); 

mysql_select_db("homepage")or die ("Die Datenbank existiert nicht.");
ini_set('display_errors', 1);
error_reporting(E_ALL);

//Userdaten aus Sessions laden
$e_mail_session = $_SESSION["E_mail"];
//Freunde auslesen und spalten
$freunde_auslesen = mysql_query("SELECT Freunde FROM userdaten WHERE `E_mail` = '$e_mail_session'") or die(mysql_error());
$row = mysql_fetch_object($freunde_auslesen);
$maximale_freundesanzahl = substr_count($row->Freunde,','); 
$pieces = explode(",", $row->Freunde);

$count = 1;
$aktuelle_id = 0;

$aktuelles_mitglied_kommentare_suchen = mysql_query("Select Threadersteller from postids where `Threadersteller` = '$aktuelle_id'") or die(mysql_error());
$aktuelles_mitglied_anzahl_der_kommentare_suchen = mysql_num_rows($aktuelles_mitglied_kommentare_suchen);

$vorname_x0 = mysql_query("Select Vorname from userdaten where `ID` = '$pieces[$aktuelle_id]'") or die(mysql_error());
$nachname_x0 = mysql_query("Select Nachname from userdaten where `ID` = '$pieces[$aktuelle_id]'") or die(mysql_error());
//$datum_x2 = mysql_query("Select Datum+Uhrzeit from postids Where `Threadersteller` = '$pieces[$aktuelle_id]'") or die(mysql_error());
$Kommentar = mysql_query("Select Kommentar from postids WHERE `Threadersteller` = '$pieces[$aktuelle_id]'") or die(mysql_error());


while($aktuelle_id < $maximale_freundesanzahl)
{
//Suche, wie viele Beiträge das Mitglied geschrieben hat
while($count > $aktuelles_mitglied_anzahl_der_kommentare_suchen)
{

while($vorname = mysql_fetch_array($vorname_x0))
{  
while($nachname = mysql_fetch_array($nachname_x0))
{
while($row2 = mysql_fetch_array($Kommentar))
{
//Poste diese!
  echo '<h6 style="font-family: Bookman Old Style; font-weight: normal; text-decoration: underline; font-style: italic;"><span style="font-size: 8pt;"><span style="font-size: 8pt;">> Aktuelle Meldungen </span></span></h6><span style="font-size: 12pt; color: rgb(105, 105, 105); font-weight: bold;"><span style="font-family: Century Gothic;"><font size="2"><span style="font-family: Arial Black;">'.$vorname[$aktuelle_id]. " ".$nachname[$aktuelle_id] .'</span></font><br />
      </span></span>
  <div style="margin-left: 40px;"><span style="font-family: Monotype Corsiva;">'.$row2[$aktuelle_id].'</span><br />

    </div><span style="font-size: 8pt;"><span style="font-size: 8pt;"><span style="font-family: Bookman Old Style; font-weight: bold;"><span style="text-decoration: underline;"><span style="font-style: italic;"><br />
            </span></span></span><span style="font-weight: bold;">-></span> Kommentar hinzufügen<span style="font-style: italic;"><br />
        <br />
        <br />
        <br />
        </span> </span></span><br />
  <br />

  
  <h6><span style="font-size: 8pt;"></span></h6>';
  }
  }
  }
$count++;
}

$aktuelle_id++;
}

?>
 
item: Als erstes formatieren wir mal die Schleifen und sehen schnell, was nicht geht
PHP:
while($aktuelle_id < $maximale_freundesanzahl){
//Suche, wie viele Beiträge das Mitglied geschrieben hat
	while($count > $aktuelles_mitglied_anzahl_der_kommentare_suchen){
		while($vorname = mysql_fetch_array($vorname_x0)){  
			while($nachname = mysql_fetch_array($nachname_x0)){
				while($row2 = mysql_fetch_array($Kommentar)){
				}
  			}
  		}
		$count++;
	}
	$aktuelle_id++;
}

du hast da:
while($count > $aktuelles_mitglied_anzahl_der_kommentare_suchen)

und $count wird immer vergrössert. Somit kommst du nie aus deiser Schleife heraus, je grösser $count, umso wahrer diese Bedinung

item: Vorname und Nachname kannst du aus einem Query nehmen.
item: $nachname[$aktuelle_id] findet garanteirt nix, da das Feld im SQL 'Nachname' heisst und nicht so wie der Wert der aktuellen id
item: dito für $row2[$aktuelle_id]. Das muss $row1['Kommentar']

Das ergibt so auf die Schnelle
PHP:
$aktuelles_mitglied_kommentare_suchen = mysql_query("Select Threadersteller from postids where `Threadersteller` = '$aktuelle_id'") or die(mysql_error());
$aktuelles_mitglied_anzahl_der_kommentare_suchen = mysql_num_rows($aktuelles_mitglied_kommentare_suchen);

$userdatenResult = mysql_query("Select Vorname, Nachname from userdaten where `ID` = '$pieces[$aktuelle_id]'") or die(mysql_error());
$kommentarResult = mysql_query("Select Kommentar from postids WHERE `Threadersteller` = '$pieces[$aktuelle_id]'") or die(mysql_error());

while($aktuelle_id < $maximale_freundesanzahl){
	while($count <= $aktuelles_mitglied_anzahl_der_kommentare_suchen){
		while($userdaten = mysql_fetch_array($userdatenResult)){  
			while($kommentar = mysql_fetch_array($kommentarResult)){
				//TODO: richtig formatiert ausgeben
				echo $userdaten['Vorname'];
				echo $userdaten['Nachname'];
				echo $kommentar['Kommentar'];
  			}
  		}
		$count++;
	}
}
Die Zeile '$aktuelle_id++;' hab ich mal gelöscht. die hat an dieser Stelle keinerlei Einfluss auf die SQL weiter oben und ich versteh nicht, wass du damit willst.

Der ganze Code ist immer noch nicht schön und hat sehr viel Verbesserungspotential. Jedoch solange ich nicht weiss, was der Code eigentlich machen soll, kann ich da nicht weiterhelfen.
 
Zurück