fehler auf php3.de? oder anders in php4? -while-
simon
- php
0 Christian Kruse0 simon
Hallo Leute!
ich habe eine klassische while-schleife, die nicht funktionieren will:
while ($daten = mysql_fetch_assoc($result)) {....}
und gleichzeitig finde ich auf:
http://php3.de/manual/de/control-structures.while.php
.. den satz, dass die whileschleife solange wiederholt wird, bis "bis die while-Bedingung als TRUE ausgewertet wird".
häää? was das bis jetzt nicht immer bei FALSE der fall?
ich weiß leider nicht, welches konstrukt ich statt der while schleife hier verwenden kann, oder wie ich probeweise die Bedingung der while-schleife umkehren kann.
while (!$daten = mysql_fetch_assoc($result)) {....}
...wird ja wohl nicht gehen..
bitte um ratschläge!
lg simon
Hallo Simon,
while ($daten = mysql_fetch_assoc($result)) {....}
Sollte problemlos gehen.
und gleichzeitig finde ich auf:
http://php3.de/manual/de/control-structures.while.php.. den satz, dass die whileschleife solange wiederholt
wird, bis "bis die while-Bedingung als TRUE ausgewertet
wird".
Das ist falsch.
häää? was das bis jetzt nicht immer bei FALSE der fall?
Richtig. Die Schleife wird sooft wiederholt, bis die
Auswertung des Ausdrucks 'false' ergibt.
ich weiß leider nicht, welches konstrukt ich statt der
while schleife hier verwenden kann,
Z. B. eine for-Schleife.
oder wie ich probeweise die Bedingung der while-schleife
umkehren kann.
while (!$daten = mysql_fetch_assoc($result)) {....}
...wird ja wohl nicht gehen..
while(!($daten = mysql_fetch_assoc($result)) waere richtig.
Aber das moechtest du nicht.
Gruesse,
CK
Hallo Christian!
Danke für deine schnelle und präzise antwort!
leider finde ich tatsächlich diese falsche beschreibung der while-schleife auf mehreren seiten wie z.B.:
http://php3.de/manual/de/control-structures.while.php
aber egal.
while(!($daten = mysql_fetch_assoc($result)) waere richtig.
das ist trotzdem gut zu wissen! danke!
Aber das moechtest du nicht.
stimmt - so wie's aussieht nicht.
ich poste hier mal meinen code, vielleicht findet jemand den fehler:
-----------<code>-------------------
[..]
$list = "SELECT * FROM table ORDER BY id_ges";
$listed = mysql_query($list,$conn);
if(!$listed) { die("Query fehlgeschlagen!"); }
?>
<form name="formular1" method="get" action="main.php">
<select name="id">
<?php
while ($daten=mysql_fetch_assoc($listed)) {if(strlen($daten[titel]) > 30) { $daten[title] = substr($daten[title],0,29)+"...";}
echo "<option value='".$daten[id_ges]."'>".$daten[title]."</option>\n";
} ?>
</select>
----------------------</code>-----------------------
leider kommt als ergebnis immer das:
"
<select name="id">
</select>
"
sprich: nix. die while-schleife wird kein einziges mal durchlaufen...
Grüsse und ein Herzliches Dankeschön an denjenigen, der mir das brett vorm kopf nimmt.
simon
Hallo!
Danke für deine schnelle und präzise antwort!
leider finde ich tatsächlich diese falsche beschreibung der while-schleife auf mehreren seiten wie z.B.:
http://php3.de/manual/de/control-structures.while.php
aber egal.
Ja, alle das Manual udn all seine Kopien sind fehlerhaft => http://bugs.php.net/
ich poste hier mal meinen code, vielleicht findet jemand den fehler:
-----------<code>-------------------
[..]
$list = "SELECT * FROM table ORDER BY id_ges";
$listed = mysql_query($list,$conn);
if(!$listed) { die("Query fehlgeschlagen!"); }
?>
<form name="formular1" method="get" action="main.php">
<select name="id">
<?php
while ($daten=mysql_fetch_assoc($listed)) {if(strlen($daten[titel]) > 30) { $daten[title] = substr($daten[title],0,29)+"...";}
echo "<option value='".$daten[id_ges]."'>".$daten[title]."</option>\n";
} ?>
</select>
----------------------</code>-----------------------leider kommt als ergebnis immer das:
"
<select name="id">
</select>
"
sprich: nix. die while-schleife wird kein einziges mal durchlaufen...
Also auf den ersten Blick sieht das richtig aus - solange es die Tabelle "table" gibt. Du könntest mit mysql_num_rows() prüfen, wieviele Zeilen die Abfrage zurckgibt, oder gebe die Abfrage einfach mal in dem Formularfeld in phpMyAdmin ein!
Grüße
Andreas
Also auf den ersten Blick sieht das richtig aus - solange es die Tabelle "table" gibt.
Du könntest mit mysql_num_rows() prüfen, wieviele Zeilen die Abfrage zurckgibt, oder gebe die Abfrage einfach mal in dem Formularfeld in phpMyAdmin ein!
super tipps! danke!
hab den fehler schon gefunden. ich erzähl lieber nicht, woran es gelegen hat - *schäm*
ich sollte mal wieder eine pause machen..
!danke << danke >> danke!
simon sagt strichpunkt.
Hallo,
vielleicht hast Du versehentlich die Beschreibung für while () {} und do {...}while() durcheinandergebracht.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo simon
-----------<code>-------------------
[..]
$list = "SELECT * FROM table ORDER BY id_ges";
$listed = mysql_query($list,$conn);
if(!$listed) { die("Query fehlgeschlagen!"); }
Damit beendest du den PHP-Parser. dh. falls die DB-Abfrage nicht klappt, wird !kein! nachfolgendes PHP ausgeführt.
?>
<form name="formular1" method="get" action="main.php">
<select name="id">
<?php
versuch es mit '' also $daten['title'], ist ja ein assoziatives Array (bei php.net gibt es auch ne Seite, warum $a['foo'] richtiger ist als $a[foo]
while ($daten=mysql_fetch_assoc($listed)) {if(strlen($daten
[titel]) > 30) { $daten[title] = substr($daten[title],0,29)+"...";}
kleiner Denkanstoß: titel, die länger als 30 sind werden damit auf Länge 32 gekürzt, ist das so gewollt? Dann hast du Titel, die 32 Zeichen lang sind, bei denen die letzten 3 Zeichen aber ... sind.
(ist aber nicht das Problem)
echo "<option value='".$daten[id_ges]."'>".$daten
[title]."</option>\n";
dito ''.
Bekommst du überhaupt Daten aus DB? Lass dir doch mal mysql_num_rows($listed) ausgeben.
} ?>
</select>
----------------------</code>-----------------------