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

[FRAGE] Zitate ausgeben mit JS und PHP

claudia_web

New member
Guten Tag miteinander :)

Ich habe eine Frage zu meinem Code. Und zwar habe ich ein txt-File, woraus ich Zitate herausnehme.
Die Zitate werden per Zufall ausgegeben. Der User kann die Zitate durchklicken. Jedes Zitat erscheint nur einmal. Wenn alle Zitat angezeigt wurden, kommt die Meldung:

"Sie haben alle Zitate gelesen! Wollen Sie erneut die Zitate lesen?"

Mein Code funktioniert noch nicht. Mir ist es wichtig, dass man im Quelltext nicht alle Fragen sieht, deshalb
habe ich den Code folgendermassen programmiert. Doch die Ausgabe funktioniert noch nicht.

Wer kann mir helfen? :)

Vielen Dank im Voraus !

Code:
<?php
$datei = "zitate.txt";
$i = 0;
$zitate = array();
$fp = fopen($datei, "r");
while ($zeilen = fgetcsv($fp, 1000, '#')) {
	$zitate[$i]['text'] = $zeilen[0];
	$i++;
}
shuffle($zitate);
	foreach ($zitate as $value) {	
}
fclose($fp);

$zitat1 = $zitate[0]["text"];
$zitat2 = $zitate[1]["text"];
$zitat3 = $zitate[2]["text"];
// $zitat4, $zitat5, $zitat6 usw. usf.

$zitat_button = "<div id=\"zitat_button\">1</div>";

$zitat1_laden = "<div id=\"zitat_button\">".$zitat1."</div>";
$zitat2_laden = "<div id=\"zitat_button\">".$zitat2."</div>";
$zitat3_laden = "<div id=\"zitat_button\">".$zitat3."</div>";

$restart = "Sie haben alle Zitate gelesen! Wollen Sie erneut die Zitate lesen?";
?>

<script type="text/javascript">
function change_text() {
             if(document.getElementById("zitat_button").innerHTML=="1"){
		        document.getElementById("zitat_button").innerHTML="2";
			}
		else if(document.getElementById("zitat_button").innerHTML=="2"){
		        document.getElementById("zitat_button").innerHTML="3";
			}
		else if(document.getElementById("zitat_button").innerHTML=="3"){
			    document.getElementById("zitat_button").innerHTML="<?php echo $restart; ?>";
		    }
		else if(document.getElementById("zitat_button").innerHTML=="<?php echo $restart; ?>"){
				window.location.href='zitate.php';
		    }
		   else{window.location.href='fehlermeldung.php';
			}
		}
</script>

<?php		

// ab hier stimmt mein Code nicht mehr. 
Ich blicke nicht mehr durch, weil ich schon viele Stunden mit diesem Code zugebracht habe :-)

	if 		($zitat_button == $zitat1_laden){ echo $zitat_button;}
	else if ($zitat_button == $zitat2_laden){ echo $zitat_button;} 
	else if ($zitat_button == $zitat3_laden){ echo $zitat_button;} 
	// else if möglich für weitere variablen $zitat4_laden, $zitat5_laden, $zitat6_laden usw. usf.
	else {echo "Script Fehler";}
?>														      

<a href='javascript:void(0)' onclick="change_text()">Hier klicken</a>
 
Zuletzt bearbeitet:
Links nach dem Muster javascript:function() sind längst veraltet. Wo hast du denn den Quatsch mit javascript:void(0) her? Das kannst du gleich weglassen! Außerdem gibt man in einem Link kein leeres Linkziel an... Stattdessen einfach das Attribut ganz weglassen und falls gewünscht dem Element eine CSS-Klasse geben, wodurch es genauso wie ein normaler Link aussieht:
HTML:
<style>
.javascript-link {
    cursor: pointer;
    text-decoration: underline;
}
</style>

<div class="javascript-link" onclick="change_text()">Hier klicken</div>


Ansonsten kann ich deinen gesamten Code leider gerade absolut nicht nachvollziehen. Finde den ziemlich wirr. Ich vermute auch, dass dir der Unterschied zwischen serverseitig und clientseitig nicht ganz klar ist. Wenn eine Seite einmal geladen wurde, kannst du da mit PHP nicht einfach noch irgendwas hinzufügen...
 
Zuletzt bearbeitet:
Du musst dir als aller erstes mal klar machen, was der Unterschied zwischen serverseitiger und clientseitiger Programmierung ist.

Also zuerst läuft alles an PHP bei dir durch und baut das HTML zusammen. Das wird dann an den Browser geliefert (dort kannst du dir das auch am Besten ansehen) und da fängt dann JS an.
JS arbeitet also nur auf dem, was es als HTML-Quelltext geliefert bekommt, und hat direkt keine Schnittstelle mit z.B. PHP. Wenn du da interaktion haben willst, kannst du das entweder mit AJAX machen oder die Seite neu aufbauen.

PS: <a href="javascript:void(0)"> ist jetzt nicht wirklich dein Ernst...
 
Wenn es dir wichtig ist, dass man im Quelltext nicht alle Fragen sieht, dann realisier das alles nur mit PHP. Dein PHP-Code ist für den Nutzer nicht sichtbar, alles was an den Browser gesendet wird (HTML, Javascripte) kann vom Nutzer eingesehen werden.
Schau dir an wie Formulare mit PHP realisiert werden, speziell das sogenannte Affenformular und die Möglichkeiten der serverseitigen Speicherung von Sitzungsdaten mittels Sessions.

Wenn deine Anwendung weiter Textdateien als Datenbasis nutzen soll (es gibt bessere Möglichkeiten), solltest du dafür sorgen, das diese Datei nicht einfach per Browserzeile aufgerufen werden kann. Das könnte per .htaccess erfolgen.
 
Ja, und aus der Session kann man dann auslesen, welche Sprüche schon angezeigt wurden, und dann je nachdem die zur Verfügung stehenden Zitate verringern. Aus diesen kann z.B. per shuffle() ein zufälliger ausgewählt und angezeigt werden.
 
Zurück
Oben