[PHP/MYSQL] Script zum adden von Polls

Habe grad bemerkt, dass die Antworten mit dem Add-Script irgendwie falschrum eingetragen werden. In der Tabelle poll_antworten sieht es folgendermaßen aus:

ID
1 (manuell in DB eingetrangen)
2 (manuell in DB eingetrangen)
3 (manuell in DB eingetrangen)
19 (per Script eingetragen)
18 (per Script eingetragen)
17 (per Script eingetragen)

woran liegt das? die ID steht doch auf auto_incr und prim key?

mfg
unlord
 
Weil du eine while () Schleife verwendest, die rückwaärts zählt. Wenn du expilizit eine ID in dem INSERT Query angibst, dann nützt auch AUTO_INCREMENT nichts.

Der Unterschied ist der, dass bei den zwei Querys getrennt nach Usern und Polls gesucht wird.
Du willst aber den User haben, der auch bei dem Poll mitgemacht hat.
 
Mh jetzt werden die IDs plötzlich wieder richtig sortiert O_O ...habe zwar nichts am add Script verändert, aber naja wenn es halt wieder will ^^

mfg
unlord
 
Sooo -.-' das nächste Prob... Poll editieren:

Mein Formular sieht so aus:

PHP:
<?php
  echo "<h2>Poll bearbeiten</h2><br>";
  $table = 'poll';
  $ID = (isset($ID)) ? abs((int)$ID) : 0;
  $limit = 6;
  $resultID = mysql_query("SELECT COUNT(ID) FROM ".$table);
  $total = mysql_result($resultID,0);
  $ID = ($ID >= $total) ? $total - $limit : $ID;
  $query = "SELECT ID,Frage FROM ".$table." ORDER BY ID DESC LIMIT ".$ID.",".$limit;
  $resultID = mysql_query($query);
  while ($data = mysql_fetch_array($resultID)) {
         echo "<font color=\"blue\">ID-Nummer: </font>";
         echo "<font color=\"red\"><b>";
         echo $data['ID'];
         echo "</b></font><br>";
         echo "<font color=\"blue\">Frage: </font>";
         echo "<font color=\"FF000\"><b>";
         echo $data['Frage'];
         echo "</b></font><br><hr>";
  }
  if($ID > 0) {
     $newID = ($ID - $limit < 0) ? 0 : ($ID-$limit);
     echo "<a href=".$_SERVER['PHP_SELF']."?section=admin&action=intern&acp_action=edit_poll&ID=".$newID.">&lt;&lt; zurück</a>&nbsp;&nbsp;";
  }
  if($ID + $limit < $total) {
     $newID = $ID + $limit;
     echo " <a href=".$_SERVER['PHP_SELF']."?section=admin&action=intern&acp_action=edit_poll&ID=".$newID.">vor &gt;&gt;</a>";
  }
  echo "<br><form name=\"updID\" action=\"index.php?section=admin&action=intern&acp_action=8gr_420g348&acp_status=poll_upd_selected\" method=\"POST\">";
  echo "<br>Bitte wählen sie die ID-Nummer des Polls aus, den sie bearbeiten wollen: <br>";
  echo "<input type=\"text\" name=\"upd_id\" size=\"4\"><br><br>";
  echo "<font face=\"Verdana\" size=\"2\"><a href=\"index.php?section=admin&action=intern&acp_action=8gr_420g348&acp_status=poll_upd_selected\" onclick=\"window.document.forms['updID'].submit(); return false;\" style=\"text-decoration: none\"><font color=\"black\">Bearbeiten</font></a><br>";
  echo "</form>";
?>

alles wie es sein soll, dann die Seite zum Sachen ändern:

PHP:
<?php
    if(!isset($_POST['upd_id'])) {
        die("Acess not allowed. Please use our formular.");
    }
    if(trim($_POST['upd_id']) == "") {
     die("Bitte geben sie eine ID-Nummer an.");
    }
    if(isset($_POST['upd_id'])) {
       $ID = $_POST['upd_id'];
       echo "<form name=\"updPoll\" action=\"index.php?section=admin&action=intern&acp_action=8gr_420g348&acp_status=poll_updated\" method=\"POST\">";
       $sql = "SELECT
                   Frage,
                   Datum
             FROM
                   poll
             WHERE
                   ID = '$ID'";
     $exists = mysql_query($sql) OR die(mysql_error());
     while($data = mysql_fetch_array($exists)) {
           $Frage = $data['Frage'];
           echo "Frage: <input type=\"text\" name=\"updFrage\" size=\"30\" value=\"$Frage\"><br><br>";
     }
     $sqltwo = mysql_query("SELECT
                   Antwort,
                   Klicks
             FROM
                   poll_antworten
             WHERE
                   PollID = '$ID'");
     $sum = mysql_query("SELECT COUNT(Antwort) AS Antwort FROM poll_antworten WHERE ID = '".$ID."'");
     $curr_a = mysql_query("SELECT Antwort FROM poll_antworten WHERE PollID = '".$ID."'");
     $get_sum = mysql_fetch_array($sum);
     $a_sum = $get_sum['Antwort'];
     $a_sum;
     $an = array();
     $aID = 1;
     while($row = mysql_fetch_array($curr_a)) {
                 $value = $row['Antwort'];
                 echo "Antwort ".$aID.": <input type=\"text\" name=\"an[$a_sum]\" value=\"$value\" size=\"40\"><br>";
                 $aID++;
                 $a_sum++;
     }
     $sum = mysql_query("SELECT COUNT(Antwort) AS Antwort FROM poll_antworten WHERE ID = '".$ID."'");
     $get_sum = mysql_fetch_array($sum);
     $a_sum = $get_sum['Antwort'];
     echo "<input type=\"hidden\" name=\"a_sum\" value=\"$a_sum\">";
     echo "<input type=\"hidden\" name=\"selectedID\" value=\"$ID\"><br><br>";
     echo "<font face=\"Verdana\" size=\"2\"><a href=\"index.php?section=admin&action=intern&acp_action=8gr_420g348&acp_status=poll_updated\" onclick=\"window.document.forms['updPoll'].submit(); return false;\" style=\"text-decoration: none\"><font color=\"black\">Ändern</font></a><br></form>";
     }
?>

denke eigentlich dort müsste alles stimmen, hab mich ziemlich an die Erklärung mit den Arrays usw. von won_gak gehalten

dann das Update-Script:

PHP:
<?php
  $sum = $_POST['a_sum'];
  $ID = $_POST['selectedID'];
  $frage = $_POST['updFrage'];
  $an = $_POST["an"];
  while($sum > 0) {
          while($sum > 0) {
                $sql = "UPDATE
                              poll_antworten
                        SET
                              Antwort = '$an[$sum]'
                        WHERE
                              PollID = '$ID'";
                mysql_query($sql) OR die(mysql_error());
          }
  }
  $asql = "UPDATE
                 poll
           SET
                 Frage = '$frage'
           WHERE
                 ID = '$ID'";
  mysql_query($asql) OR die(mysql_error());
?>

und ehrlich gesagt hab ich keine Ahnung was da falsch ist O_O, es kommt auch kein mysql_error und die Frage wird geupdatet nur die Antworten nicht. Hoffe ihr könnt mir wieder einmal helfen -.-'

mfg
unlord
 
Zurück