Twiggy Geschrieben 10. Juli 2003 Geschrieben 10. Juli 2003 Hallöchen, ich habe in einem PHP-Script eine Select-Box. Wenn man etwas daraus auswählt soll passend auf der Seite eine neue Selectbox generiert werden. Ich habe hier im Forum schon gesucht und auch einige Anhaltspunkte gefunden (Javascript onChange), aber dass, was ich mir anhand dessen zusammengebastelt habe funktioniert nicht. Es passiert einfach gar nichts, nur in der Statusleiste des IE taucht das Felhersymbol auf. Da ich von Javascript absolut null Ahnung habe, würde ich mich freuen, wenn ihr mal über den Quelltext drüberschauen könntet und mir sagen könntet was ich da beachten muss/ falsch mache. <?php if (! isset ( $dez )) { echo "<div align='center'>" ; echo "<br><br><font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2>" ; echo "<b>Bitte wählen Sie aus, was angezeigt werden soll</b></font>" ; echo "<table width='80%'>" ; echo "<form name='dez' action='auswahldez.php' method='post'>" ; echo "<tr><td align='center'><br><select name='dez' size='4' onChange=erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value)>" ; echo "<option value='I'>Dezernat I</option>" ; echo "<option value='II'>Dezernat II</option>" ; echo "<option value='III'>Dezernat III</option>" ; echo "<option value='IV/V'>Dezernat IV/ V</option>" ; echo "</select></td>" ; echo "</tr>" ; echo "<tr><td align='center'><br><input type='submit' name='auswahl' value='--> Weiter'>" ; echo "</td></tr>" ; echo "<script type=\"language\"> \n" ; echo "<!-- \n" ; echo "function erneuern(dez) { \n" ; echo "window.location.href=\"auswahldez.php?dez=\" + dez + \";" ; echo "} \n" ; echo "// -->\n" ; echo "</script>\n" ; echo "</form>" ; echo "</table>" ; echo "</div>" ; } else { /* Der Einfachheit halber will ich hier statt das neue Feld zu generieren erstmal nur die Variable ausgeben, anhand derer dann das Feld generiert wird */ echo "<font color='#000000'><h2>* $dez *</h2></font>" ; } ?> Für jedwedige Hilfe schonmal im Voraus Danke Twiggy Zitieren
kills Geschrieben 10. Juli 2003 Geschrieben 10. Juli 2003 ich würde der einfachheit halber mal das ganze ein wenig anders machen das macht das ganze sehr viel übersichtlicher. danach kann man dir hier bestimmt weiterhelfen. gruss kills if (...) { ?> ...... dein ganzes html schmodder da .... <?php } else [ Zitieren
Twiggy Geschrieben 11. Juli 2003 Autor Geschrieben 11. Juli 2003 Ok, dann halt nochmal in der gewünschten Form. Ich hatte noch einen kleinen Fehler entdeckt, bei der Einleitung des Javascript-Teils, aber dessen Behebung hat auch nichts gebracht. :-( Ich hab die entsprechenden Javascript-Teile, um die es mir hier geht mal rot gekennzeichnet, damit man sie schneller findet. @Wolle: Danke fürs verschieben, war mir auch schon aufgefallen, dass ich irgendwie falsch gelandet bin. :-) <?php if (!isset($dez)) { ?> <div align='center'><br><br> <font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2> <b>Bitte wählen Sie aus, was angezeigt werden soll</b></font> <table width='80%'> <form name='dez' action='auswahldez.php' method='post'> <tr> <td align='center'> <br><select name='dez' size='4' [COLOR=red]onChange=erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value)[/COLOR] > <option value='I'>Dezernat I</option> <option value='II'>Dezernat II</option> <option value='III'>Dezernat III</option> <option value='IV/V'>Dezernat IV/ V</option> </select> </td> </tr> <tr> <td align='center'><br><input type='submit' name='auswahl' value='--> Weiter'> </td> </tr> [COLOR=red]<script language='JavaScript'> <!-- function erneuern(dez) { window.location.href="auswahldez.php?dez=" + dez + "; } // --> </script>[/COLOR] </form> </table> </div> <?php } else { ?> /* Der Einfachheit halber will ich hier statt das neue Feld zu generieren erstmal nur die Variable ausgeben, anhand derer dann das Feld generiert wird */ <font color='#000000'><h2>* $dez *</h2></font> <?php } ?> [/PHP] Zitieren
Art Geschrieben 14. Juli 2003 Geschrieben 14. Juli 2003 da ist was in der erneuern funktion faul. versuchs mal so: window.location.href="auswahldez.php?dez=" + dez; Zitieren
Twiggy Geschrieben 15. Juli 2003 Autor Geschrieben 15. Juli 2003 Ja, klasse, dann funktionierts. Vielen Dank! Dann hab ich noch ne Frage. Wenn ich noch andere Variablen in dem Formular habe, bleiben die beim Neuladen ja nicht bestehen, oder? Kann ich die dann einfach hier hinter hängen, so wie das was da in türkis steht? window.location.href="auswahldez.php?dez=" + dez + "&neue_variable=" + neue_variable; Danke nochmal Twiggy Zitieren
Twiggy Geschrieben 15. Juli 2003 Autor Geschrieben 15. Juli 2003 Hm, irgendwie ist da noch ein Problem mit der Übergabe mehrerer Variablen an die Funktion, dachte eigentlich, dass das so gehen müsste. function erneuern(dez, abt) aber wenn ich das so mache wird die Variable dez mit dem Wert von abt gefüllt und abt mit "undefined". Habe mir jetzt gedacht, dass es daran liegen könnte, dass die Variable dez beim zweiten onChange nicht mehr gesetzt wird und habe ein hidden-Feld eingebaut, in dem sie dann innerhalb des Formulars nochmal gesetzt wird. Bekomme aber trotzdem immernoch ne falsche Ausgabe. Ich versteh das nicht. Zitieren
Art Geschrieben 15. Juli 2003 Geschrieben 15. Juli 2003 <?php if (!isset($dez)) { $abt = "irgendwas"; ?> <div align='center'><br><br> <font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2> <b>Bitte wählen Sie aus, was angezeigt werden soll</b></font> <table width='80%'> <form name="dez" action='auswahldez.php' method='post'> <tr> <td align='center'> <br><select name='dez' size='4' onChange="erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value, '<?php echo $abt; ?>');"> <option value='I'>Dezernat I</option> <option value='II'>Dezernat II</option> <option value='III'>Dezernat III</option> <option value='IV/V'>Dezernat IV/ V</option> </select> </td> </tr> <tr> <td colspan=2 align='center'><br><input type='submit' name='auswahl' value='--> Weiter'> </td> </tr> <script language='JavaScript'> <!-- function erneuern(dez, abt) { window.location.href="auswahldez.php?dez=" + dez + "&abt=" + abt; } // --> </script> </form> </table> </div> <?php } else { ?> /* Der Einfachheit halber will ich hier statt das neue Feld zu generieren erstmal nur die Variable ausgeben, anhand derer dann das Feld generiert wird */ <font color='#000000'><h2>* $dez *</h2></font> <?php echo $dez ."-". $abt; } ?> [/php] Zitieren
Twiggy Geschrieben 15. Juli 2003 Autor Geschrieben 15. Juli 2003 Tja, wenn ich mir das so ansehe, dann muss ich das wohl doch anders machen. So sah das bei mir aus, und so funktionierts halt nicht: <script language='JavaScript'> <!-- function erneuern(dez, abt) { window.location.href="auswahldez.php?dez=" + dez + "&abt=" + abt; } // --> </script> <?php if (!isset($abt) and !isset($dez)) { ?> <div align='center'><br><br> <font color='#5A78B4'><h2>Gesamtanzeige Hardware</h2> <b>Bitte wählen Sie aus, was angezeigt werden soll</b></font> <table width='80%'> <form name='dez' action='auswahldez.php' method='post'> <tr> <td align='center'> <br><select name='dez' size='4' onChange=erneuern(this.form.dez.options[this.form.dez.options.selectedIndex].value) > <option value='I'>Dezernat I</option> <option value='II'>Dezernat II</option> <option value='III'>Dezernat III</option> <option value='IV/V'>Dezernat IV/ V</option> </select> </td> </tr> <tr> <td align='center'><br><input type='submit' name='auswahl' value='--> Weiter'> </td> </tr> </form> </table> </div> <?php } elseif ($abt == "undefined" and isset($dez)) { ?> <div align='center'> <br><br><h2><font color='#5A78B4'>Gesamtanzeige Hardware</h2> <b>Sie haben Dezernat $dez ausgewählt!<br> Wie wollen Sie weiter verfahren?</b><br><br></font> <table width='80%'> <tr> <td align='center'>Daten des Dezernat $dez<br></td> </tr> <tr> <td align='center'> <form action='anzeigedez.php' method='post'> <input type='hidden' name='dez' value='$dez'> <input type='submit' name='anzeigen' value='anzeigen'> </form> </td> </tr> </table> <?php if ($dez == "I") { ?> <table width='80%'> <tr> <td align='center'>Abteilung auswählen<br></td> </tr> <tr> <td align='center'> <form action='auswahldez.php' method='post'> <select name='abt' size='5' onChange=erneuern(this.form.abt.options[this.form.abt.options.selectedIndex].value)> <option value='hgf'>HGF, Präsident, Sekretariat</option> <option value='I/1-1'>Abteilung I/1-1 (PR, Medien)</option> <option value='I/1-2'>Abteilung I/1-2 (Controlling)</option> </select><br><br> <input type='submit' name='auswahl' value='--> Weiter'> </form> </td> </tr> </table>"; <?php } } else { echo "*$dez**$abt*"; //zur Überprüfung } ?> [/PHP] Ich hoffe mein Problem ist verständlich, danke für deine Geduld Art, wäre nett, wenn Du mir das ganze etwas erklären könntest. Also warum das so nicht geht, denn ich würde das schon ganz gerne verstehen, muss das wahrscheinlich noch öfter in meinen PHP-Scripten verwenden und da ist es doch besser wenn man nicht nur copy & paste macht, sondern weiß womit mans zu tun hat. Zitieren
Art Geschrieben 15. Juli 2003 Geschrieben 15. Juli 2003 hi. nuja. bin kein großer künstler im erklären. aber in der section abteilung mußt du dez wieder an erneuern() übergeben. onChange="erneuern('<?php echo $dez;?>', this.form.abt.options[this.form.abt.options.selectedIndex].value)" [/php] allerdings befürchte ich, dass du dich ziemlich verzetteln wirst, wenn du die abteilungen alle mit if anweisungen abfangen willst. wo kommen denn die daten her? datenbank? datei? wie wärs denn wenn du dezernate und abteilung erstman in ein array packst? aber nix genaues weiss man. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.