Nur bestimmte Zeilen aus Textdatei auslesen geht nicht

webdesign

Mitglied
Hallo zusammen
Ich bin schon seit einiger Zeit an diesem Problem und komme einfach nicht mehr weiter, vielleicht kann mir jemand von euch helfen.
Ich habe foldenden Quelltext:

PHP:
<?php	
	
$datei="../daten.txt";

	// die Einträge auslesen &anzeigen
$inhalt = file($datei,"r");
$anzahl = count($inhalt);
	for($i = 0; $i < $anzahl; $i++)
	{
	$eintrag = explode("|-|",$inhalt[$i]); //Inhalt zerteilen
	// Variablen definieren
	$tag = $eintrag[0];
	$datum = $eintrag[1];
	$zeit = $eintrag[2];
	$stueck = $eintrag[3];
	$link = $eintrag[4];
	$ort = $eintrag[5];
	$plaetze = $eintrag[6];
	$einteilung = $eintrag[7];

	
	if($einteilung="h"){
		$show="<option>$tag  $datum  $zeit  $stueck  $ort</option>\n";
	}
	if($einteilung="g"){
		$show="";
	}
	echo ("$show");
}
?>

Ich möchte nur die Einträge auslesen, die als $einteilung ein "g" haben.
Mit dieser Möglichkeit zeigt es mir alle Einträge an. Es muss doch möglich sein diese zu sortieren nach "g" und "h", oder nicht?

Vielen Dank für eure Hilfe, vielleicht ist es auch nur ein dummer Überlegungsfehler von mir, aber ich komme einfach nicht weiter.

Gruss Jonas
 
= ist ein Zuweisungsoperator, kein Vergleichsoperator

Code:
if($einteilung="g")
...ermittelt daher nicht, ob $einteilung den Wert "g" hat, sondern weist $einteilung den Wert "g" zu... wenn dies erfolgreich ist(ist es immer)... wird diese Bedingung weiterverfolgt.
 
Ja ich weiss, dass hatte ich bei copy paste noch vergessen zu ändern, , ist aber nicht der Fehler, mir werden immer noch alle Einträge angezeigt.

Ich habe jetzt if($eingabe=="g){} das sollte ja so gehen, oder nicht?

Gruss Jonas
 
Ich versteh zwar nicht, warum du beim copy&paste etwas ändern musst, wenn es richtig in deinem Skript stand... warum es nicht funktioniert, geht aus dem Geposteten auch nicht hervor...
nur dass da alles angezeigt wird, glaube ich nicht.

Das, was du hier gepostet hast, scheint nicht das zu sein, was du bei dir probierst.

Wie sieht denn so eine Zeile in "daten.txt" komplett aus?
 
Ich hatte es zuerst falsch geschrieben, dann aber gemerkt, dass die Vergleichsoperatoren falsch sind. Ich habe das Script zweimal und als es nach langem Versuchen und trotz den richtigen Vergleichsoperatoren immer noch nicht funktioniert hatte, wollte ich wieder zum Anfang zurück und kopierte den alten Inhalt vom zweiten Script. Da ich dort die Vergleichsoperatoren noch nicht geändert hatte ich sie also auch falsch kopiert. Somit hatte ich meinen Anfangsfehler noch einmal, das meinte ich mit copy&paste, sorry es ist spät und ich bin noch ein bisschen krank, muss mir jetzt wieder ein bisschen mehr Mühe geben, mich richtig auszudrücken.

Also zum Problem zurück:

Die Textdatei bei mir sieht folgendermassen aus:

Fr|-|28.01.05|-|20.00|-|Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|Theater Basel, Schauspielhaus (Premiere)|-||-|g
Mo|-|31.01.05|-|20.00|-| Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|Theater Basel, Schauspielhaus*|-||-|g
Do|-|03.02.05|-|20.00|-|Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|Theater Basel, Schauspielhaus*|-||-|g
Mo|-|07.02.05|-|20.00|-| Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|Theater Basel, Schauspielhaus*|-||-|g
Fr|-|11.02.05|-|20.00|-|Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|Theater Basel, Schauspielhaus*|-||-|g
Sa|-|19.02.05|-|20.00|-| Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|junges theater basel auf dem Kasernenareal (Premiere)|-||-|h
Mo|-|21.02.05|-|20.00|-|Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|junges theater basel auf dem Kasernenareal|-||-|h
Do|-|24.02.05|-|20.00|-| Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|junges theater basel auf dem Kasernenareal|-||-|h
Fr|-|25.02.05|-|20.00|-|Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|Theater Basel, Schauspielhaus*|-||-|g
Mo|-|28.02.05|-|20.00|-| Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|Theater Basel, Schauspielhaus*|-||-|g
Di|-|01.03.05|-|20.00|-|Fucking &Aring;m&aring;l|-|http://www.jungestheaterbasel.ch/_archiv/2005/fucking_amal/|-|junges theater basel auf dem Kasernenareal|-||-|h
Mi|-|02.03.05|-|20.00|-|Sweet Hamlet|-|http://www.jungestheaterbasel.ch/_archiv/1999/sweet_hamlet/|-|in der Villa auf der Wettsteinallee 40, Kleinbasel|-||-|h

Hier noch einmal den Script dazu:

PHP:
<?php	
	
$datei="../daten.txt";

	// die Einträge auslesen &anzeigen
$inhalt = file($datei,"r");
$anzahl = count($inhalt);
	for($i = 0; $i < $anzahl; $i++)
	{
	$eintrag = explode("|-|",$inhalt[$i]); //Inhalt zerteilen
	// Variablen definieren
	$tag = $eintrag[0];
	$datum = $eintrag[1];
	$zeit = $eintrag[2];
	$stueck = $eintrag[3];
	$link = $eintrag[4];
	$ort = $eintrag[5];
	$plaetze = $eintrag[6];
	$einteilung = $eintrag[7];

	
	if($einteilung=="h"){
		$show="<option>$tag  $datum  $zeit  $stueck  $ort</option>\n";
	}
	if($einteilung=="g"){
		$show="";
	}
	echo ("$show");
}
?>

Meine Idee war folgendermassen:
Ich bin daran bei einer Homepage von einem Theater ein Online-Bestellformular zu programmieren womit man Tickets reservieren kann. Ich möchte in einem select-Feld immer die Aufführungen hineinladen, die zur Zeit gerade im Spielplan sind (Daten aus der Textdatei). Im Spielplan sind jedoch auch noch Daten von Gastspielen auswärts. Für diese kann man beim Theater selbst keine Tickets reservieren. Darum möchte ich, dass nur die Aufführungen im select-Feld gezeigt werden, für welche auch Tickets reserviert werden können. Dadurch habe ich noch jeweils am Ende der Zeilen ein "g" für Gastspiele oder ein "h" für Heimspiele hingeschrieben, damit ich die Zeilen sortieren kann und im select Feld auch nur die "Heimspiele" angezeigt werden.

So ich hoffe ich konnte mein Problem genug konkret beschreiben und hoffe sehr, dass mir jemand helfen kann dabei.

Vielen Dank
Gruss
Jonas Schmid
 
Ich sehe zwar immer noch nicht, warum dort alles ausgegeben werden sollte... ich kann dir aber sagen, warum deine Prüfung nicht funktioniert(es dürfte eigentlich garnichts gefunden werden)

Auch wenn es so aussieht, dass am Ende der Zeile ein Buchstabe steht.... nach dem Buchstaben kommt noch was: der Zeilenumbruch!

Der ist mit in dem letzten Arrayelement.... wodurch die Prüfung fehlschlägt.

Lösung:
PHP:
if(trim($einteilung)=="g")
.... und es sollte gutgehen.
 
Ja das sah ich eben auch nicht, darum hatte es mich so verwirrt. Ich sass vor meinem Bildschirm und dachte wirklich, dass ich bald anfange zu spinnen. Alles spielte verrückt.

Jetzt mit dem trim funktionierts, vielen Dank, das mit dem Zeilenumbruch am Ende der Zeile vergesse ich manchmal einfach, so dumm.

Also noch einmal danke für die Mühe.

Gruss Jonas
 
Zurück