"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP + Combobox

Facetious 10.03.2004 - 23:04 824 10
Posts

Facetious

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
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

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 4882
kopier mal rein, was du hast

Facetious

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
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

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Ich würde nicht sagen, dass man bei 5 Codezeilen über Stil reden kann.

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
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

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
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

Addicted
Avatar
Registered: Oct 2003
Location: Wien
Posts: 406
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

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
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

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz