[Formular]DropDown Werteweitergabe

Male

Mitglied
Guten Tag liebe Leute. Ich stehe mal wieder vor einem für mich schier unlösbares Problem.

Ich habe ein Formular geschrieben, in dem sich ein Eingabefeld und ein DropDownmenü mit Name befinden. Der User soll nun zum Beispiel einen Wert in das Eingabefeld eingeben und dann im DropDownmenü einen Namen aussuchen. Nun soll das Script den Wert zu dem Namen in der SQL TAbelle schreiben. Auf einer anderen Seite soll nun der Name mit dem Wert ausgegeben werden. Ich weiß, ich stell mich anscheind zu blöd an, aber ich hoffe ihr könnt mir helfen oder habt vll. sogar eine Seite die mir helfen kann. Besten Dank :)
 
Ich hoffe ich habe dich richtig Verstanden:
Hier mal ein kleiner Denkanstoss:
formular --> weitergabe --> auswertung und speichern in die Tabelle --> nächste Seite auslesen aus Tabelle. ist doch nicht so schwierig!
Falls du nicht weisst wie in einer Datenbank einträge zu speichern/bzw auszulesen benütze mal die suchfunktion, da gibt es X-Beiträge... Du machst ja nicht mehr als in einer DB zu speichern und auszulesen.

Grüsse
disear
 
Naja, wenn ich dich richtig verstanden habe, dann musst du nur jedem Wert in dem Drop down Menü ein value geben und dann kannste das auf der folgeseite mit $_POST['dropdown'] (oder wieimmer das bei dir heiß) abfragen

Gruß GalaxyWarrior
 
Die Daten in der DB zu speichern und auslesen weiß ich ungefähr wie es geht. Bei mir geht es einfach um die Verknüpfung Eingabe und Auswahl-DropDownMenü.

Ich habe es mit einer if-Verknüpfung probiert ging aber leider nicht.
Code:
if ( $name == "1") // $name = Name von DropDownMenü und "1" = value in option
{ echo "Name1";}
elseif ( $name == "2")
{echo "Name2";}

mit switch, case hat es leider auch nicht geklappt:
Code:
switch($name)
{
case "1": {echo "Name1"; break;}
case "2": {echo "Name2"; break;}
}

Vorab, anstatt des " echo "Name1" " soll dann der SQL Update Befehl hin.
 
wie übergibst du die Daten vom Formular?
Code:
 <form action="blabla.php" method="post">
oder
Code:
 <form action="blabla.php" method="get">

falls du die get variante nimmst, musst du zuerst die Daten aus dem Header nehmen:
dies kannst du mithilfe dieser funktion (setze diese am Besten vor deinen IF-Anweisung):

Code:
$name = $HTTP_GET_VARS["name"];

Deine If-Verknüpfung ist sonst OK!

Hoffe ich kann dir ein wenig weiterhelfen

Grüsse
disear
 
Hier mal mein Code von dem Formular.
Code:
<form method="post" action="" name="statistik">
Downs: <br>
<input type="text" name="tode" id="tode">
	<select name="bosse" id="boss">
		<option value="1">Ragnaros</option>
		<option value="2">Lord Kazzak</option>
		<option value="3">Onyxia</option>
		<option value="4">Sulfaron</option>
		<option value="5">Garr</option>
	</select><p>
<input type="submit" name="senden" value="Abschicken">
</form>

<?php

if($senden)
{
	if($bosse == "1")
		{echo "Ragnaros";}

	elseif($bosse== "2")
		{echo "Lord Kazzak";}

	else
		echo "nix";

}

?>
 
so also ich habe jetzt dein script mal ein bisschen abgeändert:
Code:
<form method="get" action="test.php" name="statistik">
Downs: <br>
<input type="text" name="tode" id="tode">
        <select name="bosse" id="boss">
                <option value="1">Ragnaros</option>
                <option value="2">Lord Kazzak</option>
                <option value="3">Onyxia</option>
                <option value="4">Sulfaron</option>
                <option value="5">Garr</option>
        </select><p>
<input type="submit" name="senden" value="Abschicken">

</form>

<?php
$senden = $HTTP_GET_VARS["senden"];
$bosse = $HTTP_GET_VARS["bosse"];
if($senden=="Abschicken")
{
        if($bosse=="1")
                {echo "Ragnaros";}

        elseif($bosse== "2")
                {echo "Lord Kazzak";}

        else
                echo "nix";

}

?>
also oben habe ich bei Methode get hineingetan. unten werden danach die Variablen geprüft. Soo in der IF anweisung unten überprüft es, ob du auf Senden gedrückt hast. Wenn ja führt dies danach unten die unteren Skript aus!

Der Befehl hier: $senden=$HTTP_GET_VARS["senden"]; ruft die Variable senden im Header auf und speichert diese in der Variable $senden.

///EDIT: bei <form action habe ich noch test.php hieingeschrieben, dass es das gleiche Formular nochmals öffnet. Hier musst du einfach deinen Dateinamen hineintippen

so hoffe das läuft nun auch bei dir

disear
 
Zuletzt bearbeitet:
Erstmal danke disear für deine Mühe. Ich hab es nun etwas anders als Dein Vorschlag gelöst.

Code:
<?php

if($_POST['senden'])
{
         if($_POST['bosse']=="1")
           {
            echo "Ragnaros";
           }
         else
         {echo "Lord Kazzak";}
}

mal gucken ob das mit SQL dann auch klappt. Danke nochmal für die Hilfen.

edit: Ich seh gerade, dass dies der Lösungsweg von GalaxyWarrior war. :)

edit2: Es funktioniert auch hervorrangend mit switch - case, was denke ich auch besser ist
 
Zuletzt bearbeitet:
Hallo Leutz,

darf ich fragen warum ihr das so kompliziert macht?

mein Vorschlag:

PHP:
<?php

function start(){

echo "<form method=\"post\" action=\"test.php&x=schreiben\">"
       ."Downs: <br>"
       ."<input type=\"text\" name=\"tode\">"
       ."<select name=\"bosse\">"
       ."         <option value=\"Ragnaros\">Ragnaros</option>"
       ."         <option value=\"Lord Kazzak\">Lord Kazzak</option>"
       ."         <option value=\"Onyxia\">Onyxia</option>"
       ."         <option value=\"Sulfaron\">Sulfaron</option>"
       ."         <option value=\"Garr\">Garr</option>"
       ." </select><p>"
       ."<input type=\"submit\" name=\"senden\" value=\"Abschicken\">"
       ."</form>";
}

function schreiben($tode,$bosse){

$db = mysql_connect ($dbhost,$dbuname,$dbpass)
			or die("Verbindung konnte nicht hergestellt werden");
mysql_select_db ($dbname)
			or die("Tabelle konnte nicht gewählt werden");

$sql = "INSERT INTO tabelle (`id`, `tode` , `bosse`) VALUES ('', '$tode', '$bosse')"
mysql_query($sql, $db) or die ("Fehler!");
$id = mysql_insert_id();
mysql_close($db);
echo "<form action=\"test.php&x=lesen\" method=\"post\">"
       ."<input type=\"hidden\" value=\"$id\">"
       ."<input type=\"submit\" value=\"Eintrag lesen\">"
       ."</form>";
}

function lesen($id){
$db = mysql_connect ($dbhost,$dbuname,$dbpass)
			or die("Verbindung konnte nicht hergestellt werden");
mysql_select_db ($dbname)
			or die("Tabelle konnte nicht gewählt werden");
$sql = "SELECT * FROM tabelle WHERE id = $id";
$result = mysql_query($sql, $db);
mysql_close($db);
$array = mysql_fetch_array($result);
echo "Tode: ".$array['tode']. "<br>";
echo "Bosse: ".$array['bosse']. "<br>"; 
}


switch($x){

case "schreiben";
     schreiben($tode,$bosse);
     break;

case "lesen";
     lesen($id);
     break;

default:
     start();
     break;
}
?>

So, das ganze is bissel ausführlicher geworden, is aber auch beabsichtigt damit man mal sieht was geht. Für inhaltliche Richtigkeit übernehme ich keine Verantwortung, hab das nur mal eben in 10 Minuten zusammen geschmiert, sollte aber alles passen.

Nune würd ich mich mal über Kritik freuen, bzw. Antworten warum ihr das anders gelöst habt.
 
Danke BadBoy für dein ausführlichen Quellcode.
Ich werde es mal ausprobieren, da es doch vernüpftiger gecodet ist als meins. Naja dauert eh noch, bis ich es in 10 Minuten hinbekomme :)
Also vielen Dank nochmal.


edit:

Ich hab jetzt ein kleines Problem mit Deinem Code. Die Ausgabe soll nun auf einer anderen Seite passieren. Mit der switch - case Verknüpfen wird das aber leider nicht klappen oder irr ich mich da.
 
Zuletzt bearbeitet:
Zurück