• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Erweiterte MYSQL Suche

crofthunter

New member
Hallo Leute,
kann mir einer evtl erklären wie ich am besten in einer MYSQL DB eine PLZ abpeichere im moment hab ich das Datenfeld als INT 5
abgespeichert, bin aber am grübeln ob ich nicht lieber VARCHAR 5
nehmen sollte
ich hab mit der Suchquery Probleme.
ich möchte eine Suchquery erstellen in der man nach der PLZ
nach folgenden Schema suchen kann

hat man eine PLZ zb. 80359

soll der suchen können nach:
80
803
8035
80359

und einer zugewiesenen region, hier z.b SB (Südbayern)

Es sollen aber keine Fragmente mittendrin ausgelesen werden:
(Würde man z.B. 03 eingeben würde nach wildcard methode %$PLZ auch 80359 angezeigt werden)

Das bereitet mir etwas Kopfzerbrechen. Vielleicht weiß ja jemand nen guten Ansatz dafür.
:)
 
löse es am besten über php.

hab sowas ähnliches auch mal gebraucht.
versuch's mal damit (mußt es halt für deine Bedürfnisse anpassen):

<?
$database= "XXX";
$sqlhost= "localhost";
$sqluser= "XXXX";
$sqlpass= "AAA";

$verbindung = mysql_connect ( $sqlhost, $sqluser, $sqlpass);
if (!$verbindung) {
echo "Keine Verbindung möglich!\n";
exit;
}
mysql_select_db(XXXX);

$searchstring = "1888609136";

$no = mysql_query("SELECT NUMBER, ID FROM tabellenname WHERE NUMBER LIKE '%$searchcard%'");
$anznr = mysql_num_rows($card);

if($anznr == 0) { echo "Keine Übereinstimmung gefunden."; }

if($anznr >= 1) {
while ($id2 = mysql_fetch_array($no)) {
$id = $id2["ID"];
echo "Übereinstimmung gefunden! Datensatznummer: $id <br>";
} //while
} //end if
mysql_close($verbindung);
?>


mit LIKE '%$searchcard%' sucht er auch nach übereinstimmungen zwischen dem anfang und dem ende stringkette.
 
thnx für den codeschnipsel:
aber das hilft mit im moment nicht weiter
ich will ja gerade keine fragmente mittendrin in der suche haben

soll PLZ 80359 ausgeworfen werden

soll
der nur erkennen
80
803
8035
80359

bei deiner methode würde der dann auch dir PLZ rausschmeißen, wenn man:
0,3, 5,9,03,035,0359 usw
eingeben würde
 
ähmm wieso nimmst Du nicht einfach $PLZkurz% ??
und rechnest vorher $PLZkurz aus Deiner $PLZ aus.... d.h. für 80359 wäre $PLZkurz=80.... und schon geht das!
 
Hallo!

Hab die Lösung sehen uns heute noch.

Mein ICQ is im Arsch :(

@Albu: Das was du vorschlägst würde nur mit nem char-Feld funken jedoch ist der Wert ein int(Sortierbarkeit)
 
Zuletzt bearbeitet:
das ist schon richtig, aber er hat ja selbst vorgeschlagen ein varchar Feld zu nehmen....

allerdings würde es auch funktionieren, wenn man eine Typkonvertierung durch SQL vornehmen läßt.... allerdings weiß ich nicht in wie weit mySQL sich da an den SQL92 Standard hält und was es für Möglichkeiten bietet :):)
 
Hallo Leute!

Will euch die Lösung nicht vorenthalten:

@albu hatte recht mit der Typkonvertierung:

Das ganze funkt mit concat().

PHP:
//Suchstring $plz
// CONCAT(plz) --> Konvertierung von INT nach CHAR

$sql = "SELECT 
        * 
        FROM tabelle
        WHERE
        CONCAT(plz) LIKE '$plz%'";
 
Denk doch auch mal bitte an die neuen Bundesländer mit 0 am Anfang, das geht nicht mit INT, sondern nur mit TEXT usw.

Desweiteren dachte ich das mySQL ??? und *** unterstützt, fülle doch einfach die eingegebene PLZ mit ???? auf...

Gruß
Melzi
 
Zurück
Oben