Patrick: UPDATE anhand Spalten-Index

Beitrag lesen

Also...

ich glaube, es ist simpler einfach das Script zu zeigen. Vielleicht hat ja auch jemand ne andere Idee...

Die Tabelle für die Umfragen (max. 10 Anworten):

// Die Tabelle
/*
CREATE TABLE Umfragen (
  id int(3) NOT NULL auto_increment,
  question text NOT NULL,
  answer1 varchar(255) NOT NULL default '',
  count1 int(7) NOT NULL default '0',
  answer2 varchar(255) NOT NULL default '',
  count2 int(7) NOT NULL default '0',
  answer3 varchar(255) NOT NULL default '',
  count3 int(7) NOT NULL default '0',
  answer4 varchar(255) NOT NULL default '',
  count4 int(7) NOT NULL default '0',
  answer5 varchar(255) NOT NULL default '',
  count5 int(7) NOT NULL default '0',
  answer6 varchar(255) NOT NULL default '',
  count6 int(7) NOT NULL default '0',
  answer7 varchar(255) NOT NULL default '',
  count7 int(7) NOT NULL default '0',
  answer8 varchar(255) NOT NULL default '',
  count8 int(7) NOT NULL default '0',
  answer9 varchar(255) NOT NULL default '',
  count9 int(7) NOT NULL default '0',
  answer10 varchar(255) NOT NULL default '',
  count10 int(7) NOT NULL default '0',
  begin varchar(10) NOT NULL default '',
  end varchar(10) NOT NULL default '',
  status tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (id)
) TYPE=MyISAM;
*/

<?php
$counter = 0;

$sql = "SELECT * FROM Umfragen WHERE begin <= '". strtotime("now") ."' && end > '". strtotime("now") ."' && status = '1' LIMIT 1";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);

print $row['question'];

if (!empty($row['answer1'])) $counter++;
if (!empty($row['answer2'])) $counter++;
if (!empty($row['answer3'])) $counter++;
if (!empty($row['answer4'])) $counter++;
if (!empty($row['answer5'])) $counter++;
if (!empty($row['answer6'])) $counter++;
if (!empty($row['answer7'])) $counter++;
if (!empty($row['answer8'])) $counter++;
if (!empty($row['answer9'])) $counter++;
if (!empty($row['answer10'])) $counter++;

if ($_POST['vote_umfrage']) {
    print $_POST['hersteller'];
    $sql = "UPDATE Umfragen SET [". $_POST['hersteller'] ."] = ([". $_POST['hersteller'] ."] + 1) WHERE id = '". $_POST['umfrageid'] ."'";
    $query = mysql_query($sql);
}
?>
<form action="<?= $PHP_SELF; ?>" method="post">
  <input type="hidden" name="umfrageid" value="<?= $row['id']; ?>" />
  <ul class="umfrage">
    <?php
    // Inhalte anhand Index der Spalte ansprechen, jede zweite Spalte ist Antwort, beginnend bei Index 2
    for ($i = 2; $i < (($counter * 2) + 1); ($i = $i + 2)) {
        print "<li><input type="radio" name="hersteller" value="". $i ."" /> ". $row[$i] ."</li>\n";
    }
    unset($i);
    unset($counter);
    ?>
  </ul>
  <div style="margin-top: 8px; text-align: right; margin-right: 6px;">
    <input type="image" src="/buttons/vote.gif" name="vote_umfrage" value="Login" />
  </div>
</form>

Hier habe ich durch die Schleife und vorher unbekannt Anzahl der Antworten keine andere Variante gefunden die Daten zu übertragen. Ich denke zu wissen, dass es auch die Möglichkeit gibt die Spalten answer1 im Ergebnis dann $row['answer1'] auszulesen, aber wie ich in dem Namen in einer Schleife die 1 da hochzählen kann, hab ich keine Ahnung...

Alles nachvollziehbar oder hab ich nun noch mehr Verwirrung gestiftet?

Gruß Patrick