PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : einfach suche


Mr.Burns
23.03.2004, 10:14:05
hallo,

ich bin immernoch auf der suche nach einer einfachen Möglichkeit in einer Tabelle mit folgenden Feldern:

AUSDR1(PLZ) ++ branche ++ ort ++ str

nach dem AUSDR1(Postleitzahl) zu suchen.

also der user gibt über ein formularfeld eine postleitzahl ein, schickt dies an ein script, das alle zeilen ausgibt, die mit den ersten 3 Stellen dieser Postleitzahl übereinstimmt.

Das Ergebniss dieser Shopsuche soll sein, das der User alle Läden in seiner Umgebung angezeigt bekommt.

sind ca. 3000 Einträge. hat jemand ne Idee? ich steh im moment voll auf'm schlauch.

danke

chris17
23.03.2004, 10:47:22
Hi,

LIKE % -> http://www.mysql.de/doc/de/MySQL_indexes.html#IDX859

$such = "765";
$sql = "SELECT * FROM tbl_tabelle WHERE PLZ LIKE '".$such."%'";

Hab' ich Dich richtig verstanden?

Grüsse

Christian

feuervogel
23.03.2004, 11:02:35
$such = "765";
$sql = "SELECT * FROM tbl_tabelle WHERE PLZ LIKE '$such%'";

auch wenn ich jetzt als klugscheißer abgestempelt werde;)

Mr.Burns
23.03.2004, 11:44:29
jap, genau so hab ichs im moment auch:

$plz = $HTTP_POST_VARS["plz"];
sql = "select * from shops where AUSDR1 like '%$plz%' order by branche asc limit 15 ";

Das Problem ist, das der user exakt seine postleitzahl eingeben muß,
und dann entweder "ein gibt es oder gibt es nicht" bekommt. wie bekomme ich es hin, dass er einen Umkreis abfragen kann. also z.B. nur 3 Stellen seiner Postleitzahl eingen muß?



so: "select * from shops where AUSDR1 like '%$plz%' ";

bekomme ich die ganze tabelle ausgelesen, ohne das er auf die übergeben plz achtet. ???

chris17
23.03.2004, 11:55:56
In $_POST['plz'] ($HTTP_POST_VARS["plz"]) steht also die 5-stellige PLZ drin?

Wenn Du nur die ersten drei Stellen willst -> $plz = substr($_POST['plz'], 0, 3);

Der SQL-String ist OK.

feuervogel
23.03.2004, 12:04:33
mach mal bitte

echo $plz;

und schau was bei rauskommt...

Mr.Burns
23.03.2004, 12:21:08
kommt nix???

formular sieht so aus:


<form action="php/shoploction.php" methode="post">
<input name="plz" type="text" ...>

shoploction.php ist siehe oben

feuervogel
23.03.2004, 15:13:06
wenn nix kommt, ist klar, dass nix passiert:)

also...

schreib mal an den anfang vom script:

$plz = $_POST[ 'plz' ];

und dann

echo $plz;

Mr.Burns
23.03.2004, 16:00:44
ne, kommt nix an.

Mr.Burns
25.03.2004, 15:46:33
2 tage!!!! hab jetzt rausgefunden, warum die variablen nicht übermittelt wurden.

Apache Environment: REQUEST_METHODE : GET

super, oder? also umgestellt von methode="post" auf methode="get"

und siehe da, es funzt!

xabbuh
25.03.2004, 16:45:50
Heißt es nicht eigentlich method="POST" oder method="GET" - also ohne e?

Mr.Burns
06.04.2004, 11:16:58
Hallo,

wie erreich ich denn, das wirklich nur die ersten 3 Zeichen der Spalte AUSDR1 (Postleitzahl) abgefragt und ausgegeben werden?

im moment ist mit dieser Kombination:

$plz = substr($HTTP_GET_VARS['postleitzahl'],0,3);

$sql = SELECT * from aphoteken WHERE AUSDR1 LIKE '%$plz%' order by ort asc limit 10 ";

nichts zu erreichen. D.h. wenn ich nur die ersten 3 stellen meiner PLZ
eingebe,bekomme ich alle Ergebnisse in der diese Zahlenkombination vorkommt. Z.B. gebe ich 546.. ein bekomme ich alle orte mit dieser Kombination. also z.b. 05462 usw.

wie kann ich die abfrage auf die ersten 3 Zeichen der Postleitzahl
begrenzen.

danke für Tipps.

Mr.Burns
06.04.2004, 11:46:01
hat sich erledigt.

danke