MYSQL Datenbank über Php durchsuchen

TheLuBu

Grünschnabel
Hallo ihr lieben,
ich bin relativ neu beim PHP Programmieren als auch bei MySQL und bräuchte eure Hilfe.
Ich habe eine MySQL Datenbank und möchte jetzt gerne diese Datenbank über ein Webinterface durchsuchen.
Dabei soll nur eine Spalte durchsucht werden nach der PLZ.

Hier mein bisheriger Code, den ich mir hier und auf anderen Seiten zusammen gebastelt habe.
Als erstes der Code der Suchseite:
Code:
<html>
<body>
<title>Suchformular</title>
<form method="Post" action="ergebnis.php">
<p>
<select name="art" size="0">

</select>

<input name="PLZ" type="text" size="8" maxlength="5">
<input type="submit" value="Suchen">
</form>

</body>
</html>

Und hier dann die Suchseite:
Code:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Ergebnis</title>
</head>
<body>
<?php

mysql_connect("Server","Benutzer","Passwort")or die ("keine verbindung möglich");
mysql_select_db("Datenbankname")or die ("datenbank nicht vorhanden");
$res = mysql_query("SELECT * FROM Tabelle1 WHERE PLZ LIKE '%$suchbegriff%'");

// ausgabe der ergebnisse
while ($row = mysql_fetch_array($res)){
     $Test1 = $row['Test1'];
     $Test2= $row['Test2'];
     $Test3= $row['Test3'];
     $Test4= $row['Test4'];
     $Test5= $row['Test5'];
         
     echo ("$Test1<br>$Test2<br>$Test3<br>$Test4<br>$Test5<br><br>");
 }
 ?>
</body>
</html>

Bei der Ergbnisseite sollen halt mehrere Spalten der Tabelle untereinander angezeigt werden.

Leider bekomme ich den Übergang nicht hin, den Suchbegriff in die PHP Seite zu übertragen und die Datenbank zu durchsuchen.
Sitze jetzt seit mehreren Tagen an dem Problem und finde auch durch intensives Suchen über Google und hier in den Tutorials nicht das was ich brauche.

Ich hoffe ihr könnt mir helfen.
TheLuBu
 
Da fehlt irgendwo das folgende

PHP:
if($submit){
    $suchbegriff = $_POST['PLZ'];

//dein Abfragecode

}
 
Hi ersetze mal
PHP:
%$suchbegriff%
durch:
PHP:
".$_POST['PLZ']."
jedenfalls da sollte sich der Wert drinnen befinden wo der user in dem Eingabefeld eingegeben hatt

ED. oops da wahr jemand schneller ^^
 
Hi ersetze mal
PHP:
%$suchbegriff%
durch:
PHP:
".$_POST['PLZ']."
jedenfalls da sollte sich der Wert drinnen befinden wo der user in dem Eingabefeld eingegeben hatt

ED. oops da wahr jemand schneller ^^
Schlecht. Du solltes nicht direkt aus $_POST in das SQL schreiben. Zuerst in eine Variable und diese prüfen ob es ein erwartetes Resultat ist.
 
Natuerlich sollte man vorher pruefen. Am besten ob $_POST['plz'] (oder in welche variable man sich das dann auch immer kopiert) ueberhaupt Zahlen und keine Buchstaben enthaelt.
Dazu muesste man aber tiefer ins Detail gehen.
Ich wollte es einem PHP-Neuling nur moeglichst einfach machen mit seinem vorhandenen Code zu seinem Ergebniss zu gelangen.
 
Warum tiefer ins Detail?

Postleitzahlen haben keine einleitende Null und sind ganzzahlig, also mehr als nur simpel...

PHP:
$PLZ = $_POST['PLZ'];
$PLZ = (int)$PLZ;

Das (int) kann man natürlich auch direkt in der ersten Zeile benutzen, habs aber einfach mal aufgesplittet um es aufzuzeigen.
Größer kann die Sicherung nicht sein, weil nur mit Zahlen keine Dumheiten gemacht werden können.
Ob das ganze dann eine gültige PLZ ist, steht auf einem anderen Blatt..
 
Ich habe es jetzt ein bisschen umgestellt und auch eure Hilfe angenommen, aber leider funktioniert es immernoch nicht.
Hier die Neue Suchseite
Code:
<html>
<body>
<title>Suchformular</title>
<form method='POST' action='Ergebnis.php'>
Postleitzahl: <input type='text' name='PLZ'><br>
<input type='submit' value='Händler suchen'></form>

</body>
</html>

Und hier die PHP Seite

PHP:
<?php
    $suchbegriff = $_POST['PLZ'];

mysql_connect("Server","Benutzer","Passwort")or die ("keine verbindung möglich");
mysql_select_db("Datenbankname")or die ("datenbank nicht vorhanden");
$res = mysql_query("SELECT * FROM Tabellenname WHERE PLZ LIKE ".$_POST['PLZ'].");

while ($row = mysql_fetch_array($res)){
     $Test1= $row['Test1'];
     $Test2= $row['Test2'];
     $Test3= $row['Test3'];
     $Test4= $row['Test4'];
     $Test5= $row['Test5'];

     echo "$Test1<br>$Test2<br>$Test3<br>$Test4<br>$Test5<br><br>";
}
?>

Leider erhalte ich jetzt immer folgende Meldung, wenn ich die Suche benutze:

Code:
$Test2
$Test3
$Test4
$Test5

"); } ?>

Ich habe sowohl nach einer Postleitzahl, welche vorhanden ist als auch nach einer, welche in der Datenbank nicht existiert gesucht, beidemale erscheint nur dieser Fehler. Woran liegt das?

TheLuBu
 
Danke habs geändert, aber der Fehler ist immernoch "fast" unverändert

Code:
$Test2
$Test3
$Test4
$Test5

"; } ?>

TheLuBu
 

Neue Beiträge

Zurück