[PHP/MySQL]Von Dropdown in Datenbank schreiben

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
Hab noch eine kleine Frage

um einen Wert aus einem Textfeld auszulesen, gehe ich ja so ran

PHP:
<input name="prov" type="text" size="20" maxlength="50" value="<?php echo $_POST['prov'];?>"/>
wie mache ich das bei einem solchen tag?

HTML:
  <select name="anbieter" >
  <option value="mobilcom">mobilcom</option>
  <option value="base">Base</option>
  </select>

Ich will es letztendlich in der Variable
PHP:
<?php echo $_POST['anbieter'];?>
speichern.]
 
Zuletzt bearbeitet:
Weiß denn keiner was ich meine?
 
also ich glaub ich versteh da was falsch, aber du willst doch ein Formular, und du willst wissen, wo du die daten herkriegst, wenn du das Formular abgeschickt hast...oder?
 
Es is so. Ich hab nen Droßdownmenü
und ich will den im dropdown ausgewählten text in ein anderes textfeld einfügen, nachdem ich auf einen enfachen formularbutton geklickt habe (nicht den submitbutton)
 
Code:
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript">
function kopieren()
{
document.aendern.kopiert.value="hallo";
}
</SCRIPT>

HTML:
<label>Wähle einen Vertrag aus
  <select name="vertragwahl">
  <option value="-1" selected>-kein Vertrag gewählt-</option>
  	<?php
	while ($i < $anz AND $row = mysql_fetch_assoc($res2))
		{
		echo "<option value=".$row['name'].">".$row['name']."</option>";
		$i++;
		}
	?>
  </select>
  </label>
<input name="vertragbutton" type="submit" value="Vertrag w&auml;hlen" onClick="kopieren()"/>
<input name="kopiert" type="text" size="20" />

Das haut kurzzeitig hin. D.h. es wir ca. ne halbe sekunde hallo angezeigt und das wars.
Wie bekomme ich das so hin, dasser den text aus dem select feld nimmt?

Bitte brauche dringend hilfe.
 
Hier mal ein Lösungsansatz (in eine Funktion gepackt:

PHP:
function get_select_data() {

// Hier stehen die MySQL Zugangsdaten
include (mysql.inc.php); 

$sql_get_select_data = mysql_query("DEINE SQL STATEMENT");

	print '<select name="list_select_data_value">';

	while ($rs_get_select_data = mysql_fetch_object($sql_get_select_data)) {

  	$list_select_data_1 = $rs_get_select_data->DATEN;
        $list_select_data_2 = $rs_get_select_data->DATEN2;

		print '<option value="'.$list_select_data_1.'" >'.$list_select_data_2.'</option>';

	}

	print '</select>';

mysql_free_result($sql_get_select_data);

}
Schauen wir uns mal Deinen Code an:

PHP:
  	<?php
	while ($i < $anz AND $row = mysql_fetch_assoc($res2))
		{
		echo "<option value=".$row['name'].">".$row['name']."</option>";
		$i++;
		}
	?>

Warum
PHP:
echo "<option value=".$row['name'].">".$row['name']."</option>";
?

Wozu lässt Du den PHP Parser innerhalb von " nach Variablen suchen wenn Du diese eh ausserhalb der " setzt?

Optimaler wäre hier:
PHP:
print '<option value='.$row['name'].'>'.$row['name'].'</option>';

Ach, und ich habe es mir angewöhnt bei PHP die Operatoren PHP-Like zu schreiben.
So ist es dann einfacher, innerhalb von Scripten nach SQL Anweisungen zu suchen.

Siehe hier:

|| = oder (OR)
&& = und (AND)
^ = Exklusiv-Oder (XOR)
 
Zuletzt bearbeitet:
also soweit ich verstanden hab, ist dein Problem eher eins mit Javascript....

du kannst mit JacaScript aus des der Eigenschaft "selectedIndex" von dem "select" element abfragen, welche option ausgewählt wurde.

dann fragst du einfach ab, welchen text diese option enthält, und speicherst die dann in deinem editfeld ab... soo

Code:
function
{
var index = document.formular.selectelement.selectedIndex;
var ausgewaelter_text  = document.formular.selectelement.options[index].text;

document.formular.inputfeld.value = ausgewaelter_text;
}
ich habs zwar net getested, müsste aber funktionieren....musst halt nur formular, ect.... durch deine Element Namen ersetzen....

mfg clemix
 
hmm wenn ich es so mache funzt es nicht. Muss das gleich gehen, sobald ich nen wahl angeklickt habe?
Oder erst wenn ich nen button gedrückt hab.

Ich hab von java absolut garkeinen plan.
 
also, follgendes funktioniert doch oder?
Code:
<html>
<head>
<script type="text/javascript">
function zeigeAuswahl()
{
var index = document.formular.anbieter.selectedIndex;
var ausgewaelter_text  = document.formular.anbieter.options[index].text;

document.formular.prov.value = ausgewaelter_text;
}

</script>
</head>
<body>
  <form name="formular">
  
  <select name="anbieter" onchange="zeigeAuswahl()" >
  <option value="mobilcom">mobilcom</option>
  <option value="base">Base</option>
  </select>
  
  
  <input name="prov" type="text" size="20" maxlength="50" value=""/>
  
  </form>
</body>
</html>
 
Nein das funzt nicht :(
 
hast du einen 'Mozilla Firefox?
wenn ja dann klick mal auf Extras->JavascriptConsole,
schau mal was da ausgegeben wird....
 
Logisch es kam das hier

document.formular.anbieter has no properties und das kommt gleich 3 ma

Ich hab folgenders vergessen

uncaught exception: Die Erlaubnis für den Aufruf der Methode Location.toString wurde verweigert
 
Zuletzt bearbeitet: (-update-)
hm..also bei mir geht das sogar im ie...
das erste bedeutet eigentlich, dass die SelectBox keine "optionen" enthält...
und das zweite, hatt ich noch nie...
...sry aber ich weiß auch net warums net geht....
 
kannst du mir sagen woran es liegen könnte das kein wert in option steckt.
Geh bitte nicht vom vorhandenen queltext aus weil ich den schon abgeändert habe.
 
ua, kannst du mir den Quelltext mal posten? oder die Seite(falls sie schon online ist)....

(der mit wert eine option könnte gemeint sein, dass "value" nicht gesetzt ist-...

gruß
: clemix
 
hier haste das ganze script ma

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript">
function zeigeAuswahl()
{
var index = document.formular.anbieter.selectedIndex;
var ausgewaelter_text  = document.formular.anbieter.options[index].text;

document.formular.vertragsname.value = ausgewaelter_text;
}
</SCRIPT>
</head>

<body>
<?php
//Variablendeklarationen
	
	$datenbank	=	"tariftabellen";
	$tabelle	=	"tarife";
	$user		=	"xxx";
	$passwort	=	"yyy";
	$host		=	"localhost";
	$fehlermeldung="";
	$i			= 	0;
	

//DEKLARATION ENDE
//VERBINDUNG DATENBANK

$db_link = mysql_connect($host, $user, $passwort);
if($db_link) 
	{
    $status = "<font color='green'><strong><blink>Verbindung wurde aufgebaut</blink></strong></font><br />\n";
	if(mysql_select_db($datenbank, $db_link)) 
		{
    	$status.="Die Datenbank ".$datenbank." wurde ausgewählt";
		} 
	else 
		{
       	$status ="<font color='red'><blink>Konnte Datenbank nicht benutzen.</blink></font><br/>\n";
       	$status.="Der Grund dafür: ".mysql_error()."\n";
    	}
		// QUERYS BEGIN
					/*Reihen zählen*/
					$sql = mysql_query("SELECT COUNT(*) FROM $tabelle");
				    $res = mysql_fetch_array($sql);
						if ($res[0])
						{$message = "<font color='green'>Es befinden sich ".$res[0]." Datensätze im Sortiment</font>";}
						else
						{$message = "<font color='red'><blink>Reihen zählen Fehlgeschlagen. Erst fortfahren wenn Problem behoben.</blink></font>";}
					/*Reihen zählen ende*/
					/*Vertragsnamen auslesen*/
					$sql2 ="SELECT name FROM $tabelle ORDER BY name";
				    $res2 = mysql_query($sql2);
					/*Vertragsnamen auslesen ende*/
					/*Datensatz ändern*/
					$sql3 = "UPDATE tarife
							SET provision = '".$_POST['provision']."', wkz = '".$_POST['wkz']."', tarifbild = '".$_POST['url']."'
							WHERE name = '".$_POST['vertragsname']."'";
					$result	= mysql_query($sql3);
					
					/*Datensatz ändern ende*/
	}				
		// QUERYS ENDE
						$anz=$res[0];
	if($_POST['vfeld2']==1)
		{
		if (!$_POST['vertragsname']) {$fehlermeldung="<br><font color='red'>Kein Vertrag ausgewählt</font>";}
		else
		{
		if($result)
			{
			$message="<font color='green'>Daten wurden geupdatet</font>";
			}
			else
			{
			$message="<font color='red'>Update fehlgeschlagen</font>";
			}
		}
		}
		?>

<div style="float:left;with:300px;border:1px #000000 solid;padding:10px;margin-bottom:5px;">
<form method="POST" action="<?php echo $_SERVER['file:///C|/xampp/htdocs/phase01/PHP_SELF']; ?>" name="formular">
<input type="hidden" value="1" name="vfeld2" />
  <label>Wähle einen Vertrag aus
  <select name="auswahl" onchange="zeigeAuswahl()">
  <option value="-1" selected>-kein Vertrag gewählt-</option>
  	<?php
	while ($i < $anz AND $row = mysql_fetch_assoc($res2))
		{
		echo "<option value=".$row['name'].">".$row['name']."</option>";
		$i++;
		}
	?>
  </select>
  </label><br />
<input name="vertragbutton" type="submit" value="Vertrag w&auml;hlen" onClick="zeigeAuswahl()"/>
<br />
  Name
  <br />
  <input name="vertragsname" type="text" size="20" value="<?php echo $_POST['vertragsname']; ?>">
    <br />
  Provision
  <br />
  <input name="provision" type="text" size="20" value="<?php echo $_POST['provision']; ?>"/>
    <br />
  WKZ
  <br />
  <input name="wkz" type="text" size="20" value="<?php echo $_POST['wkz']; ?>"/>
    <br />
    URL der Tarifdetails<br />
    <input name="url" type="text" size="20" value="<?php echo $_POST['url']; ?>" />
    <br />
    <br />
  <input name="senden" type="submit" value="Abändern"/>
</form>
</div>
						<div style="width:300px; padding:5px;background-color:#FFFF66;border:#000000 1px solid; clear:both; margin-top:5px; font:Verdana, Arial, Helvetica, sans-serif">
	<strong><u>STATUS</u></strong><br />
	<?php 
	echo $status."<br>";
	echo $message;
	echo $fehlermeldung;
	?>
</div>
<br />
<a href="index.php">Zurück </a>
</body>
</html>
 
ok, ich hab die Fehler gefunden.
Das Problem an deinem Script ist, dass du über die Namen von Elementen auf deren Werte zugreifst(wie bei einem Objekt).
Bei dir ist das aber so, dass du Elemente hast, (wie z.B. den "div" Tag, der vor dem "form" Tag anfängt), die aber keine Namen haben und du tust quasi so, als wäre "form" ein Unterelement von document, es ist aber ein Unterelement von diesem "div" ELement das keinen Namen hat.

Genauso ist es bei der selectbox, du greifst über das Formular auf sie zu, sie ist aber ein Unterelement von diesem "label" element (das "label" Elemtent ist ein Unterelement von dem Formular, eigentlich spricht man hier von "Kinderelementen")

es giebt jetzt zwei Lösungen für dein Problem, entweder du giebst dem "div" und dem "label" Element auch einen Namen und schreibst dann halt:
Code:
[COLOR=#000000]document.nameDesDivElements.formular 
[/COLOR]


oder du giebst der selectbox und dem inputfeld eine id
Code:
[COLOR=#000000] 
<select name="auswahl" id="auswahl" onchange="zeigeAuswahl()"> 
[/COLOR]


der Wert der id darf allerdings nur einmal pro document vorkommen.
also du darfst dann kein zweites Element mit der mit dem Wert "auswahl" bei id erstellen.
Dann greifst du mit getElementByID() auf das Element zu.

Code:
document.getElementById("input").value="Hallo Welt";

und noch was, in deiner Function greifst du auf die Selectbox mit dem namen "anbieter" zu, die giebts aber gar nicht, ich schätze du meinst "auswahl" das solltest du auch noch ausbessern ;)

schöne Grüße: clemix

 
Ich habe jetzt folgende Änderungen vorgenommen

PHP:
function zeigeAuswahl()
{
var index = document.box.formular.anbieter.selectedIndex;
var ausgewaelter_text  = document.box.formular.anbieter.options[index].text;

document.box.formular.vertragsname.value = ausgewaelter_text;
}

dann

PHP:
<div style="float:left;with:300px;border:1px #000000 solid;padding:10px;margin-bottom:5px;" name="box">

und

PHP:
  <label name="label">Wähle einen Vertrag aus
  <select name="anbieter" onchange="zeigeAuswahl()">

und es passiert immer noch nix. Was habe ich falsch gemacht.
Es tut mir leid, wenn ich mich nen bisschewn doof anstelle ... sorry
 
Zuletzt bearbeitet:
ja, du hast ein vergessen, das label in deiner fuction vergessen.
aber mir ist grad was schlimmes aufgefallen..
sry aber das wird dann immer noch nicht klappen, weil die es bei div und label kein Namensattribut giebt... sry ich hab mich da geirrt :heul:

dann bleib nur noch die zweite Möglichkeit übrig...

Code:
function zeigeAuswahl()
{
var frm = document.getElementById("formular");
var index = frm.anbieter.selectedIndex;
var ausgewaelter_text  = frm.anbieter.options[index].text;

frm.vertragsname.value = ausgewaelter_text;
}
so muss dann die funktion heißen,
und dann musst du noch bei deinem "form" element das attribut id ergänzen und auf "formular" setzen... so:

Code:
[COLOR=#000000]<form method="POST" action="[COLOR=#0000bb]<?php [/COLOR][COLOR=#007700]echo [/COLOR][COLOR=#0000bb]$_SERVER[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'file:///C|/xampp/htdocs/phase01/PHP_SELF'[/COLOR][COLOR=#007700]]; [/COLOR][COLOR=#0000bb]?>[/COLOR]" id="formular" name="formular">
[/COLOR]


sry das der "name" in div und label net erlaubt ist hab ich einfach vergessen :(
 
Zurück
Oben