andyah
Goto Top

PHP - Auswahl aus Listenfeld ausgeben

Hi NG,

ich möchte mit folgendem Code:

<?php
$daten = "adressen";  

$db = mysql_connect ("localhost", "root", "");  

if (!$db) { 
    die('Verbindung schlug fehl: ' . mysql_error());  
	}
 
$select_db = mysql_select_db($daten); 

$sql_befehl = "select * from mitglieder";  

$result = mysql_query($sql_befehl); 
echo '<form method="post" action="">';  
echo '<select name="" size="1">';  
echo '<option selected value=""></option>';  


while($row = mysql_fetch_array($result))
    {
       echo '<option name="wahl" value="' .$row[3]. '">' .$row[3]. '</option>';  
	} 
echo '</select>';  
echo '</form>';  

//an der Stelle möchte ich die Auswahl ausgeben.
echo $_POST['wahl'];  
?>

ausgewälte Daten aus dem Listenfeld ausgeben. Leider weiß ich nicht wie?

Die Code-Tags sind mal wieder verlohren gegangen!

Gruß
Andy

Content-Key: 203793

Url: https://administrator.de/contentid/203793

Printed on: April 23, 2024 at 07:04 o'clock

Member: nxclass
nxclass Mar 22, 2013 updated at 09:56:02 (UTC)
Goto Top
... Du scheinst nicht die Interaktion von Client (Browser / HTML) und dem Server (PHP /DB) zu verstehen.

  • Dein Skript holt die Daten für das select Form Element aus der DB und sendet es an deinen Browser. (inklusive deiner $_POST Variablen, welche leer ist an dieser Stelle)
  • nun sendest Du dein Formular -> an das selbe php Skript auf dem Server
  • Dein Skript holt die Daten für das select Form Element aus der DB und sendet es an deinen Browser. (inklusive deiner $_POST Variablen, welche NUN mit den Formular Daten gefüllt ist)
usw.

Du hast also keinen Controller der prüft welche Aktion genau ausgeführt werden soll. simples Beispiel:
// Controller:
if (!empty($_POST)) {
   // do something like saveing in DB
}
// get data for View

// View:
// Formular anzeigen

ausgewälte Daten aus dem Listenfeld ausgeben. Leider weiß ich nicht wie?
if (!empty($_POST) && isset($_POST['wahl']) ) {  
  // Auswahl abfragen aus DB und anzeigen
} else {
  // nur das Auswahlformular anzeigen
}
.. so zB.
Mitglied: 110135
110135 Mar 22, 2013 at 10:16:37 (UTC)
Goto Top
Hallo,

folgendes läuft schon mal falsch:

Zeile 15: action ist leer. Wo soll das teil hingeschickt werden?! Immer(!!!) ausfüllen

Zeile 16:
echo '<select name="" size="1">';   
Warum vergibst du hier keinen Namen? Option ist ein Kind-Element von select. Wenn du mehrere option-Elemente hast, überprüfst du das ausgewählte, in dem du das Elternelement (in diesem Fall Select) abfragst. Ergo: Du gibst select den Namen "wahl" und nimmst den Namen "wahl" vom Option-Element raus. Das hat da nichts zu suchen!

Zeile 22:
echo '<option name="wahl" value="' .$row[3]. '">' .$row[3]. '</option>';   
Wie bereits erwähnt: Nimm hier den Namen 'wahl' weg und lösche das Attribut "name" komplett. Außerdem solltest du bei DB-Abfragen nicht mit dem Array-Index arbeiten, da du hier auch gehörig auf die Nase fallen kannst, wenn du was an der Query änderst. Nimm den Feldnamen - z.B. $row['name']

Zeile 28:
echo $_POST['wahl'];   
Wird beim ersten Aufruf OHNE POST-Werte leer sein. Wie mein Vorredner schon sagt, du verstehst, so denke ich auch, die Interaktion nicht korrekt.

Generell: Lies dir doch bitte einmal die Tutorials durch, die ich dir schon in diversen Postings ans Herz gelegt habe. Es hilft dir und uns nichts, wenn du bei jeder Kleinigkeit (Sorry, das sind wirklich absolute Kleinigkeiten) hier eine Frage aufmachst.

Gruß,
Florian
Member: AndyAh
AndyAh Mar 26, 2013 at 09:51:19 (UTC)
Goto Top
Hi,

ich hab's zum laufen.

Gruß
Andy