Hallo
Wie man sieht, oder auch nicht, bin ich ein neues Mitglied hier. Na ja, das Forum ist das Beste, das ich bis anhin gesehen habe.
Nun gleich ein Problem. Ich kann zwar gut PHP programmieren, jedoch kein JavaScript. Habe folgenden Code hier aus dem Forum gezogen und ein bisschen umgeschrieben. Es handelt sich um ein abhängiges Dropdown.
Das Problem ist, wenn ich von der Resultatseite wieder auf diese Suchseite zurück komme, werden die vorher ausgewählten Daten marnr (Marke) und modellnr (Modell) nicht mehr angezeigt.
Hmmm, ich brauche keine Lösung, aber ein Ansatz wäre schon sehr hilfreich. Abgesehen davon hoffe ich, dass ich es einigermassen gut erklärt habe.
Grüsse und Danke!
Folgender Code steht am Anfang:
<script language="javascript" type="text/javascript">
// Object finden
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function build_options(f1, f2) {
marnr = f1;
modellnr = MM_findObj(f2);
opt = MM_findObj("auto_"+marnr.value);
// Alle Optionen in Box 2 entfernen
var l = modellnr.length;
var x=0;
while(x < l) {
modellnr.options[0] = null;
++x;
}
// Box 2 mit neuen Optionen füllen
if(opt) {
var params = opt.value.split(";");
var t = (params.length == 1) ? "Modell" : "Modelle";
var option = new Option("Alle ("+params.length+" "+t+")", "");
modellnr.options.add(option);
var i=0;
while(i < params.length) {
var p = params[i].split(",");
var option = new Option(p[1], p[0]);
modellnr.options.add(option);
++i;
}
}
// Keine Modelle vorhanden
else {
var option = new Option("Keine Modelle", "");
modellnr.options.add(option);
}
}
</script>
<?php
require_once("Datenbank Connection");
// Daten für DropDown_1 holen
$abfmar = "SELECT marnr,marke FROM tab_automarken ORDER BY marke";
$resmar = mysql_query($abfmar);
// 1. Option ist ein Hinweis
#$opt_1 = '<option value="-1">Interpret wählen</option>';
// Optionen bilden
while($rowmar = mysql_fetch_row($resmar)) {
// Optionen für DropDown_1
$opt_1 .= '<option value="'.$rowmar[0].'">'.$rowmar[1].'</option>';
#$opt_1 .= "<option value=\"$rowmar[0]\"$selmar>$rowmar[1]</option>";
// Daten für Marken holen
$abfmod = "SELECT marnr,modell FROM tab_modelle WHERE marnr=".$rowmar[0]." ORDER by modell ASC";
$resmod = mysql_query($abfmod);
while($rowmod = mysql_fetch_array($resmod)) {
$arr[$rowmod[0]][] = array($rowmod[1], $rowmod[1]);
}
}
$hidden = "";
foreach($arr as $key => $auto) {
$temp = "";
foreach($auto as $modell) {
// Wenn für die marnr ein oder mehrere Modelle existieren
// Modell Name übergeben
$temp .= $modell[0].",".$modell[1].";";
}
// Abschliessendes Semikolon entfernen
$temp = ereg_replace(";$","", $temp);
// Modelldaten an ein Hidden-Feld übergeben
$hidden .= '<input type="hidden" id="auto_'.$key.'" name="auto_'.$key.'" value="'.$temp.'" />';
}
?>
Diese Dropdowns stehen dann unten im Form:
<select name="marnr" onChange="build_options(this, 'modellnr')" class="sel140">
<option>Bitte Automarke wählen</option>
<?
echo $opt_1;
?>
</select>
<select name="modellnr" class="sel140">
<option>Keine Modelle</option>
</select>
Wie man sieht, oder auch nicht, bin ich ein neues Mitglied hier. Na ja, das Forum ist das Beste, das ich bis anhin gesehen habe.
Nun gleich ein Problem. Ich kann zwar gut PHP programmieren, jedoch kein JavaScript. Habe folgenden Code hier aus dem Forum gezogen und ein bisschen umgeschrieben. Es handelt sich um ein abhängiges Dropdown.
Das Problem ist, wenn ich von der Resultatseite wieder auf diese Suchseite zurück komme, werden die vorher ausgewählten Daten marnr (Marke) und modellnr (Modell) nicht mehr angezeigt.
Hmmm, ich brauche keine Lösung, aber ein Ansatz wäre schon sehr hilfreich. Abgesehen davon hoffe ich, dass ich es einigermassen gut erklärt habe.
Grüsse und Danke!
Folgender Code steht am Anfang:
<script language="javascript" type="text/javascript">
// Object finden
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function build_options(f1, f2) {
marnr = f1;
modellnr = MM_findObj(f2);
opt = MM_findObj("auto_"+marnr.value);
// Alle Optionen in Box 2 entfernen
var l = modellnr.length;
var x=0;
while(x < l) {
modellnr.options[0] = null;
++x;
}
// Box 2 mit neuen Optionen füllen
if(opt) {
var params = opt.value.split(";");
var t = (params.length == 1) ? "Modell" : "Modelle";
var option = new Option("Alle ("+params.length+" "+t+")", "");
modellnr.options.add(option);
var i=0;
while(i < params.length) {
var p = params[i].split(",");
var option = new Option(p[1], p[0]);
modellnr.options.add(option);
++i;
}
}
// Keine Modelle vorhanden
else {
var option = new Option("Keine Modelle", "");
modellnr.options.add(option);
}
}
</script>
<?php
require_once("Datenbank Connection");
// Daten für DropDown_1 holen
$abfmar = "SELECT marnr,marke FROM tab_automarken ORDER BY marke";
$resmar = mysql_query($abfmar);
// 1. Option ist ein Hinweis
#$opt_1 = '<option value="-1">Interpret wählen</option>';
// Optionen bilden
while($rowmar = mysql_fetch_row($resmar)) {
// Optionen für DropDown_1
$opt_1 .= '<option value="'.$rowmar[0].'">'.$rowmar[1].'</option>';
#$opt_1 .= "<option value=\"$rowmar[0]\"$selmar>$rowmar[1]</option>";
// Daten für Marken holen
$abfmod = "SELECT marnr,modell FROM tab_modelle WHERE marnr=".$rowmar[0]." ORDER by modell ASC";
$resmod = mysql_query($abfmod);
while($rowmod = mysql_fetch_array($resmod)) {
$arr[$rowmod[0]][] = array($rowmod[1], $rowmod[1]);
}
}
$hidden = "";
foreach($arr as $key => $auto) {
$temp = "";
foreach($auto as $modell) {
// Wenn für die marnr ein oder mehrere Modelle existieren
// Modell Name übergeben
$temp .= $modell[0].",".$modell[1].";";
}
// Abschliessendes Semikolon entfernen
$temp = ereg_replace(";$","", $temp);
// Modelldaten an ein Hidden-Feld übergeben
$hidden .= '<input type="hidden" id="auto_'.$key.'" name="auto_'.$key.'" value="'.$temp.'" />';
}
?>
Diese Dropdowns stehen dann unten im Form:
<select name="marnr" onChange="build_options(this, 'modellnr')" class="sel140">
<option>Bitte Automarke wählen</option>
<?
echo $opt_1;
?>
</select>
<select name="modellnr" class="sel140">
<option>Keine Modelle</option>
</select>
Kommentar