[HTML / Javascript] JS funktioniert nicht richtig - falsch eingebunden ?



ich nehm auch Notepad++ und für Java momentan noch Eclipse. Aber ich versuch mich grad auf Netbeans umzugewöhnen.


@Topic: hab heute nichts mehr gemacht großartig, atm absolut grad keine Lust :)
 
Du hast mich grade darauf gebracht mal mit dem Zend Framework zu arbeiten, hab das noch nie gemacht aber irgendwie reizt es mich doch sehr^^
Und ich hänge grade schon an der Konfiguration des Apache, das mod_rewrite funzt nich so wie ich das will.
 
so und weiter gehts mit den Problemen.

Also, es läuft jetzt alles bis auf die bescheuerte Suchfunktion. Ich bekomme die einfach nicht hin.

Aufgabe:
Suchfunktion mit mehreren Feldern die bei Eingabe einer der möglichen Variablen den gesamten dazugehörigen Datensatz ausgibt.

Also hab ich faulerweise erst mal mein Formular als Suchmaske missbraucht (also einfach die selbe Seite unter nem anderen Namen quasi) damit ich die verschiedenen Eingaben abfangen kann.

Die übergebe ich dann an folgendes (Rohbau :D) :

Code:
<?php
	$nachname=$_POST['nachname'];
	$vorname=$_POST['vorname'];
	$anschrift=$_POST['anschrift'];
	$plz=$_POST['plz'];
	$ort=$_POST['ort'];
	$geburtsdatum=$_POST['geburtsdatum'];
	$geburtsort=$_POST['geburtsort'];
	$national=$_POST['national'];
	$groesse=$_POST['groesse'];
	$augenfarbe=$_POST['augenfarbe'];
	$geschlecht=$_POST['geschlecht'];
	
	
	
	$variable = file("perso_datensatz2.txt");  
	$suche = array();
	foreach ($variable as $zeile) 
		{ 
		$term = explode("|", $zeile);
		array_push ($suche, $term[0],$term[1],$term[2], $term[3], $term[4], $term[5], $term[6], $term[7], $term[8], $term[9]); 
		if ( $term[0]==$nachname || $term[1]==$vorname || $term[2]==$$anschrift || $term[3]==$plz || $term[4]==$ort || $term[5]==$geburtsdatum || $term[6]==$geburtsort || $term[7]==$groesse || $term[8]==$Augenfarbe || $term[9]==$geschlecht)
			{         
			$nachname = $term[0];			
			$vorname = $term[1];
			$anschrift = $term[2];
			$plz = $term[3];
			$ort = $term[4];
			$geburtsdatum = $term[5];
			$geburtsort = $term[6];
			$groesse = $term[7];
			$augenfarbe = $term[8];
			$geschlecht = $term[9];
			
			
			echo $vorname;
			echo $nachname;
			echo $anschrift;
			echo $plz;
			echo $ort;
			echo $geburtsdatum;
			echo $geburtsort;
			echo $groesse;
			echo $augenfarbe;
			echo $geschlecht;
			// national fehlt noch
			exit;
			}
		}
	
?>

Der Code ist von nem Kommilitonen (bzw. er hat mich drauf gebracht).

Die "Datenbank" perso_datensatz2.txt sieht so aus:

Max|Mustermann|Musterhausen|bla
Maria|Musterfrau|Musterheim|blub

Von der Idee her scheint es mir selbst richtig zu sein, aber es tut gar nix :D
 
$$anschrift
$Augenfarbe - oben heisst es $augenfarbe

Bei der Fehlersuche ist var_dump($variable) immer ganz hilfreich um zu sehen, ob in den Variablen wirklich das drinsteckt was man erwartet.

Abgesehen davon verstehe ich nicht warum du in der If-Abfrage die Suchwerte überschreibst, bevor du die komplette Datei durchsucht hast. Im schlimmsten Fall erwischt du eine leere Zeile, ein Eingabefeld ist auch leer => Übereinstimmung => alle Werte werden auf leer gesetzt.
 
Was spuckt er denn aus?
So nach dem ersten drauf Schauen müsste es eigentlich laufen, auch wenn Moof da in einem Punkt schon was gesehen hatte was du zu viel machst.
 
sry, dass ich jetzt erst wieder da bin, ich hab gerade die ganze Zeit mit dieser Schleife rumgespielt und mir mal alles mögliche ausgeben lassen um richtig zu begreifen was denn da jetzt genau passiert. Lesen kann man ja viel, aber sehen ist besser :D

Wirklich sehr viel schlauer bin ich nicht, aber ich taste mich ran.

@baracuda: nüscht. Er zeigt einfach nur ne leere Seite

ich hab jetzt mal folgendes ausprobiert:

txt
Code:
|Max|Mustermann|Musterstraße 4|12345|Musterhausen|06/08/2011|Musterheim|180|grün|männlich| 
|Maria|Musterfrau|Musterstraße 4|12345|Musterheim|06/08/2011|Musterhafen|170|blau|weiblich|

php
Code:
<?php 
$variable = file("perso_datensatz2.txt");   
$suche = array(); 
foreach ($variable as $zeile)  
{ 
$term = explode("|", $zeile); 
array_push ($suche, $term[0],$term[1],$term[2],$term[3],$term[4],$term[5],$term[6],$term[7],$term[8],$term[9]);  
echo $term[0]; 
echo "</br>";
echo $term[1];
echo "</br>";
echo $term[2];
echo "</br>";
echo $term[3];
echo "</br>";
echo $term[4];
echo "</br>";
echo $term[5];
echo "</br>";
echo $term[6];
echo "</br>";
echo $term[7];
echo "</br>";
echo $term[8];
echo "</br>";
echo $term[9];

} 
?>

Dann zeigt er mir zumindest an was da steht und ich verstehe das auch :D

jetzt kann ich meine if abfrage machen (und den unteren kram weglassen ?) und mal schauen. Oder ? :D
 
Warum pushst du eigentlich das Array $term in ein Array $suche?
Du machst mit dem Array $suche doch gar nichts und belstest nur unnötig Speicherplatz damit.
Evtl steht im ersten $term[0] auch immer ne leere Zeichenkette, da das erste explode Zeichen vor der ersten Zeichenkette in der Zeile auftritt.
Vor und nach den Zeilen brauchst du imo auch keine Trennzeichen, da der Aufruf der foreach Schleife dir deine Zeilen schon trennt.
Code:
Max|Mustermann|Musterstraße 4|12345|Musterhausen|06/08/2011|Musterheim|180|grün|männlich
Maria|Musterfrau|Musterstraße 4|12345|Musterheim|06/08/2011|Musterhafen|170|blau|weiblich
 
hm, weil ich es nur so gelesen hab auf php-net und co.

Im Array $suche sollen ja die möglichen Suchbegriffe stehen (edit: ach käse, des mach ich ja über des If Oo)

das mit den Trennzeichen hab ich einfach durch ausprobieren gemacht *g*
irgendwie hat er mir immer den ersten Ausdruck der zweiten Zeile "Maria" direkt hinter "männlich" dran geklatscht
 
ich glaube ichs chau das gleich selbst mal nach, mal sehen was da überhaupt passiert

Ok, der Fehler in deiner ersten IF-Abfrage lag in der Reihenfolge der Daten.
Du hast im Feld term[0] den Nachnamen abgefragt, obwohl dort der Vorname drin stand lauf TXT-Datei.
Deswegen hast du auch nie eine Ausgabe bekommen, weil der Vorname halt nie dem Nachnamen entsprach.

Nun ist deine Suche auch nicht darauf ausgelegt, mehrere Ergebnisse zu finden, sondern sie hört beim erstbesten Ergebnis auf, weil du die for-Schleife verlässt.

Hier könnte das Array $suche ins Spiel kommen, indem du die gefundenen Daten in dieses Array packst und dann das $suche Array ganz zum Schluss ausgibst, ich denke mal das war auch die Intenton hinter dem Array.
Musst das Array nur in die Abfrage mit rein packen.
 
Last edited:
Wie Mooff schon schrieb nutze ich ebenso Notepad++, vim oder gedit.

Wie sieht dein ganzer Quellcode (mit dem Anteil vom letzten mal), denn derzeit aus?
Pauschal solltest du zunächst http://php.net/manual/de/function.fgetcsv.php nutzen um Daten aus CSV-Dateien auszulesen.

Auf http://de.php.net/manual/de/function.exit.php solltest du wenn möglich verzichten. Auf der einen Seite verringert es die Wartbarkeit deines Quelltextes, wenn du plötzlich die Ausführung beendest. Später kann es dann verwirren, warum der Quellcode einige Zeilen später nicht ausgeführt wird. Etwas weiter und tiefer in der Materie betrachtet ist diese Art die Ausführung zu beenden recht unsauber, weshalb es zu Problemen mit FCGI kommen kann.

Falls du eine Schleife beenden willst, verwende http://de.php.net/manual/de/control-structures.break.php, dies ist für diesen Vorgang auch gedacht.
 
Back
Top Bottom