Dropdown Inhalt an SQL übergeben

tiede

Grünschnabel
Hallo zusammen,
ich hab da mal ein Problem:

Auszug:
Aus folgenden Feldern:

PHP:
   echo "<tr>"
    . "<td><input name='va[0]' size='10'></td>"
    . "<td><input name='nr[0]' size='10'></td>"
. "<td><input name='s1[0]' size='10'></td>"
    . "<td><input name='s2[0]' size='10'></td>"
    . "<td><a href='javascript:send(0,0);'>"
    . "new</a></td>"
    . "</tr>";


Werden die Werte an SQL übergeben:

PHP:
         $sqlab = "insert team_tb";
         $sqlab .= "(veranstaltung_fid, teamnummer, spieler1, spieler2) values ('";
         $sqlab .= $_POST["va"][0] . "', '";
         $sqlab .= $_POST["nr"][0] . "', '";
         $sqlab .= $_POST["s1"][0] . "', '";
         $sqlab .= $_POST["s2"][0] . "')";
         mysql_query($sqlab);


Dies funktioniert ohne weiters, nur:

Wie kann ich s1 (Fett) aus folgendem Dropdownfeld übergeben:

PHP:
$sql = "SELECT * from spieler_tb order by spieler";

$result = mysql_query($sql);

echo "<select name='spielerdb1' >\n";

while ($data = mysql_fetch_array($result))
   {     echo "<option value='" . $data["spieler_id"] . "'>";
        echo $data["spieler"] . "</option>\n";   }
          echo "</select>\n";

Wer kann mir helfen? Danke
Tiede
 
Zuletzt bearbeitet von einem Moderator:
Durch den namen des selectfeldes wird, wenn angegeben das value des optionfeldes weitergegeben. Also das feld welches selecctiert wird und auf den button geklickt wird.

$_POST['spielerdb1']

wäre dann das übergeben value.
 
Danke für die schnelle Antwort!

Ich hab dies gestern auch so probiert, nur funktioniert es nicht:

PHP:
$sqlab = "insert team_tb";
$sqlab .= "(veranstaltung_fid, teamnummer, spieler1, spieler2) values ('";
$sqlab .= $_POST["va"][0] . "', '";
$sqlab .= $_POST["nr"][0] . "', '";
$sqlab .= $_POST['spielerdb1'] . "', '";
$sqlab .= $_POST["s2"][0] . "')";
mysql_query($sqlab);

Ist das falsch? :confused:
 
Zuletzt bearbeitet von einem Moderator:
Hi,


Der Zugriff auf die Post-Variable ist richtig. Du solltest Dir mal die Fehlermeldung ausgeben lassen ([phpf]mysql_error[/phpf]) samt der zusammengesetzten Abfrage. Vielleicht sieht die gar nicht so aus, wie Du Dir das vorgestellt hast.
Außerdem solltest Du die entsprechenden Tags benutzen, wenn Du Code postest, das erleichert das Lesen.

Wenn Du den Fehler dann behoben hast, solltest Du Dich dringend mit Sicherheitsfragen beschäftigen, Stichwort "SQL-Injection". Man sollte niemals Daten, die vom Benutzer kommen, ungeprüft in eine DB-Query stecken.

LG
 
Hier mal fast komplett(Formular und Tabelle sind raus,)! Ich komme echt nicht weiter!

Das Dropdownfeld:

PHP:
<?php
require_once('connect.php');
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht
waehlen.");
$sql = "SELECT * from spieler_tb order by spieler";
$result = mysql_query($sql);
echo "<select name='spieler_dd1' >\n";
while ($data = mysql_fetch_array($result))
   {     echo "<option value='" . $data["spieler_id"] . "'>";
        echo $data["spieler"] . "</option>\n";   }
          echo "</select>\n";
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht
waehlen.");
?>

Die Eingabe:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="ud20.css">
<!-- Javascipt zur Erstellung der Teams -->
<script type="text/javascript">
function send(ak,id)
{
   if(ak==0)
       document.f.ak.value = "in";
   else if(ak==1)
       document.f.ak.value = "up";
   else if(ak==2)
   {
       if (confirm("Datensatz mit id " + id + " löschen?"))
          document.f.ak.value = "de";
       else
          return;
   }
   document.f.id.value = id;
   document.f.submit();
}

</script>
</head>
<font size="+1"><b>Create Teams</b></font>
<p>

<?php

require_once('connect.php');
require_once('dropdown_spieler.php');

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
("Verbindungsversuch fehlgeschlagen");

 mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht
 waehlen.");


  /* Aktion ausführen */
   if(isset($_POST["ak"]))
   {
      /* neu eintragen */
      if($_POST["ak"]=="in")
      {
         $sqlab = "insert team_tb";
         $sqlab .= "(tea_veranstaltung_fid, tea_teamnummer, spieler1, spieler2) values ('";
         $sqlab .= $_POST["va"][0] . "', '";
         $sqlab .= $_POST["no"][0] . "', '";
        $sqlab .= $_POST['spieler_dd1'][0] . "', '"; //Dies soll aus dem Dropdownfeld gelesen werden 
         $sqlab .= $_POST['f2'][0] . "')";
         mysql_query($sqlab);
         echo mysql_errno() . ": " . mysql_error() . "\n";
      }



   }


   /* Neuer Eintrag */
   echo "<tr>"
    . "<td><input name='va[0]' size='10'></td>"
    . "<td><input name='no[0]' size='10'></td>"
    . "<td><input name='s1[0]' size='10'></td>"
    . "<td><input name='s2[0]' size='10'></td>"
    . "<td><a href='javascript:send(0,0);'>"
    . "new</a></td>"
    . "</tr>";

   /* Anzeigen */
   $res = mysql_query("select * from team_tb order by tea_teamnummer");

   /* Alle vorhandenen Datensätze */
   while ($dsatz = mysql_fetch_assoc($res))
   {
      $id = $dsatz["team_id"];
      echo "\n<tr>"
       . "<td><input name='va[$id]' value='"
       .  $dsatz["tea_veranstaltung_fid"] . "' size='10'></td>"
       . "<td><input name='no[$id]' value='"
       .  $dsatz["tea_teamnummer"] . "' size='10'></td>"
       . "<td><input name='s1[$id]' value='"
       .  $dsatz["spieler1"] . "' size='10'></td>"
       . "<td><input name='s2[$id]' value='"
       .  $dsatz["spieler2"] . "' size='10'></td>"
       . "<td><a href='javascript:send(1,$id);'>alter</a>"
       . " <a href='javascript:send(2,$id);'>delete</a></td>"
       . "</tr>";
   }

   echo "</table></form>";
?>
</body>
</html>

Die Errormeldung ist 0: aber die Felder bleiben leer.
Dank für die Hilfe
 
Zuletzt bearbeitet von einem Moderator:
Hi,

ich hatte Dich gebeten, die entsprechenden Tags für Code zu benutzen...

- Überprüfe, ob die Eingaben überhaupt ankommen (print_r($_POST)).
- Lass Dir die Abfrage mal ausgeben.

LG

PS.: Wieso benutzt Du denn hier schon wieder $_POST['spieler_dd1'][0]?

PHP:
$sqlab .= $_POST['spieler_dd1'][0] . "', '"; //Dies soll aus dem Dropdownfeld gelesen werden
 
Zuletzt bearbeitet:
Hi, jetzt mit den Tags, sorry!

Nee, wird nicht übergeben! Die anderen Werte ohne Probleme!

Hintergrund meines Problems ist, dass die User nur über Dropdownfelder
die Tabellen füllen. Darum habe ich so angefangen, dass ich manuell Daten einpflegen kann, danach "einfach" den Weg über die Dropdownfelder gehe und die Felder für die manuelle Eingabe sperren.

Wo muss ich den Dropdownnamen eintragen?
Dort:
PHP:
$sqlab .= $_POST['spieler_dd1'][0] . "', '";
oder dort:
PHP:
. "<td><input name='s1[$id]' value='"
       .  $dsatz["spieler1"] . "' size='10'></td>"
oder dort:
PHP:
. "<td><input name='s1[0]' size='10'></td>"

Ich verzweifel! Bin ich auf dem falschen Weg?
Gruß

P.S.:
Ohne [0] wird bei mir 0,0,Array,Array in die DB eingetragen
PHP:
$_POST['spieler_dd1'][0]
 
Hi,

mach mal ein print_r($_POST) und schau Dir an, was ankommt. Ich steige durch Deine Logik, wann das aus dem Inputfeld kommt und wann aus der Auswahlliste, nicht durch.
Kannst die Ausgabe auch hier posten, aber bitte aus dem Browserquelltext rauskopieren.

LG
 
Hi!
Am Ende soll alles aus Dropdownfeldern kommen= Veranstaltung, Teamnummer, Spieler1 und Spieler 2! Im Browser: 4 Dropdownfelder, darunter die Tabelle mit den Infos und einer Möglichkeit des Änderns (Info Dropdown) und löschen.

print_r($_POST) aus dem Browser kopiert und unbehandelt:
Array ( [ak] => in [id] => 0 [va] => Array ( [0] => 1 [1] => 1 [28] => 1 [48] => 1 [49] => 1 [50] => 1 ) [no] => Array ( [0] => 4 [1] => 1 [28] => 2 [48] => 3 [49] => 3 [50] => 3 ) [f1] => Array ( [0] => [1] => Blubbi [28] => setg [48] => Test3 [49] => Test3 [50] => Test3 ) [f2] => Array ( [0] => manuell [1] => Blubby [28] => the [48] => Test3 [49] => Test3 [50] => Test3 ) )

Der Name vom Dropdownfeld steht bei diesem Test in:
PHP:
$sqlab .= $_POST['spieler_dd1'][0] . "', '";

Gruß und Danke für die Mühe
 
print_r($_POST) aus dem Browser kopiert und unbehandelt:

Du solltest das aus dem Browserquelltext kopieren, damit die Zeilenumbrüche auch erhalten bleiben, so ist das Anschauen kein Spaß...

Array ( [ak] => in [id] => 0 [va] => Array ( [0] => 1 [1] => 1 [28] => 1 [48] => 1 [49] => 1 [50] => 1 ) [no] => Array ( [0] => 4 [1] => 1 [28] => 2 [48] => 3 [49] => 3 [50] => 3 ) [f1] => Array ( [0] => [1] => Blubbi [28] => setg [48] => Test3 [49] => Test3 [50] => Test3 ) [f2] => Array ( [0] => manuell [1] => Blubby [28] => the [48] => Test3 [49] => Test3 [50] => Test3 ) )

Weit und breit keine Spur von Deiner Auswahlliste, wie die auch heißen mag.

Der Name vom Dropdownfeld steht bei diesem Test in:
PHP:
$sqlab .= $_POST['spieler_dd1'][0] . "', '";

Hä? :confused: Meintest Du den ausgewählten Wert? Wie gesagt, ist das Feld "spieler_dd1" in Deinen Post-Daten nicht enthalten und außerdem wäre das auch kein Array und müsste also über $_POST['spieler_dd1'] angesprochen werden (das ist Dir auch schon gesagt worden).

Poste mal Dein Formular, das muss fehlerhaft sein. Poste nicht den PHP-Code, sondern das, was beim Client ankommt.

LG
 
Zurück