script schluck arrayeintrag ---> HILFE
backbone
- php
wieso schluckt dieser php-script den ersten kompletteintrag des arrays???
ich dreh gleich durch weil ich den fehler einfach nicht finde!!!
die eigentliche funktion sollte eigentlich sein: wenn die suche feststellt das in dem array nichts ist soll sie das ausgeben.
aba wie gesagt: das funktionniert nicht :(
plz help
<?php
include('table.inc.php');
$result_test = mysql_fetch_array($search_send);
if ($submit) { if (!$result_test) { echo"<p>keine Film in der Datenbank gefunden</p>";
} else {
echo"
<table border="0">
<tr><td width="200" height="100" valign="top" colspan="2"><p>Folgende Titel wurden gefunden</p></td></tr>
";
while ($result = mysql_fetch_array($search_send)){
echo"
<tr><td width="120"><p>ID:</p></td><td><p>$result[0]</p></td></tr>
<tr><td width="120"><p>Filmname:</p></td><td><p>$result[1]</p></td></tr>
<tr><td width="120"><p>Länge:</p></td><td><p>$result[2]</p></td></tr>
<tr><td width="120"><p>1. Sprache:</p></td><td><p>$result[3]</p></td></tr>
<tr><td width="120"><p>2. Sprach:</p></td><td><p>$result[4]</p></td></tr>
<tr><td width="120"><p>Tonquallität:</p></td><td><p>$result[5]</p></td></tr>
<tr><td width="120"><p>Bildquallität:</p></td><td><p>$result[6]</p></td></tr>
<tr><td width="120"><p>Medienanzahl:</p></td><td><p>$result[7]</p></td></tr>
<tr><td width="120"><p>Medientyp:</p></td><td><p>$result[8]</p></td></tr>
<tr><td width="120"><p>Bemerkung:</p></td><td><p>$result[9]</p></td></tr>
<tr><td width="120"><p>1. Link:</p></td><td><p>$result[10]</p></td></tr>
<tr><td width="120" height="100" valign="top"><p>2. Link:</p></td><td height="100" valign="top"><p>$result[11]</p></td></tr>
";}
}
echo"</table>";
}
else {
echo"
<form method="post" action="search.php">
<p>suche</p><input type="text" name="name" values="suche" size="20">
<input type="submit" name="submit" value="senden">
</form>
";}
?>
Hi,
wieso schluckt dieser php-script den ersten kompletteintrag des arrays???
weil Du exakt das sagst.
$result_test = mysql_fetch_array($search_send);
Hier wird die erste Zeile des Resultsets ausgelesen,
while ($result = mysql_fetch_array($search_send)){
und hier mit der nächsten (zweiten) beginnend der Rest durchgegangen.
Cheatah
Hi,
wieso schluckt dieser php-script den ersten kompletteintrag des arrays???
weil Du exakt das sagst.
$result_test = mysql_fetch_array($search_send);
Hier wird die erste Zeile des Resultsets ausgelesen,
while ($result = mysql_fetch_array($search_send)){
und hier mit der nächsten (zweiten) beginnend der Rest durchgegangen.
hm....gut, und wie kann ich das dann anders lösen? könntest ma da nich helfen?
Hallo backbone,
$result_test = mysql_fetch_array($search_send);
Hier wird die erste Zeile des Resultsets ausgelesen,
while ($result = mysql_fetch_array($search_send)){
und hier mit der nächsten (zweiten) beginnend der Rest durchgegangen.
hm....gut, und wie kann ich das dann anders lösen? könntest ma da nich helfen?
Ganz einfach: Verwende statt der while-Anweisung die do-while-Anweisung
http://www.php.net/manual/de/control-structures.do.while.php
Die überprüft erst am Fuß der Schleife, ob sie weitermacht.
Gruss,
Vinzenz
Moin!
Ganz einfach: Verwende statt der while-Anweisung die do-while-Anweisung
http://www.php.net/manual/de/control-structures.do.while.php
Die überprüft erst am Fuß der Schleife, ob sie weitermacht.
So einfach gehts dann doch nicht, denn wenn die Datenbank nichts findet, kann man auch nichts lesen, und diese Schleife würde auf einen Fehler treffen - oder zumindest immer einen Datensatz versuchen auszugeben.
Lieber mit mysql_num_rows() feststellen, wieviele Datensätze gefunden wurden. Bei "0" (Null) verzweigen in "Konnte nichts finden", ansonsten mit while die Daten ausgeben.
- Sven Rautenberg
Hallo Sven,
Ganz einfach: Verwende statt der while-Anweisung die do-while-Anweisung
http://www.php.net/manual/de/control-structures.do.while.php
Die überprüft erst am Fuß der Schleife, ob sie weitermacht.
So einfach gehts dann doch nicht, denn wenn die Datenbank nichts findet, kann man auch nichts lesen, und diese Schleife würde auf einen Fehler treffen - oder zumindest immer einen Datensatz versuchen auszugeben.
Ist ja richtig, aber dieser Fall wurde ja bereits am Anfang abgefangen:
$result_test = mysql_fetch_array($search_send);
if ($submit) { if (!$result_test) { echo"<p>keine Film in der Datenbank gefunden</p>";
} else {
...
while ($result = mysql_fetch_array($search_send)){
Deswegen mein Vorschlag, der die geringsten Änderungen am Originalskript verlangt.
Lieber mit mysql_num_rows() feststellen, wieviele Datensätze gefunden wurden. Bei "0" (Null) verzweigen in "Konnte nichts finden", ansonsten mit while die Daten ausgeben.
Ist prinzipiell die bessere Idee ;-)
Gruss,
Vinzenz
Moin!
So einfach gehts dann doch nicht, denn wenn die Datenbank nichts findet, kann man auch nichts lesen, und diese Schleife würde auf einen Fehler treffen - oder zumindest immer einen Datensatz versuchen auszugeben.
Ist ja richtig, aber dieser Fall wurde ja bereits am Anfang abgefangen:
aus Originalposting ...
[...]
Ende Originalposting
Eben, und das Problem des Fragers war ja, dass dann immer der erste zu findende Eintrag nicht mit ausgegeben wird. Also ist die Fallabfrage "Nichts gefunden" falsch, nicht das Auslesen aus der Datenbank.
Deswegen mein Vorschlag, der die geringsten Änderungen am Originalskript verlangt.
Mehr ändern ist manchmal besser - wenns dadurch auch funktioniert. ;)
- Sven Rautenberg