Suchfunktion
Jens
- datenbank
Hallo,
ich habe eine Datenbank mit Kundendaten (MySQL), es besteht die Möglichkeit nach Kundendaten zu suchen. Und zwar nach Namen, Vorname und Telefon. Wenn er einen Eintrag gefunden hat soll er den anzeigen.
Nun mein Problem. Er zeigt mir die Datensätze an die er findet. Aber er zeigt komplett alle an die in der Datenbank stehen.
Quellcode:
<?
mysql_connect($localhost,$user.$passwort);
mysql_select_db($datenbank);
$result=mysql_query("select * from kundendaten where vorname like '%$_POST[vorname]%' or name like '%$_POST[name]%' or telefon like '%$_POST[telefon]%'");
?>
<body>
<br><br>
<center>
<table border="0" cellspacing="2" cellpadding="2" width="85%">
<tr>
<?
while($rs=mysql_fetch_object($result))
{
echo'<tr><td>',$rs->vorname,'</td><td>',$rs->name,'</td>
<td>',$rs->telefon,'</td>
<td><form enctype="multipart/form-data" method="post" action="bestellung_eintragen_kundendaten_vorhanden_auswaehlen.php">
<input type="hidden" name="id" value="',$rs->id,'">
<input type="hidden" name="vorname" value="',$rs->vorname,'">
<input type="hidden" name="name" value="',$rs->name,'">
<input type="hidden" name="telefon" value="',$rs->telefon,'">
<input type="submit" name="submit" value="Auswählen" width="85"></form></td>
</tr>';
}
?>
</table>
Kann mir jemand sagen was da nicht hinhaut ??? Normalerweise sollte er doch nur den einen Datensatz anzeigen, wenn nur eine Übereinstimmumg vorhanden ist.
MfG
Jens
Hallo Jens,
mysql_connect($localhost,$user.$passwort);
hinter $user soll doch bestimmt ein Komma sein, oder?
$result=mysql_query("select * from kundendaten where vorname like '%$_POST[vorname]%' or name like '%$_POST[name]%' or telefon like '%$_POST[telefon]%'");
wie sieht denn der String der mysql_query() übergeben wird aus?
Außerdem gehören die Keys bei Arrays in Anführungszeichen.
<input type="hidden" name="id" value="',$rs->id,'">
naja, wenn du meinst das das Funktioniert... für was ist $rs->id?
Ob man das Komma als Trenner in Strings nehmen kann weiß ich nicht, aber meines Wissens ist dem nicht so.
Grüße aus Nürnberg
Tobias
Hi, hallo
das Problem liegt imho am SQL:
select * from kundendaten
where vorname like '%vorname%'
or name like '%name]%'
or telefon like '%telefon%'"
wenn jetzt eine der drei variablen '' denn ist die Abfrage z.b. so:
select * from kundendaten
where vorname like '%vorname%'
or name like '%%'
or telefon like '%telefon%'"
-> wie vorname oder wie gar nichts oder wie telefon
^^^^^^^^^^^^^^
evt. gibt es das "gar nichts" in jedem Datensatz/Spalte bei MySQL so dass also mind. eine der OR-Expressions pro Datensatz erfüllt ist -> ergo alles wird geliefert.
splitte die drei Möglichekeiten doch mal in 3 SQL abfragen...
Ergebnisse für Suche nach Vornamen ...
oder baue dein SQL anhand des gesendeten Inputfeldes auf. Wenn "vorname" gesendet, dann hat SELECT ... where vorname LIKE '%$_POST[vorname]%' ... oder bau das Suchfeld anders.
Tschau, tschüß,
Frank