PHP + Combobox

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_combobox_109390/page_1 - zur Vollversion wechseln!


Facetious schrieb am 10.03.2004 um 23:04

hi leute!

das is die ur noob frage, aber ich komm voll nicht dahinter :bash:

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 :confused:


tia Facetious


dio schrieb am 10.03.2004 um 23:07

kopier mal rein, was du hast


Facetious schrieb am 10.03.2004 um 23:14

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 weiss .. mein stil ist nicht alzu gut .)


Ringding schrieb am 10.03.2004 um 23:15

Ich würde nicht sagen, dass man bei 5 Codezeilen über Stil reden kann.


atrox schrieb am 11.03.2004 um 02:48

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 ...


Facetious schrieb am 11.03.2004 um 10:06

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


Facetious schrieb am 11.03.2004 um 10:06

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


mat schrieb am 11.03.2004 um 11:19

1.)

Code:
window.location.replace('whatev4rjouwant')

2.) wenn du innerhalb deines forms ein hidden feld hast, dann wird dieses beim abschliessen des formulars übergeben. wenn du das formular allerdings zum 1. mal öffnest, dann is dieser wert noch nicht definiert.

Code: PHP
<form ...>

<?php
if (!isset($bFormwandler))
{
  //..
}
?>

<input type="hidden" name="bFormwandler" value="egal">
</form>


Facetious schrieb am 11.03.2004 um 12:09

Zitat von mat
1.)
Code:
window.location.replace('whatev4rjouwant')

ok.. das mit dem hidden element check ich,

aber window.location.replace :confused: :confused:

ich mein .. er sollte beim onchange ereignis den value zum server übertragen, damit ich dann die textboxen füllen kann...

is das damit gemeint? sorry .. bin ein bisschen schwer von begriff


Facetious


gue schrieb am 11.03.2004 um 13:58

Zitat von Facetious
ich mein .. er sollte beim onchange ereignis den value zum server übertragen, damit ich dann die textboxen füllen kann...
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.ä.

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;
}
?>

So oder so ähnlich müssts funktionieren :)


atrox schrieb am 11.03.2004 um 14:57

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