Whileschleife bricht ab bzw gibt nicht alle Daten wieder

JuStAx

Grünschnabel
Hallo zusammen,

nachdem ich mir die Forenregeln durchgelesen habe war ich etwas verwirrt bzgl. des "HTML" punkts.
Sollte ich irgend einen fehler machen, sagt mir bitte bescheid ich werde dann drauf achten.

Ich wollte mir eine kleine Navigation bauen, die sich Namen und Unterpunkte aus einer mySQL Datenbank holt.

Wie ich es versuche ist sicherlich nicht die sauberste Lösung, falls jemand Stichworte hat kann er mir diese gerne posten.
Dann lese ich mich gerne rein :-)

Folgendes problem:
Die Navigation wird angezeigt, auch die schleife geht...
Alle "$row->linkname" variablen werden ausgegeben, allerdings nur diese.
Für den ersten Eintrag werden auch die unterkategorien ausgelesen, nur für die restlichen nicht.

navtest.jpg


PHP:
  <?php
  $ergebnis = mysql_query("SELECT * FROM navi ORDER BY id");
  		while($row = mysql_fetch_object($ergebnis))
  {
  echo '
</p>
  <ul id="Navigation">
    
  <li><a href="index.php?page='.$row->linkname.'">'.$row->linkname.'</a><br>
	<ul>';
    if ($row->linksub1 == "") { 
	} else {
	echo '<li><a href="index.php?page='.$row->linksub1_1.'">'.$row->linksub1.'</a></li>'; }
    if ($row->linksub2 == "") { 
	} else {
      echo '<li><a href="index.php?page='.$row->linksub2_2.'">'.$row->linksub2.'</a></li>'; }
	if ($row->linksub3 == "") { 
	} else {  
      echo '<li><a href="index.php?page='.$row->linksub3_3.'">'.$row->linksub3.'</a></li>'; }
	if ($row->linksub4 == "") { 
	} else {  
      echo '<li><a href="index.php?page='.$row->linksub4_4.'">'.$row->linksub4.'</a></li>'; }
	if ($row->linksub5 == "") { 
	} else {  
      echo '<li><a href="index.php?page='.$row->linksub5_5.'">'.$row->linksub5.'</a></li>'; }
echo '</ul>
  </li>
</ul>';
}
  ?>
 
Meine PHP Kentnisse sind ja net so dolle, aber was mir gleich auffaellt:
Code:
if ($row->linksub1 == "") { 
    } else {  
     // .. code
Waere ein
Code:
if ($row->linksub1 != "") { 
     // .. code
}
net besser? :D

Hast du dir die einzelnen Rows mal anzeigen lassen die ausgelesen werden?
 
Bevor ich zur Prblemlösung komme.
Ja, ich habe Ideen:
item: Den Code lesbar formatieren. Tablulatoren sind keine Glücksache!
item: mit != kann man auf ungleich testen. Dann muss man nicht jede Ausgabe in einen else-Teil schreiben.

Hier mal das ganze etwas lesbarer
PHP:
<?php
$ergebnis = mysql_query("SELECT * FROM navi ORDER BY id");
while($row = mysql_fetch_object($ergebnis)){
	echo '
</p>
<ul id="Navigation">

<li><a href="index.php?page='.$row->linkname.'">'.$row->linkname.'</a><br>
<ul>';
	if ($row->linksub1 != "") { 
		echo '<li><a href="index.php?page='.$row->linksub1_1.'">'.$row->linksub1.'</a></li>'; 
	}
	if ($row->linksub2 != "") { 
		echo '<li><a href="index.php?page='.$row->linksub2_2.'">'.$row->linksub2.'</a></li>'; 
	}
	if ($row->linksub3 != "") { 
		echo '<li><a href="index.php?page='.$row->linksub3_3.'">'.$row->linksub3.'</a></li>'; 
	}
	if ($row->linksub4 != "") { 
		echo '<li><a href="index.php?page='.$row->linksub4_4.'">'.$row->linksub4.'</a></li>'; 
	}
	if ($row->linksub5 != "") { 
		echo '<li><a href="index.php?page='.$row->linksub5_5.'">'.$row->linksub5.'</a></li>'; 
	}
	echo '</ul>
</li>
</ul>';
}
?>

Jetzt geh ich ma an die Problemsuche

MiMi hat recht. Mach doch mal ein var_dump($row); innerhelab der Schleife und poste das erste Resultat davon im Forum..
 
Danke euch beiden erstmal für eure Antwort.
Hab alles versucht etwas einzurücken, damit es eben lesbarer ist.

Allerdings ist das alles n bissken verrutscht in der PHP syntax.
Ich achte beim nächsten mal besser drauf :-)

Code:
Home
NeuigkeitenÖffnungszeitenTestobject(stdClass)#1 (12) { ["id"]=> string(1) "1" ["linkname"]=> string(4) "Home" ["linksub1"]=> string(11) "Neuigkeiten" ["linksub1_1"]=> string(5) "neues" ["linksub2"]=> string(14) "Öffnungszeiten" ["linksub2_2"]=> string(15) "oeffnungszeiten" ["linksub3"]=> string(4) "Test" ["linksub3_3"]=> string(4) "test" ["linksub4"]=> string(0) "" ["linksub4_4"]=> string(1) "0" ["linksub5"]=> string(0) "" ["linksub5_5"]=> string(0) "" } 

Verifizierung
ISO 9001Sedexobject(stdClass)#2 (12) { ["id"]=> string(1) "7" ["linkname"]=> string(13) "Verifizierung" ["linksub1"]=> string(8) "ISO 9001" ["linksub1_1"]=> string(7) "iso9001" ["linksub2"]=> string(5) "Sedex" ["linksub2_2"]=> string(5) "sedex" ["linksub3"]=> string(0) "" ["linksub3_3"]=> string(0) "" ["linksub4"]=> string(0) "" ["linksub4_4"]=> string(1) "0" ["linksub5"]=> string(0) "" ["linksub5_5"]=> string(0) "" } 

A-Z
Über unsTeamTextilienWerbemittelReferenzenobject(stdClass)#1 (12) { ["id"]=> string(1) "8" ["linkname"]=> string(3) "A-Z" ["linksub1"]=> string(8) "Über uns" ["linksub1_1"]=> string(7) "aboutus" ["linksub2"]=> string(4) "Team" ["linksub2_2"]=> string(4) "team" ["linksub3"]=> string(9) "Textilien" ["linksub3_3"]=> string(9) "textilien" ["linksub4"]=> string(11) "Werbemittel" ["linksub4_4"]=> string(11) "werbemittel" ["linksub5"]=> string(10) "Referenzen" ["linksub5_5"]=> string(10) "referenzen" } 

Veredelung
StickFlex- / FlockdruckTransferdruckTampondruckSiebdruckobject(stdClass)#2 (12) { ["id"]=> string(1) "9" ["linkname"]=> string(10) "Veredelung" ["linksub1"]=> string(5) "Stick" ["linksub1_1"]=> string(5) "stick" ["linksub2"]=> string(18) "Flex- / Flockdruck" ["linksub2_2"]=> string(9) "flexflock" ["linksub3"]=> string(13) "Transferdruck" ["linksub3_3"]=> string(13) "transferdruck" ["linksub4"]=> string(11) "Tampondruck" ["linksub4_4"]=> string(1) "0" ["linksub5"]=> string(9) "Siebdruck" ["linksub5_5"]=> string(9) "siebdruck" } 

Onlineshop
TextilienWerbemittelobject(stdClass)#1 (12) { ["id"]=> string(2) "10" ["linkname"]=> string(10) "Onlineshop" ["linksub1"]=> string(9) "Textilien" ["linksub1_1"]=> string(10) "textilshop" ["linksub2"]=> string(11) "Werbemittel" ["linksub2_2"]=> string(15) "werbemittelshop" ["linksub3"]=> string(0) "" ["linksub3_3"]=> string(0) "" ["linksub4"]=> string(0) "" ["linksub4_4"]=> string(1) "0" ["linksub5"]=> string(0) "" ["linksub5_5"]=> string(0) "" } 

Kontakt
BüroGrafikEinzelhandelobject(stdClass)#2 (12) { ["id"]=> string(2) "11" ["linkname"]=> string(7) "Kontakt" ["linksub1"]=> string(4) "Büro" ["linksub1_1"]=> string(5) "buero" ["linksub2"]=> string(6) "Grafik" ["linksub2_2"]=> string(6) "grafik" ["linksub3"]=> string(12) "Einzelhandel" ["linksub3_3"]=> string(12) "einzelhandel" ["linksub4"]=> string(0) "" ["linksub4_4"]=> string(1) "0" ["linksub5"]=> string(0) "" ["linksub5_5"]=> string(0) "" } 

AGB
Impressumobject(stdClass)#1 (12) { ["id"]=> string(2) "12" ["linkname"]=> string(3) "AGB" ["linksub1"]=> string(9) "Impressum" ["linksub1_1"]=> string(9) "impressum" ["linksub2"]=> string(0) "" ["linksub2_2"]=> string(0) "" ["linksub3"]=> string(0) "" ["linksub3_3"]=> string(0) "" ["linksub4"]=> string(0) "" ["linksub4_4"]=> string(0) "" ["linksub5"]=> string(0) "" ["linksub5_5"]=> string(0) "" }

gefüllt sind sie anscheinend... das verblüfft mich grad noch mehr :-(
 
Zurück