MySQL in PHP ent oder weder

uwee

Erfahrenes Mitglied
Hallo...

ich habe eine Abfrage einer MySQL-Db fertiggestellt
Nun möchte ich die Möglichkeiten einer Suche erweitern.
Bisher ist es dem Anwender möcglich, Personen aus einem Adressbuch per Anfangsbuchstaben zu suchen.
das ganze geschieht auf nur einer einzigen Seite. Also die Auswahl des Buchstabens und die Anzeige der Ergebnisse auf einer Seite!
Nun möchte ich gerne, dass der Benutzer die Möglichkeit hat, einen kompletten Namen einzugeben.
Der Aufbau ist mir klar, aber irgendwie kommt nicht das dabei heraus, was herauskommen soll.
ENTWEDER soll nach Buchstaben gesucht werden ODER nach dem eingegebenen Namen.

Meine sql-Abfrage:
PHP:
$sql="SELECT id,name,vorname,abteilung,vorwahl,nummer,durchwahl,mail FROM telefon ".
 "WHERE name LIKE'" . ($buch) . "%' OR '%".($name)."%'" .
"ORDER BY name";

Wenn ich einen Namen aus der Tabelle eingebe, werden trotzdem ALLE Ds angezeigt.
Das soll ja nciht sein, wenn etwas im Input-feld steht! steht nichts drin, werden die Ergebnisse nach den Buchstaben gesucht (per LINK)

UweE
 
vielleicht sind noch weitere Ausschnitte interessant?:

PHP:
[-]
| <a href=telefon.php>ALLE</a> |
 <a href=telefon.php?buch=A>A</a> |
 <a href=telefon.php?buch=B>B</a> |
 <a href=telefon.php?buch=C>C</a> |
 <a href=telefon.php?buch=D>D</a> |
 <a href=telefon.php?buch=E>E</a> |

[-]

<form method=post action=telefon.php>
Suche nach Name: <input name=name size=20 maxlength=255> <input type=submit name=senden value=Suchen>
</form><br><hr>

[-]

$name=($_POST['name']);
$buch=($_GET['buch']);
$sql="";
$result="";
//if ($buch!=""){
$sql="SELECT id,name,vorname,abteilung,vorwahl,nummer,durchwahl,mail FROM telefon ".
 "WHERE name LIKE'" . ($buch) . "%' OR '%".($name)."%'" .
"ORDER BY name";

[-]

echo "<tr><td><b>",$row->name,"</b>, ",$row->vorname,"</td><td>",$row->abteilung,"</td><td>",$row->vorwahl,"/",$row->nummer,"-",$row->durchwahl,"</td><td><a href=mailto:",$row->mail,">",$row->mail,"</a></td></tr>";  

[-]
 
PHP:
 $sql="SELECT id,name,vorname,abteilung,vorwahl,nummer,durchwahl,mail FROM telefon ".
"WHERE name LIKE'" . ($buch) . "%' OR name LIKE '%".($name)."%'" .
"ORDER BY name";

So sollte es funktionieren. Mit OR sollte man Bedingungen verknüpfen, nicht Werte.
 
Funktioniert leider nicht.. immernoch das selbe...

es werden weiterhin alle benutzer in der liste angezeigt...
 
muss man vl. vorher festlegen, woher der Wert kommen soll?

Weil, wenn man das richtig ließt, bedeutet es ja, wenn kein bestimmter Buchstabe ausgewählt worden ist:

% oder INPUT-Feld

also immer alles!, oder sehe ich das falsch?
 
Zurück