Probleme mit Such-Funktion

BigR16

Mitglied
Hi @all,
Ich versuche grad ne Fkt. zu schreiben bei der ich einen Begriff eingebe und dann in der gesamten db überprüft ob der begriff vorhanden ist. ausgabe soll dann die person_id sein.
hier dazu ein teil meines quelltextes:
PHP:
if(is_numeric($search_att))
			{
			 $sql_search='SELECT av_personal_nr,person_nachname,person_vorname,person_id
						  FROM person_2, arbeitsvertrag,krankenkasse,gemeinde,
						       bank,wohnort,finanzamt
						  WHERE
						 	   person_id=av_person_id AND
						 	   person_ktonr=bank_ktonr AND
						 	   person_krankenkasse_betriebsnr=krankenkassebetriebsnummer AND
						 	   finanzamt_nr=person_finanzamtnr AND
							   (
							    av_personal_nr like "%'.$search_att.'%" OR
							    person_ktonr LIKE "%'.$search_att.'%" OR
							    av_probezeit LIKE "%'.$search_att.'%" OR
						        av_arbeitszeit_woche LIKE "%'.$search_att.'%" OR
						        av_gehalt_monat LIKE "%'.$search_att.'%" OR
						        av_kinder LIKE "%'.$search_att.'%" OR
							    av_urlaub_tage LIKE "%'.$search_att.'%" OR
							    gemeinde_ags LIKE "%'.$search_att.'%" OR
						        krankenkassebetriebsnummer LIKE "%'.$search_att.'%" OR
							    person_finanzamtnr LIKE "%'.$search_att.'%"
							   );';
			}
			else
			{
				$sql_search='SELECT av_personal_nr,person_nachname,person_vorname,person_id
						 FROM person_2, arbeitsvertrag,krankenkasse,
						 gemeinde,schule,ausbildung,ausbildung_has_person_2,bank,wohnort,finanzamt
						 WHERE
						 	 person_id=av_person_id AND
						 	 person_id=ahp_person_id AND
						 	 person_id_schule=schul_id AND
						 	 ahp_ausbild_id=ausbild_id AND
						 	 person_plz=wohnort.plz AND
						 	 wohnort.plz=gemeinde_plz AND
						 	 person_ktonr=bank_ktonr AND
						 	 person_krankenkasse_betriebsnr=krankenkassebetriebsnummer AND
						 	 finanzamt_nr=person_finanzamtnr AND
							 (
							  person_nachname like "%'.$search_att.'%" 
    			               OR person_vorname like "%'.$search_att.'%" 
							   OR person_nachname LIKE "%'.$search_att.'%"
							   OR person_vorname LIKE "%'.$search_att.'%"
							   OR person_strasse LIKE "%'.$search_att.'%"
							   OR person_telefon LIKE "%'.$search_att.'%"
							   OR person_mobil LIKE "%'.$search_att.'%" 
							   OR person_kfz_kennzeichen LIKE "%'.$search_att.'%"
							   OR person_nationalitaet LIKE "%'.$search_att.'%"
							   OR person_geburtstag LIKE "%'.$search_att.'%"
							   OR person_sozialversicherungsnummer LIKE "%'.$search_att.'%"
							   OR av_arbeitsbeginn LIKE "%'.$search_att.'%" 
							   OR av_beruf LIKE "%'.$search_att.'%" 
							   OR av_lohnsteuerklasse LIKE "%'.$search_att.'%" 
							   OR av_konfession LIKE "%'.$search_att.'%" 
							   OR av_taetigkeitsschluessel LIKE "%'.$search_att.'%"
							   OR ausbild_bezeichnung LIKE "%'.$search_att.'%"
							   OR wohnort.ort LIKE "%'.$search_att.'%"
							   OR gemeinde_name LIKE "%'.$search_att.'%" 
							   OR finanzamt_bezeichnung LIKE "%'.$search_att.'%"
							   OR schul_abschluss LIKE "%'.$search_att.'%"
							 ) ;';
ich bekomm dann keine konkreten daten raus!
ich hoffe ihr könnt mir weiterhelfen...
 
[phpf]mysql_query[/phpf]

Hinweis hat gesagt.:
Die Anfrage sollte nicht mit einem Semikolon enden.

Weiterhin sagst du, keine konkreten Daten... Bedeutet, dass das Ergebnis leer ist oder die falschen Daten drin sind?
 
entweder wird ein datensatz mit falschen daten wiederholt oder es kommt zu überhaupt keiner ausgabe

seit wann wird nen befehl nicht mit ; beendet?
 
Das Semikolon am Ende einer Abfrage ist nur notwendig, um mehrere Anweisungen von einander zu trennen. Da du jedoch nur eine einzige sendest, ist dieser nicht notwendig und das PHP-Handbuch rät auch davon ab, da die mysql_query()-Funktion (wohl aus Sicherheitsgründen) nur eine einzige auf einmal erlaubt.

Du solltest nun aber erst einmal prüfen, ob die Abfrage überhaupt gültig ist, das heißt keinen syntaktischen oder semantischen Fehler enthält. Wenn das ausgeschlossen ist, kann es nur noch ein logischer Fehler sein.
 
bis jetzt hatte ich damit noch keine probleme da ich immer nach meiner select anweisung den result array auswerte.
ich werd mir erstma ne routine basteln wo die select anweisung dynamisch erstellt wird und id raus holt anschließend werd ich mit der id die notwendigen daten raus holen und damit ne übersicht schreiben
 
Zurück