Problem bei der Ausgabe

Problem bei der Ausgabe

am 03.01.2006 12:44:50 von Tobias Rackebrandt

Hallo

ich habe folgendes PHP-Script geschrieben. Es ollte folgende Funktion
erfüllen. Zunächst wird über ein Abfrage formulr die Preisober- und
untergrenze von Büchern in meiner Datenbank abgefragt (siehe
abfr_pr.html). Das Eregbnsi soll dann an das PHP-Script erg_pr.php
übergeben werden. Leider bekomme ich bei der Auswertung einen Fehler.
Das Formular und die Auswertung bzw. den Fehler könnt Ihr Euch unter
http://www.tobirack.net/mylibdb/abfr_pr.html ansehen.


Was stimmt da nicht?

Danke und Gruß
Tobias




Das php-Script sieht wie folgt aus:

"http://www.w3.org/TR/html4/loose.dtd">










//Datenbankverbindung
$dbh = mysql_connect("xxxxxxxxxxx", "XXXXXX", "xxxxxxx");
$query = "xxxxxxx";
if(!mysql_query($query, $dbh)) die("Datenbank existiert nicht.
");

//SQL-Abrage
$sqlab = "select * from buch, preis, titel";
$sqlab .= "where preis >= " . $_POST["ug"];
$sqlab .= " and preis <= " . $_POST["og"];
$sqlab .= "order by preis";

$res = mysql_query($sqlab);
$num = mysql_num_rows($res);

if ($num==0) echo "Es wurden keine passenden Datensätze gefunden!";


//Tabellenbeginn
echo "

";

// Ueberschrift
echo "";
echo "";
echo "";
echo "";
echo "";


/*Datensätze aus Ergebnis ermitteln*/
/*in Array speichern und ausgeben*/
while ($dsatz = mysql_fetch_assoc($res))
{
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
}


echo "
TitelISBN-Nr.Preis (Euro)
" . $dsatz["titel"] . "" . $dsatz["isbn"] . "" . $dsatz["preis"] . "
" . $dsatz["link"] . "
";
?>


Re: Problem bei der Ausgabe

am 03.01.2006 13:29:39 von Fabian Schladitz

Tobias Rackebrandt schrieb:
> ich habe folgendes PHP-Script geschrieben. Es ollte folgende Funktion=20
> erfüllen. Zunächst wird über ein Abfrage formulr die Preisober- u=
nd=20
> untergrenze von Büchern in meiner Datenbank abgefragt (siehe=20
> abfr_pr.html). Das Eregbnsi soll dann an das PHP-Script erg_pr.php=20
> übergeben werden. Leider bekomme ich bei der Auswertung einen Fehler.=
=20
> Das Formular und die Auswertung bzw. den Fehler könnt Ihr Euch unter
> http://www.tobirack.net/mylibdb/abfr_pr.html ansehen.
>=20
>=20
> Was stimmt da nicht?
> > //Datenbankverbindung
> $dbh =3D mysql_connect("xxxxxxxxxxx", "XXXXXX", "xxxxxxx");
> $query =3D "xxxxxxx";
> if(!mysql_query($query, $dbh)) die("Datenbank existiert nicht.
> ");
>=20
> //SQL-Abrage
> $sqlab =3D "select * from buch, preis, titel";
> $sqlab .=3D "where preis >=3D " . $_POST["ug"];
> $sqlab .=3D " and preis <=3D " . $_POST["og"];
> $sqlab .=3D "order by preis";
>=20
> $res =3D mysql_query($sqlab);

^^^^ Warum hier keine Fehlerbehandlung wie weiter oben?

Schreib doch mal, was mysql_error() an dieser Stelle verkündet.
Ich tippe ja auf fehlende Leerzeichen. "titelwhere" wird wohl nicht=20
erkannt ;-)

Deine POST-Variablen solltest du auch noch testen und bereinigen, ehe du =

sie an Mysql schickst.

> $num =3D mysql_num_rows($res);
>=20
> if ($num==0) echo "Es wurden keine passenden Datensätze gefunden!=
";


--=20
HTH,
Fabian

Re: Problem bei der Ausgabe

am 03.01.2006 13:43:07 von Tobias Rackebrandt

Fabian Schladitz wrote:
>
> Schreib doch mal, was mysql_error() an dieser Stelle verkündet.
> Ich tippe ja auf fehlende Leerzeichen. "titelwhere" wird wohl nicht
> erkannt ;-)

Die Fehlermeldungen lauten wie folgt:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
resource in /mnt/ja1/08/384/00000002/htdocs/mylibdb/erg_pr.php on line 24

Es wurden keine passenden Datensätze gefunden!

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL
result resource in /mnt/ja1/08/384/00000002/htdocs/mylibdb/erg_pr.php on
line 42


Es handelt sich dabei um die Einträge
$num = mysql_num_rows($res); (Zeile 24)

und

while ($dsatz = mysql_fetch_assoc($res)) (Zeile 42).



Wie teste ich die Post-Variablen?

Gruß
Tobias

Re: Problem bei der Ausgabe

am 03.01.2006 14:04:08 von Fabian Schladitz

Tobias Rackebrandt schrieb:
> Fabian Schladitz wrote:
>=20
>>
>> Schreib doch mal, was mysql_error() an dieser Stelle verkündet.
>> Ich tippe ja auf fehlende Leerzeichen. "titelwhere" wird wohl nicht=20
>> erkannt ;-)
>=20
> Die Fehlermeldungen lauten wie folgt:
> Warning: mysql_num_rows(): supplied argument is not a valid MySQL resul=
t=20
> resource in /mnt/ja1/08/384/00000002/htdocs/mylibdb/erg_pr.php on line =
24
>=20
> Es wurden keine passenden Datensätze gefunden!
>=20
> Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL=20
> result resource in /mnt/ja1/08/384/00000002/htdocs/mylibdb/erg_pr.php o=
n=20
> line 42

Nein, es tut mir leid, aber das ist nicht die Fehlermeldung von MySQL,=20
welche du mit mysql_error() geliefert bekommst, sondern die=20
PHP-Fehlermeldung.

Bitte sorge für eine Fehlerbehandlung an der Stelle, welche ich markier=
t=20
habe.

> Wie teste ich die Post-Variablen?

Naja... du überprüfst, ob das drin ist, was du erwartest. Alle andere=
n=20
Daten wirfst du weg und verwendest sie keinesfalls direk im SQL.

--=20
HTH,
Fabian

Re: Problem bei der Ausgabe

am 03.01.2006 14:23:23 von Tobias Rackebrandt

Hallo

> Nein, es tut mir leid, aber das ist nicht die Fehlermeldung von MySQL,
> welche du mit mysql_error() geliefert bekommst, sondern die
> PHP-Fehlermeldung.

ich habe jetzt mit folgendem Befehl die Richtigkeit der SQL-Abfrage
überprüft. Ist das so ok?

echo mysql_error() . "(Fehlernr.: ".mysql_errno() .")";

Die Variablen habe ich auch getestet und festgestellt, das am PHP-Script
überhaupt nichts ankommt!


Gruß
Tobias

Re: Problem bei der Ausgabe

am 03.01.2006 14:26:09 von Tobias Rackebrandt

Tobias Rackebrandt wrote:

Nachtrag zu meinem Posting:

> Hallo
>
>> Nein, es tut mir leid, aber das ist nicht die Fehlermeldung von MySQL,
>> welche du mit mysql_error() geliefert bekommst, sondern die
>> PHP-Fehlermeldung.
>
>
> ich habe jetzt mit folgendem Befehl die Richtigkeit der SQL-Abfrage
> überprüft. Ist das so ok?
>
> echo mysql_error() . "(Fehlernr.: ".mysql_errno() .")";

Meldung war "0"! Ich hatte vorher in die SQL-Abfrage Leerzeichen an den
richtigen Stellen gesetzt.







> Die Variablen habe ich auch getestet und festgestellt, das am PHP-Script
> überhaupt nichts ankommt!
>
>
> Gruß
> Tobias

Re: Problem bei der Ausgabe

am 03.01.2006 14:30:30 von Tobias Rackebrandt

Tobias Rackebrandt wrote:
Nachtrag zu meinem letzten Posting:

> Hallo
>
>> Nein, es tut mir leid, aber das ist nicht die Fehlermeldung von MySQL,
>> welche du mit mysql_error() geliefert bekommst, sondern die
>> PHP-Fehlermeldung.
>
>
> ich habe jetzt mit folgendem Befehl die Richtigkeit der SQL-Abfrage
> überprüft. Ist das so ok?
>
> echo mysql_error() . "(Fehlernr.: ".mysql_errno() .")";
Wenn ich dies ausführe erscheint als Fehlernummer "0". Mein Script kann
an dieser Stelle aber nicht richtig sein, denn ich habe bewußt einmal
einen Spaltennamen geändert. Nach ausführen dieses Scriptes gibt er noch
immer 0 aus. Er müßte dann zumindest melden, dass er die Spalte nicht kennt.
Die Leerzeichen habe ich an den entsprechenden Stllen nun eingefügt.



>
> Die Variablen habe ich auch getestet und festgestellt, das am PHP-Script
> überhaupt nichts ankommt!
>
>
> Gruß
> Tobias

Re: Problem bei der Ausgabe

am 03.01.2006 15:40:31 von Fabian Schladitz

Tobias Rackebrandt schrieb:
> Tobias Rackebrandt wrote:
> Nachtrag zu meinem letzten Posting:
>=20
>> Hallo
>>
>>> Nein, es tut mir leid, aber das ist nicht die Fehlermeldung von=20
>>> MySQL, welche du mit mysql_error() geliefert bekommst, sondern die=20
>>> PHP-Fehlermeldung.
>>
>>
>>
>> ich habe jetzt mit folgendem Befehl die Richtigkeit der SQL-Abfrage=20
>> überprüft. Ist das so ok?
>>
>> echo mysql_error() . "(Fehlernr.: ".mysql_errno() .")";
>=20
> Wenn ich dies ausführe erscheint als Fehlernummer "0". Mein Script ka=
nn=20
> an dieser Stelle aber nicht richtig sein, denn ich habe bewußt einmal=
=20
> einen Spaltennamen geändert. Nach ausführen dieses Scriptes gibt er=
noch=20
> immer 0 aus. Er müßte dann zumindest melden, dass er die Spalte nic=
ht=20
> kennt.
> Die Leerzeichen habe ich an den entsprechenden Stllen nun eingefügt.

An welcher Stelle hast du den Code?

Das muss direkt nach dem mysql_query() passieren, sonst wird der Fehler=20
der nächsten Anweisung (in deinem Fall mysql_num_rows()) ausgegeben.

--=20
HTH,
Fabian

Re: Problem bei der Ausgabe

am 03.01.2006 15:51:44 von Tobias Rackebrandt

Fabian Schladitz wrote:
> An welcher Stelle hast du den Code?
>
> Das muss direkt nach dem mysql_query() passieren, sonst wird der Fehler
> der nächsten Anweisung (in deinem Fall mysql_num_rows()) ausgegeben.


Ja, da steht der Code. Das Ergebnis ist, dass die Abfrage gleich 0 sei.
Das bestätigt meine Vermutung, dass aus dem Formular überhaupt nichts an
das PHP-Script geliefert wird, d.h. das die Variablen mit $_POST["og"]
und ["ug"] leer sein müssen.
Ich habe dies einmal mit den folgenden beiden Dateien getestet, d.h. die
Übergabe miz $_POST funktioniert dort, aber im eigentlichen Script nicht.

"http://www.w3.org/TR/html4/loose.dtd">








Bitte tragen Sie Ihren Vornamen und Ihren nachnamen ein.

Senden Sie anschließend das Formular ab.



Vorname


Nachname











"http://www.w3.org/TR/html4/loose.dtd">









echo "Guten Tag, " . $_POST["vor"] . " " . $_POST["nach"];

?>