Array in Datenbank eintragen klappt nicht

Phaseshifter

Grünschnabel
Hallo!

Ich hab mich jetzt einwenig durch das Forum gewuselt, hab aber keinen anständigen ansatz gefunden.
Folgendes Problem: Ich übergebe per Variable eine Zahl, die ich in eine while-Schleife packe. Diese While-Schleife gibt mir dann die variable Anzahl der INPUT-Felder aus, die ich übergeben hab.

Soweit klappt das ganze auch. Jetzt möchte ich die input felder in die Datenbank eintragen. da scheitert es dann. Die Anzahl der Einträge wird eingefügt, aber die Felder werden nicht ausgefüllt.

Meine Datenbank-Tabelle:

PHP:
CREATE TABLE vote_antworten (
  id int(10) NOT NULL auto_increment,
  vote_id int(10) NOT NULL default '0',
  antwort text NOT NULL,
  wieviel int(10) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

Hier folgt der PHP-Code:

PHP:
<?    
if ($action=="step3") {
    mysql_select_db($dbname,$db);
    $abfrage = mysql_query("SELECT * FROM $tabellen[21] ORDER BY id DESC LIMIT 0,1",$db) or die(mysql_error());
    $data = mysql_fetch_array($abfrage);    
?>
<b>Neues Voting erstellen:</b>
<br><br>
<form method="post" action="index.php?action=step3&antw=<? echo $antw; ?>">
<table width="50%">
<tr><td>Frage:</td><td><b><? echo $data[frage]; ?></b></td></tr>
<?
$i = 1;
while ($i <= $antw):
    echo "<tr><td>Antwort $i:</td><td><input type=text name=$i size=20></td></tr>";
    $i++;

if ($submit) {
        mysql_select_db($dbname,$db);
         $sql = "INSERT INTO $tabellen[22] (vote_id,antwort)
        VALUES
              ('$data[id]','$si')";
        $result = mysql_query($sql,$db);
         echo "<meta http-equiv='refresh' content='1; URL=$ganzeSeite/admin/vote/index.php?action=step4'>";
        }
endwhile;        
?>
<tr><td>&nbsp;</td><td><input type=submit name=submit value=Senden></td></tr>
</form>
</table>
<br><br><br><br><br><br><br><br><br><br><br><br>

Ich hoffe, es ist alles ok formatiert. Währe schön, wenn mir jemand helfen könnte...
 
PHP:
$sql = "INSERT INTO $tabellen[22] (vote_id,antwort) 
        VALUES ('$data[id]','$si')";
Du siehst schon, dass du als Wert für das Feld `antwort` $si speichern willst, aber in deinen Codeschnippseln nirgendwo die Variable $si gesetzt worden ist oder?
 
Ja klar, aber ich hab doch auch als Name der input-Felder $i angegeben. Wie muss ich das denn machen, das die richtige $i in die Datenbank geschrieben wird?
 
Ok ich mache kurz und schmerzvoll - das Ding muss komlplett umgeschrieben werden :-(

Code:
<form method="post" action="index.php?action=step3&antw=<? echo $antw; ?>">

man sollte post und get nicht mischen ( alles was hinter einem Fragezeichen bei einem Link kommt ist eine Get Parameterübergabe
in deinem Fall musst du mit
<input form=hidden name=action value=step3>
arbeiten

Dann muss Erstellung des Formulars und die Auswertung getrennt werden -

da du eine Variablezahl von Eingabefeldern hast ist es eleganter mit einem Array zu arbeiten
PHP:
#statt:
echo "<tr><td>Antwort $i:</td><td><input type=text name=$i size=20></td></tr>"; 
#das:
echo "<tr><td>Antwort $i:</td><td><input type=text name=antwort[$i] size=20></td></tr>";

und die Auswertung und speicherung könnte dann so aussehen:
PHP:
if (isset($submit)) {
 for ($lo=1;$lo<sizeof($antwort);$lo++) {
  $sql="insert into tabelle(antwort,id) values('$antwort[$lo]','$lo')";
  $erg = mysql_query($sql) or die(mysql_error());
}

ps
mysql_select_db($dbname,$db); sollte nur einmal im script auftauchen und zwar am Anfang

hoffe die Hinweise helfen weiter
 
Zurück