URL: https://www.overclockers.at/coding-stuff/php_combobox_109390/page_1 - zur Vollversion wechseln!
hi leute!
das is die ur noob frage, aber ich komm voll nicht dahinter
na gut .. ich hab in ein formular eine schöne combobox mit idnummern (dynamisch aus einer mysql-tabelle ausgelsen).
gebunden an ein onChance ereignis dieser combobox, soll er jetzt in zwei vorhandene textboxen (vorname, zuname) den zur idnummer zugehörigen vornamen und zunamen reinschreiben.
ich komm voll nicht dahinter, steh voll auf der leitung
tia Facetious
kopier mal rein, was du hast
Code: PHP<? include('connect.php'); ?> <html> <head> <title>Daten bearbeiten</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body bgcolor="maroon"> <? if(!isset($_POST['submit'])) { ?> <form method="post" name="form1"> <table border = "0" bgcolor="black" width="50%" align="center"> <tr> <td bgcolor="white" align="center" colspan="2"><b>Bearbeiten</b></td> </tr> <tr> <td bgcolor="white">Katalognummer auswählen</td> <td bgcolor="white"><select name="nr" size="1" onChange="javascript: getValue()"><option value=""></option> [B]<? $sql = "SELECT Katalognr FROM schueler"; if($query = mysql_query($sql, $verbindung)) { while($result = mysql_fetch_array($query)) { for($i = 0; $i<sizeof($result)-1; $i++) echo "<option value=\"$result[$i]\">$result[$i]</option>\n"; } } ?>[/B] </select></td> </tr> <tr> <td bgcolor="white">Vorname</td> <td bgcolor="white"><input type="text" name="vname" class="input"></td> </tr> <tr> <td bgcolor="white">Nachname</td> <td bgcolor="white"><input type="text" name="nname" class="input" disabled></td> </tr> <tr> <td bgcolor="white" colspan="2"><center><input type="submit" name="submit" value="Submit" class="button"></center></td> </tr> </table> </form> <? } else { if(($_POST['vname'] == "") || ($_POST['nname'] == "")) { echo '<script language="javascript">alert("Bitte alle Felder ausfüllen"); history.back();</script>'; } else } ?> </body> </html>
Ich würde nicht sagen, dass man bei 5 Codezeilen über Stil reden kann.
Code:a) ohne nachladen: wenn in der dropdown nur die id drinnstehen soll, brauchst du ein javascript lookup-feld. dh der client bekommt die ganze tabelle (schülernummer, vor&nachname) als javascript-array, und im 'onchange'-handler suchst du dann in dem array nach der schülernummer und schreibst die anderen daten in die anzeige. (minder geeignet, wenn man mehrere tausende einträge hat) also zb generierst du: Schueler = new Array( new Array("Saku","Koivu", 39482304), new Array("Martin","Rucinsky", 34802389), new Array("Jeff","Hackett", 39823498), new Array("Sheldon","Sourray", 87587343), new Array("Richard","Zednik", 68798735), ... )); oder du verwendest die schulernummer gleich als index: schueler = new Array(); (..) schueler[1234]=new Array("Saku","Koivu"), schueler[1238]=new Array("Martin ","Rucinsky"), schueler[1240]=new Array("Jeff ","Hackett"), (...) you got the idea, didn't you ? b) mit nachladen: durch aussuchen der id im dropdown erzeugst du ein submit() bzw schickst die id mit window.location=... an den server, der dann eine veränderte seite mit den richtigen werten zurückgibt. c) onChange="java script: getValue()" ^^^^^^^^^^^^^--- remove d) for($i = 0; $i<sizeof($result)-1; $i++) lösungshinweis: for ($i=0; $i<1; $i++) { for ($j=0; $j<1; $j++) { for ($k=0; $k<1; $k++) { do_something_once(__in_a_fancy_way); } } } e) if(!isset($_POST['submit'])) (...) <input type="submit" name="submit" value="Submit" wenn jemand das formular mit der [enter] taste abschickt, statt mit dem submit-button, wird dein script es nicht erkennen: lösungshinweis: <input type=hidden ...
hi! thx für die vielen lösungsvorschläge
ich hab ein paar fragen dazu!
zu b)
wie erzeuge ich so ein submit?? ..
und zu e)
was meinst bewirkt es wenn ich ein hidden element verwende?
thx Facetious
hi! thx für die vielen lösungsvorschläge
ich hab ein paar fragen dazu!
zu b)
wie erzeuge ich so ein submit?? ..
und zu e)
was bewirkt es wenn ich ein hidden element verwende?
thx Facetious
// sorry für doppelpost
1.)
Code:window.location.replace('whatev4rjouwant')
Code: PHP<form ...> <?php if (!isset($bFormwandler)) { //.. } ?> <input type="hidden" name="bFormwandler" value="egal"> </form>
Zitat von mat1.)Code:window.location.replace('whatev4rjouwant')
Das geht IMHO nicht so, wie du es dir vorstellst. Du kannst bei einem onChange Ereignis aber z.B. eine JavaScript Funktion aufrufen, die die URL (also den HTTP-GET Request) verändert, indem es Parameter hinzufügt o.ä.Zitat von Facetiousich mein .. er sollte beim onchange ereignis den value zum server übertragen, damit ich dann die textboxen füllen kann...
Code:<script language="text/javascript"> <!-- function formSubmit() { form = document.forms[0]; // bzw. statt 0 die wievielte Form es auf deinem Dokument ist url = document.URL; value = getFieldValue (form.name, "select"); url = url + "&name=" + value; // bzw. "?name=" form.action = url; form.submit(); } //--> </script> <form action=""> <select name="name" onChange="formSubmit()"> <option>Name 1</option> <option>Name 2</option> // ... </select> <input type="hidden" name="nameselected"> </form> <?php if (isset ($HTTP_POST_VARS['nameselected'])) { // name selektiert... $name = $HTTP_GET_VARS['name']; // hier dann db queries machen // wie z.B: "SELECT parents FROM users WHERE name='$name';" // und aus dem result fetchen echo "Eltern: ".$parents; } ?>
ja, so meinte ich es: window.location verändern, oder document.formname.submit(); letzteres geht natürlich nur, wenn das form sonst nichts macht, oder wenn ich die onchange-requests irgendwie kennzeichne (zb durch umsetzen des hidden-fields)
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025