Fahrgestellnummer Suchfunktion

  • Themenstarter Themenstarter starfoxfs
  • Beginndatum Beginndatum
S

starfoxfs

Hi zusammen,

Ich bin gerade dabei eine Fahrgestellnummer Suchfunktion zu programmieren. Problem das ich hierbei habe ist das ich ein Feld hab "Fahrgestellnummern Anfang" und noch 2 weitere Felder in der Mysql DB mit einer Zahlenfolge von bis

Beispiel:

Feld1

xyh568a5k (nicht immer gleichlang)

Feld2

200001 (nicht immer gleichlang)

Feld 3

999999 (nicht immer gleichlang)


Die Fahrgestellnummer kann also sein von xyh568a5k200001 bis xyh568a5k999999

Zusätzlich ist die Anfangsfahrgestellnummer in Feld 1 nicht immer gleichlang kann z.b. auch nur x52 sein oder xh2mn24b*ba

Ich hab schonmal angefangen komme aber nicht wirklich weiter da die Suchfunktion exakt Arbeiten muss.

Hiermit kann ich die Anfangsfahrgestellnummer (Feld 1) schomal ausfiltern:

PHP:
$postfgnr = $_POST["fgnr"];
$fgnr = explode(' ',$postfgnr);

#Suchen nach Fahrgestellnr Anfang
		$query = 'SELECT * FROM 1Fahrgestellnr WHERE '; //anfang der abfrage 
			for($i=0; $i<count($fgnr); $i++){ 
				$query .= "(NFRMPF LIKE '%".$fgnr[$i]."%' )"; 
				
			}
			
		
			
$fgnrsuche = mysql_fetch_array(mysql_query("$query"));

Wie ich das richtig realisieren soll weiß ich leider noch nicht und bitte Euch um Hilfe
 
Gibt es irgend eine feste systaktische Struktur, die diese Fahrgestellnummern haben?
Probier mal Folgendes:
PHP:
$query = 'SELECT * FROM `1Fahrgestellnr` WHERE 0 ';
for($i=0; $i<count($fgnr); $i++) {
	$query .= ' OR LEFT(`Feld1`, '.strlen($fgnr[$i]).') = "'.mysql_real_escape_string($fgnr[$i]).'")';
}
 
Ich meine eine syntaktische Struktur, die sich mit einem regulären Ausdruck oder so beschreiben lässt. Beispielsweise eine beliebig lange aber fixe Folge von Buchstaben und Ziffern, die mit mindestens einem Buchstaben beginnt und endet, der dann wieder eine beliebig lange aber fixe Folge von Ziffern folgt. Also beispielsweise:
Code:
^[a-z](?:[a-z0-9]*[a-z])?[0-9]+$
Denn dadurch könnten die Fahrgestellnummern in ihre beiden Teile zerlegt und dadurch die Suche optimiert werden.
 
Jo es gibt eine die letzten 7 Zeichen sind nur Zahlen keine Buchstaben mehr und das immer
 
Dann probier mal Folgendes:
PHP:
$query = 'SELECT * FROM `1Fahrgestellnr` WHERE 0 ';
for($i=0; $i<count($fgnr); $i++) {
	if( preg_match('/^([a-z0-9]+)([0-9]{7})$/', $fgnr[$i], $match) ) {
		$query .= ' OR (`Feld1` = "'.$match[1].'" AND "'.$match[2].'" BETWEEN `Feld2` AND `Feld3`) ';
	}
}
 
Hmm funktioniert teilweise aber noch nicht 100%

Hab ich eine Fgnr xj23000001 funktioniert es
Hab ich aber z.b. xjhfm26b0xe600002 geht es nicht

Mysql Übersicht:

Feld1---------------Feld2----------------Feld3
xh22----------------2000001=>-----<=2000345
xj23-----------------1890000=>-----<=9999999
xjhfm26b0xe-----1000000=>-----<=5000003

zwischen Feld2 und Feld3 gilt immer Feld2 => <= Feld3 Feld1 ist fix
 
Zuletzt bearbeitet von einem Moderator:
Da hab ich mich im Thread hier vertippt sind nur Beispiel Fahrgestellnummern sind immer 7 Zahlen am Ende
 
Tja dann weiß ich auch nicht weiter. Lass dir doch mal die zusammengesetzte Abfrage ausgeben und prüf sie manuell.
 
Zurück