Hallo,
ich habe auf jeder Seite/Unterseite meiner Seite oben einen Header mit einem Texteingabefeld und einem "Los"-Button.
<input type="text" id="textfeld" class="eaneingabeelement" value="" placeholder="EAN eingeben..." size="60">
<button id="losbutton" class="eaneingabeelement eaneingabebutton"" value="Los">Los</button>
Gibt man in das Texteingabefeld etwas ein und drückt auf den "Los"-Button, soll zur Hauptseite index.php gewechselt, falls die Hauptseite noch nicht angezeigt wird, und sollen zu der Eingabe passende Informationen aus einer Datenbank angezeigt werden.
Dafür habe ich das folgende Javascript geschrieben (eingebunden am Ende der Header-Datei):
document.querySelector('#losbutton').onclick = function() {
var textfeldwert = $('#textfeld').val();
$.post('sessionvariablenspeichern.php', {
ausgabe: 'liste'
});
window.location.pathname = 'index.php';
$('#film').load('filmaktualisieren.php', {
sessionStartenFilm: true,
losButtonGedrueckt: true,
textfeldwert: textfeldwert
});
}
Alles anzeigen
Dieses speichert zunächst die Eingabe aus dem Texteingabefeld und führt die Datei sessionvariablenspeichern.php aus, in der die Sessionvariable "ausgabe" gesetzt wird:
<?php
session_start();
if (isset($_POST['ausgabe'])) {
$_SESSION['ausgabe'] = $_POST['ausgabe'];
}
?>
Dann wird die Hauptseite index.php geladen (da zuvor die Sessionvariable "ausgabe" gesetzt wurde, wird nicht die Begrüßung, sondern das div ausgabe_container geladen):
(Code...)
<div id="einundausgabe">
<?php
if(!isset($_SESSION['ausgabe'])) {
(Ist die Sessionvariable "ausgabe" noch nicht gesetzt, erscheint eine Begrüßung)
}
else {
?>
<div id="ausgabe_container">
(Code...)
<div id="film">
<?php
include 'filmaktualisieren.php';
?>
</div>
(Code...)
</div>
<?php
}
?>
</div>
(Code...)
Alles anzeigen
Zuletzt werden die Informationen aus der Datenbank, die in filmaktualisieren.php abgefragt werden, in das div "film" der Hauptseite geladen (diese werden "nachgeladen", da beim laden der Hauptseite "losButtonGedrueckt" nicht gesetzt war und die Informationen entsprechend nicht aus der Datenbank abgefragt wurden)):
if(isset($_POST['sessionStartenFilm'])) {
session_start();
}
if(isset($_POST['losButtonGedrueckt'])) {
(Daten werden aus der Datenbank abgefragt...)
//Speichern der Daten in Sessionvariablen
$_SESSION['ean'] = $row['ean_n'];
$_SESSION['titel'] = $row['titel_n'];
$_SESSION['disctyp'] = $row['disctyp_n'];
$_SESSION['besonderheit'] = $row['besonderheit_n'];
}
if(!isset($_SESSION['ean'])) {
echo '
<div id="leererfilm_container">
<p id="leererfilmtext">Geben Sie eine EAN ein und klicken Sie auf "Los", um Filmdaten abzurufen.</p>
</div>
';
}
else {
//Die in den Sessionvariablen gespeicherten Filmdaten werden ausgegeben
echo '
<div class="filmelement">
<p class="textfilmelement">'.$_SESSION['titel'].' ('.$_SESSION['ean'].')</p>
<p class="textfilmelement">'.$_SESSION['disctyp'];
if($_SESSION['besonderheit'] != '') {
echo ', '.$_SESSION['besonderheit'];
}
echo '
</p>
</div>
';
}
Alles anzeigen
Es klingt alles ein bisschen kompliziert und ich glaube auch, ich habe mich ein bisschen verhaspelt. Folgendes ist das Problem: Bei Klick auf den "Los"-Button werden, sofern das div "ausgabe_container" nicht bereits angezeigt wird, die Informationen aus der Datenbank nicht ausgegeben (sondern das div "leererfilm_container") und wenn das div "ausgabe_container" bereits geladen ist, werden die Informationen aus der Datenbank "des aktuellen Klicks auf den "Los"-Button" beim darauffolgenden Klick auf den "Los"-Button geladen und die Informationen aus der Datenbank des darauffolgenden Klicks beim wiederum darauf folgenden Klick geladen. Wie erhalte ich das gewünschte Verhalten?
P.S.: An alle, die bereits meine vorherigen Posts gelesen haben: Ich habe die Struktur der Seite seit dem deutlich verändert. Die alten Posts sind also zu großen Teilen nicht mehr aktuell.