Hallo,
wieder einmal bin ich auf eure Hilfe angewiesen bei der Lösung eines Problems, das ich leider sehr ausführlich beschreiben muss, damit (hoffentlich) alles klar wird.
Ausgangspunkt ist die Datei "Index.php", in die dynamisch, je nach Bedarf, weiterer Code eingebunden wird.
Die via get übergebenen Parameter werden in der Datei "Index.php" mit folgendem Code ausgewertet (auch um nicht erlaubte Eingaben herauszufiltern):
$Parameter = array ("Hauptmenue", "Untermenue", "Untermenue2", "Aktion", "Suche", "Nr", "Groesse", "Farbe");
$Whitelist = array ("/^Hauptmenue=\d{1,2}$/",
"/^Untermenue=\d{1}$/",
"/^Untermenue2=\d{1}$/",
"/^Aktion=[A-Za-z]*$/",
"/^Suche=\d{1}$/",
"/^Nr=\d{1,2}$/",
"/^Groesse=\d{1}$/",
"/^Farbe=\d{1,2}$/");
foreach ($_GET as $Schluessel => $Wert)
{
for ($i = 0; $i < count ($Parameter); $i++)
{
if ($Schluessel == $Parameter[$i])
{
$ZuPruefen = $Parameter[$i] . '=' . $Wert;
if (preg_match ($Whitelist[$i], $ZuPruefen))
if ($_GET[$Parameter[$i]] !== null)
$$Parameter[$i] = $_GET[$Parameter[$i]];
}
}
}
Über PHP binde ich in die Datei "Index.php" u.a. auch externe JavaScript-Dateien ein und baue zudem nachfolgende JavaScript-Funktion auf.
Beides wird ebenfalls nur bei Bedarf eingebunden:
echo '<script src="../JS/ArtikelDetails.js" type="text/javascript"></script>';
echo '<script type="text/javascript">';
echo "function Senden ()";
echo "{";
echo "Groesse, Farbe;";
if (isset ($Untermenue2) && $Untermenue2 !== "")
echo 'document.location.href = "Index.php?Hauptmenue=' . $Hauptmenue . '&Untermenue=' . $Untermenue . '&Untermenue2=' . $Untermenue2 . '&Nr=' . $Nr . '&Groesse=" + Groesse + "&Farbe=" + Farbe + "&Aktion=ArtikelWarenkorb"';
else
echo 'document.location.href = "Index.php?Hauptmenue=' . $Hauptmenue . '&Untermenue=' . $Untermenue . '&Nr=' . $Nr . '&Groesse=" + Groesse + "&Farbe=" + Farbe + "&Aktion=ArtikelWarenkorb"';
echo "}";
echo "</script>";
Ich habe deshalb diese Methode gewählt, da ich beim Absenden eines Formulars mehrere Werte benötige, die auf der einen Seite über PHP ermittelt und auf der anderen Seite über JavaScript (Übergabe von Werten zweier Auswahllisten) übergeben werden.
In der vorher angesprochenen JavaScript-Datei ermittle ich u.a. die Werte zweier Auswahllisten, danach arbeite ich mit diesen Werten weiter
Groesse = "";
Farbe = "";
function PreisErmitteln(Typ)
{
Groesse, Farbe;
[...]
Preis1 = Groesse.options[Groesse.selectedIndex].value;
Groesse = Groesse.selectedIndex - 1;
Preis2 = Farbe.options[Farbe.selectedIndex].value;
Farbe = Farbe.selectedIndex - 1;
[...]
}
Letztendlich erhalte ich in der Adressleiste von Firefox nach Absenden des Formulars über die Funktion "Senden ()", siehe oben, auf jeden Fall beispielsweise folgenden Querystring:
http://localhost/[...]/Index.php?Hauptmenue=4&Untermenue=0&Nr=0&Groesse=1&Farbe=4&Aktion=ArtikelWarenkorb
Wenn ich nun, zu Testzwecken, über echo die Variablen "Groesse" und "Farbe" ausgeben lasse, dann wird mir nur der Wert der Variablen "Groesse" ausgegeben, aber nicht der Variablen "Farbe". Es wird mir aber auch keine Fehlermeldung ausgegeben, d.h. die Variable "Farbe" ist "Null", ohne dass ich aber irgendwelche weiteren Zuweisungen für diese beiden Variablen treffe.
Vor den testweisen Ausgaben habe ich keine einzige Anweisung, in der diese beiden Variablen auch nur erwähnt werden.
Mit FireBug habe ich noch nie gearbeitet, da ich mit diesem Addon absolut nicht zurecht komme, falls dies zur Lösungsfindung beitragen sollte, was ich aber ausschliessen kann, da die Adressleiste ja dagegen spricht, dass bei der Übergabe/Übermittlung ein Fehler vorliegt.
Könnt ihr mir anhand meiner Angaben bei der Lösung des Problems helfen, warum die Variable "Farbe" keinen Inhalt hat, nachdem sie korrekt übergeben worden zu sein scheint?
Danke und Gruß,
Enrico