Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Problem mit einem von JavaScript generierten Select-Feld





Frage

Hallo, habe folgendes Problem, ich generiere mit JavaScript ein dynamisches Selectfeld. Die Funktion dazu: [code] var bl_id = new Array( new Array(""), new Array("0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"), new Array("0","1","2","3","4","5","6","7","8","9"), new Array("0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26") ); var beschriftung = new Array( new Array("--Bitte auswählen--"), new Array("--Bitte auswählen--","Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schlesswig-Holstein","Thüringen"), new Array("--Bitte auswählen--","Burgenland","Kärnten","Niederösterreich","Oberösterreich","Salzburg","Steiermark","Tirol","Vorarlberg","Wien"), new Array("--Bitte auswählen--","Aargau","Appenzell-Ausserhoden","Appenzell-Innerhoden","Basel-Stadt","Basel-Lamdschaft","Bern","Genf","Glarus","Graubünden","Freiburg","Jura","Luzern","Neuenburg","Nidwalden","Obwalden","Schaffhausen","Schwyz","Solothum","St. Gallen","Tessin","Thurgau","Uri","Waadt","Wallis","Zug","Zürich") ); function land_anzeigen(f,x) { var kategorie = f.land.selectedIndex; f.bland.options.length = 0; for (var i=0; i<bl_id[kategorie].length; i++) { f.bland.options[i] = new Option((beschriftung[kategorie])[i], ""); } f.bland.selectedIndex = x; } [/code] Aber nach dem Absenden des Formulars ist in PHP die Variable $HTTP_POST_VARS[‚bland’] leer, normalerweise wäre das ja der Value des selektierten Wertes oder??? Hier das Formular: [code] echo "<form action=\""._URL."umg/editprofil/edPr-contactdaten-dbupdate.php\" method=\"post\" name=\"ed_pr_contact_form\">\n"; ?> <table border="0" cellpadding="0" cellspacing="0" width="520"> <tr> <td width="150">Straße:</td> <td width="230" align="center"> <input class="form-input" type="text" name="street" value="<?=$row['street']?>"></td> <td width="20">&nbsp;</td> <td width="120">&nbsp;</td> </tr> <tr> <td>Hausnr:</td> <td align="center"><input class="form-input" type="text" name="street_no" value="<?=$row['street_no']?>"></td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td>Plz:</td> <td align="center"><input class="form-input" type="text" name="plz" value="<?=$row['plz']?>"></td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td>Wohnort:</td><td align="center"> <input class="form-input" type="text" name="town" value="<?=$row['town']?>"></td> <td>&nbsp;</td><td>&nbsp;</td> </tr><tr> <td>Land:</td> <td align="center"> <?php echo "<select class=\"form-input\" name=\"land\" onChange=\"land_anzeigen(this.form,".$row['land'].");\">\n"; echo "<option value=\"0\" ".dP24_selected("0",$row['land'],"1").">--Bitte auswählen--</option>\n"; echo "<option value=\"1\" ".dP24_selected("1",$row['land'],"0").">Deutschland</option>\n"; echo "<option value=\"2\" ".dP24_selected("2",$row['land'],"0").">Österreich</option>\n"; echo "<option value=\"3\" ".dP24_selected("3",$row['land'],"0").">Schweiz</option>\n"; ?> </select></td> <td>&nbsp;</td> <td>&nbsp;</td></tr> <tr><td>Bundesland / Kanton:</td> <td align="center"> <select class="form-input" name="bland"> <option>--Bitte auswählen--</option> </select> </td> <td>&nbsp;</td><td>&nbsp;</td> </tr><tr> <td>&nbsp;</td> <td align="center"> <input onclick="formcheck();" class="form-button" name="send" type="submit" value="Ändern" /> <input class="form-button" name="" type="reset" /> </td> <td>&nbsp;</td> <td>&nbsp;</td> </tr></table></form> [/code] Wie bekomm ich nun den Value von dem bland-SelectFeld auf die andere HTML-Seite Über eure Hilfe wäre ich euch sehr dankbar. Gruß Chris

Antwort 1 von rfb

Es wäre vermutlich einfacher das herauszufinden, wenn du fertigen HTML- und JavaScript-Quellcode statt PHP-Quelltext posten würdest. Woher soll ich jetzt wissen was in den PHP-variablen steckt?

Antwort 2 von Pagestylist

So hier mal ganzer HTML_CODE

Ich hoffe ihr kommt damit klar

<html>
<head>
<script src="http://localhost/own/das-pferd24/umg/editprofil/bl-select.js" type="text/javascript"></script>
</head>
<body onload="land_anzeigen(document.forms['ed_pr_contact_form'],0);">
<form action="http://localhost/own/das-pferd24/umg/editprofil/edPr-contactdaten-dbupdate.php" method="post" name="ed_pr_contact_form">
<select name="land" onChange="land_anzeigen(this.form,1);">
<option value="0" >--Bitte auswählen--</option>
<option value="1" selected>Deutschland</option>
<option value="2" >Österreich</option>
<option value="3" >Schweiz</option>
</select>
<select name="bland">
<option>--Bitte auswählen--</option>
</select>
<input name="send" type="submit" value="Ändern" />
<input  name="" type="reset" />
</form>
</body>
</html>


Und die JavaScript Funktion steht ja schon im oberen Beitrag

Antwort 3 von rfb

könntest du die JavaScript-Funktion trotzdem nochmals posten.
Du weißt das i in eckigen Klammern hier als italic eusgewertet wird?
Daher weiß ich jetzt nicht wo du das als Index verwendet hast.
Nimm einfach einen anderen Buchstaben als i, u oder b als Index, dann wirds deutlicher.

Du könntest übrigens mal testweise die übergebenen Parameter im PHP testen analog zu diesem Formmailerscript, das einfach alles ausliest, was ankommt: SelfHTML: einfacher Formmailer

Antwort 4 von Pagestylist

Ja also ich lass das ja nach dem Absenden alles in eine DB eintragen und da ist dann alles so komplett außer die "bland"-Variable


// JavaScript Document
var bl_id = new Array(
new Array(""),
new Array("0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"),
new Array("0","1","2","3","4","5","6","7","8","9"),
new Array("0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26")
);
var beschriftung = new Array(
new Array("--Bitte auswählen--"),
new Array("--Bitte auswählen--","Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schlesswig-Holstein","Thüringen"),
new Array("--Bitte auswählen--","Burgenland","Kärnten","Niederösterreich","Oberösterreich","Salzburg","Steiermark","Tirol","Vorarlberg","Wien"),
new Array("--Bitte auswählen--","Aargau","Appenzell-Ausserhoden","Appenzell-Innerhoden","Basel-Stadt","Basel-Lamdschaft","Bern","Genf","Glarus","Graubünden","Freiburg","Jura","Luzern","Neuenburg","Nidwalden","Obwalden","Schaffhausen","Schwyz","Solothum","St. Gallen","Tessin","Thurgau","Uri","Waadt","Wallis","Zug","Zürich")
);
function land_anzeigen(f,x) {
	var kategorie = f.land.selectedIndex;
	f.bland.options.length = 0;
	for (var i=0; i<bl_id[kategorie].length; i++) {
	f.bland.options[j] = new Option((beschriftung[kategorie])[j], "");
	}
	f.bland.selectedIndex = x;
}


Hier mal die PHP Query

UPDATE dp24_reguser_data SET street = 'Ernststraße', street_no = '27', plz = '42117', town = 'Wuppertal', land = '1', bland = '' WHERE nickname = 'Webmaster'


Antwort 5 von rfb

wenn ich mich recht entsinen ist in
Zitat:
new Option((beschriftung[kategorie])[j], "")
das 2te Argument der
value
, da der hier scheinbar generell auf "" gesetzt wird, wäre dann das übertragene Ergebnis
bland=""
absolut korrekt.

PS: die Kalmmer um
(beschriftung[kategorie])[j]

ist meiner erfahrung nach überflüssig, ich frage mehrdimensionale Arrays mit
beschriftung[kategorie][j]
ab

Antwort 6 von Pagestylist

aber selbst wenn ich i in den zweiten Teil einsetze ist der value leer :(

Antwort 7 von rfb

ich habs eben mal mit der Methode "get" getestet (ist einfacher zu kontrollieren) und dabei value jeweils auf den index gesetzt -> wurde korrekt übertragen:
Zum Vergleich mein Code:

<html>
<head>
<script type="text/javascript">
var bl_id = new Array(
new Array(""),
new Array("0...);
var beschriftung = new Array(
...);
function land_anzeigen(f,x) {
   var kategorie = f.land.selectedIndex;
   f.bland.options.length = 0;
   for (var j=0; j<bl_id[kategorie].length; j++) {
   f.bland.options = new Option(beschriftung[kategorie][j], j);
   }
   f.bland.selectedIndex = x;
}
</script>
</head>
<body onload="land_anzeigen(document.forms['ed_pr_contact_form'],0);">
<form action="Untitled2.htm" method="get" name="ed_pr_contact_form">
<select name="land" onChange="land_anzeigen(this.form,1);">
<option value="0" >--Bitte auswählen--</option>
<option value="1" selected>Deutschland</option>
<option value="2" >Österreich</option>
<option value="3" >Schweiz</option>
</select>
<select name="bland">
<option>--Bitte auswählen--</option>
</select>
<input name="send" type="submit" value="Senden" />
</form>
</body>
</html>


Antwort 8 von Pagestylist

hmmmm :(

schon doof das ganze nun funktioniert das bei mir auch, sicher wegen irgend einem Leerzeichen dazwischen JavaScript is schon pingelich ^^

danke für deine Hilfe

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: