Einfache PLZ-Suche mit MySQL geht nicht!

Pronics

Grünschnabel
Hallo Zusammen,

ich habe mich erstmals mit MySQL-Programmierung beschäftigt und versucht eine PLZ-Händler-Suche zu programmieren.

Ziel ist folgendes:
Über ein Formular wird eine PLZ des Ortes eingegeben, in dem nach einem Händler gesucht wird. Auf der Seite werden anschließend alle Händler mir entsprechender PLZ angezeigt.

Nun sollte eine SQL-Tabelle mit "mysql_fetch_array" nach der PLZ durchsucht werden und eben dann die Daten der passenden Händler ausgeben. Sollte eigentlich ganz einfach sein. Das hat auch mit apache (offline) funktioniert, aber als ich es online stellte kam folgende Meldung:

Warning: Supplied argument is not a valid MySQL result resource in /mnt/web6/41/89/5551089/htdocs/ballistol/module/search.php on line 36
Zeile 36 is folgende:
while ($row = mysql_fetch_array($result)) {

Das ist der Code:

----------

<html>

<form action="<?php echo $_SERVER[´PHP_SELF´]; ?>" method="post" />
<span> PLZ eingeben </span><input type="text" name="PLZ_form" maxlenght="5" />
<input type="submit" value="Suchen" />

</form>
</html>

<?php

//SQL Connect
$provider = "page.de";
$dbuser = "U******";
$dbpass = "**********";
$dbname = "D******";

$db_connect = mysql_connect("$provider", $dbuser, $dbpass)
or die("Connection Failure to Database");

mysql_select_db($dbname, $db_connect) or die ($dbname . " Database not found." . $dbuser);

//Formulerdaten in "$form" speichern
$form = $_POST['PLZ_form'];

//SQL abfrage

$result = mysql_query("SELECT * From stellen WHERE PLZ = '$form' ");

while ($row = mysql_fetch_array($result)) {

//Händler und Ort ausgeben

echo "$row[haendler]";
echo "in ";
echo "$row[ort]";

if ($row[PLZ] == "")
{
echo "none";
}
}

?>

Schonmal Danke an alle
 
Die vorhergehende Datenbankabfrage schlug wohl fehl. Lass dir mal die MySQL-Fehlermeldung (mysql_error()-Funktion) ausgeben.
 
Danke für deine Antwort!
Folgende Meldung wird ausgegeben:

Warning: Supplied argument is not a valid MySQL result resource in /mnt/web6/41/89/5551089/htdocs/ballistol/module/search.php on line 39
in none


line 39:
$row = mysql_fetch_array($result);
 
Schreib mal anstatt
PHP:
$result = mysql_query("SELECT * From stellen WHERE PLZ = '$form' ");
das hier:
PHP:
$sql = "SELECT * From stellen WHERE PLZ = '$form' ";
$result = mysql_query($sql);
 
Hey Danke!
Hat baer leider nicht geklappt ...

jetztkommt: Supplied argument is not a valid MySQL result resource in /mnt/web6/41/89/5551089/htdocs/ballistol/module/search.php on line 40

also die Zeile: $row = mysql_fetch_array($result);

So ein sh**
 
@ Pronics:

Du hattest folgendes geschrieben:
PHP:
...
//Formulerdaten in "$form" speichern
$form = $_POST['PLZ_form'];
...
echo "$row[haendler]";
echo "in ";
echo "$row[ort]";
...

Ich würde die Elemente wie folgt umschreiben:
PHP:
...
//Formulerdaten in "$form" speichern
$form = (int) $_POST['PLZ_form'];
if (strlen($form) < 5 || strlen($form) > 5)
   die "Passwort hat eine ungültige Länge. Bitte 5 Zahlen eingeben!";
...
echo $row['haendler']." in ".$row['ort'];
...
In der Zeile, wo die Formulardaten in "$form" gespeichert werden sollen, wird ein "(int)" vorgeschoben um die eingegebenen Daten mittels CAST-Operator als Integer-Wert zu definieren, so dass schon mal Eingaben mit Buchstaben, bzw. SQL-Injections das Leben schwer gemacht wird.
In der Zeile unmittelbar danach wird die Länge der eingegebenen Zahl geprüft. Ist sie größer oder kleiner als 5 erscheint die Fehlermeldung mit dem Hinweis auf die korrekte Länge der einzugebenden Zahl.

In der zweiten Codezeile ist die Ausgabe aus Übersichtlichkeitsgründen in einer statt drei Zeilen zusammengefasst.

Kommen wir nun zur Abfrage, welche ich wie folgt formulieren würde:
PHP:
...
$sql_query = "SELECT * FROM stellen WHERE PLZ = '$form'";
$result = mysql_query($sql_query);
while( $row = mysql_fetch_array($result,MYSQL_ASSOC) ) {
     echo $row['haendler']." in ".$row['ort'];
}
...


Beste Grüße,
preko
 
Die mysql_error()-Funktion liefert nur die letzte MySQL-Fehlermeldung. Ausgeben musst du sie noch selbst. Am besten machst du dies direkt nachdem die Datenbankabfrage fehlschlug, beispielsweise:
PHP:
if( ($result = mysql_query($query)) === false ) {
	echo mysql_error();
}
 
@preco

Merci für die ausführlich Hilfe!
Bei Seitenaufruf ist die Fehlermeldung jetzt weg. :-)
gebe ich aber eine PLZ ein :-( dann kommt folgendes:

HTML:
Warning: Supplied argument is not a valid MySQL result resource in /mnt/web6/41/89/5551089/htdocs/ballistol/module/search.php on line 42

was auf diesen Zeileninhalt aufmerksam macht:
HTML:
while( $row = mysql_fetch_array($result,MYSQL_ASSOC) ) {

Aber das sollte doch funktionieren, oder? Ich hab da echt sowas von gar
keinen plan warum das rum' fu** :confused:
 
@Gumbo

dann wird auch

HTML:
Warning: Supplied argument is not a valid MySQL result resource in /mnt/web6/41/89/5551089/htdocs/ballistol/module/search.php on line 42

ausgegeben ...
 
@ Pronics:

könntest Du uns mal die MySQL Tabellenspaltenüberschriften zur Verfügung stellen von der/den Tabellen, die von der Abfrage betroffen sind (bitte dabei explizit Groß- und Kleinschreibung der Tabellenbeschriftung wiedergeben)?


Beste Grüße,
preko
 
Zurück