• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Erneutes Problem mit admin_poll

Status
Für weitere Antworten geschlossen.

FleyerShaver

Neues Mitglied
Ich haben folgendes tutorial gemacht http://tut.php-q.net/login-poll.html.
Ich habe von Anfang an alles durchgearbeitet bis hier. Ich bekomm den QT einfach nicht zusammen. Mein QT sieht jetzt so aus:
PHP:
<?php
$rights = getRights();
if(!in_array("Admin", $rights)) {
no_rights();
} else {
switch(isset($_GET['action'])?$_GET['action']:'') {
case "add":
$sql = "SELECT
COUNT(*) AS Anzahl
FROM
poll
WHERE
DATE_ADD(Datum,INTERVAL 7 DAY) > NOW();";
$check = new Query($sql);
if($check->error()) {
die("<pre>".$check->geterror()."</pre>");
}
$row = $check->fetch();
if($row['Anzahl']) {
echo "<p class=\"error\">\n";
echo " Es läuft bereits eine Abstimmung, warten sie\n";
echo " bitte diese beendet ist.\n";
echo "</p>\n";
back2admin();
} else {
if(!isset($_SESSION['Frage'])) {
$_SESSION['Frage'] = "";
}
if(!isset($_SESSION['Antworten'])) {
$_SESSION['Antworten'] = array();
}
switch(isset($_POST['submit'])?$_POST['submit']:'') {
default:
if(isset($_POST['submit']) AND "Frage speichern" == $_POST['submit']) {
$_SESSION['Frage'] = htmlspecialchars(trim($_POST['frage'])) 
if(isset($_POST['submit']) AND "Antwort hinzufügen" == $_POST['submit']) {
$_SESSION['Antworten'][] = htmlspecialchars(trim($_POST['antwort']));
}
if(isset($_POST['submit']) AND "Löschen" == $_POST['submit']) {
if(isset($_POST['antworten'])) {
foreach($_POST['antworten'] as $value) {
unset($_SESSION['Antworten'][$value]);
}
$_SESSION['Antworten'] = array_values($_SESSION['Antworten']);
// lücken im Array schließen.
}
}
if(isset($_POST['submit']) AND "Poll hinzufügen" == $_POST['submit']) {
if(count($_SESSION['Antworten']) >= 2) {
$sql = "INSERT INTO
poll(Frage,Datum)
VALUES
('".addslashes($_SESSION['Frage'])."',
NOW());";
$poll = new Query($sql);
if($poll->error()) {
die("<pre>".$poll->getError()."</pre>\n");
}
unset($poll);
// nun muss ich die ID holen, damit ich die
// antworten hinzufügen kann
$sql = "SELECT
ID
FROM
poll
ORDER BY
Datum DESC
LIMIT
1;";
$getid = new Query($sql);
if($getid->error()) {
die("<pre>".$getid->getError()."</pre>\n");
}
$row = $getid->fetch();
$PollID = $row['ID'];
$getid->free();
unset($getid);
// und nun die Antworten hinzufügen, und die Klickcounter
// auf 0 setzen.
foreach($_SESSION['Antworten'] as $antwort) {
$sql = "INSERT INTO
poll_antworten(PollID,Antwort,Klicks)
VALUES
('".$PollID."',
'".$antwort."',
'0');";
$ansqry = new Query($sql);
if($ansqry->error()) {
die("<pre>".$ansqry->getError()."</pre>\n");
}
unset($ansqry);
}
echo "<p>\n";
echo " Poll wurde hinzugefügt.\n";
echo "</p>\n";
back2admin();
break;
// wir wollen nicht die If-Abfrage verlassen, was ja gar nicht
// geht, sondern die switch-Abfrage, da wir das Hauptformular
// nicht mehr brauchen.
} else {
echo "<p>\n";
echo " Bitte fügen sie mindestesn 2 Antworten hinzu.";
echo "</p>\n";
}
}
echo "<form action=\"index.php?section=admin&amp;site=poll&amp;action=add\"";
echo " method=\"post\"";
echo " class=\"formular\">\n";
echo " <p>\n";
echo " Neuen Poll hinzufügen\n";
echo " </p>\n";
echo " <ol>\n";
echo " <li>\n";
echo " Frage\n";
echo " <ul>\n";
echo " <li>\n";
echo $_SESSION['Frage']."\n";
echo " </li>\n";
echo " <li>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Frage bearbeiten\" />\n";
echo " </li>\n";
echo " </ul>\n";
echo " </li>\n";
echo " <li>\n";
echo " Antworten\n";
echo " <ul>\n";
if(count($_SESSION['Antworten'])) {
foreach($_SESSION['Antworten'] as $key => $value) {
echo "<li>\n";
echo "<input type=\"chechbox\" ";
echo " name=\"antworten[]\" ";
echo " value=\"".$key."\" />\n";
echo $value."\n";
echo "</li>\n";
}
}
echo " <li>\n";
echo "<input type=\"submit\" name=\"submit\"";
echo " value=\"Neue Antwort hinzufügen\" />\n";
if(count($_SESSION['Antworten'])) {
echo "<input type=\"submit\" name=\"submit\"";
echo " value=\"Löschen\" />\n";
}
echo " </li>\n";
echo " </ul>\n";
echo " </li>\n";
echo " <li>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Poll hinzufügen\" />\n";
echo "<input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
echo "<input type=\"hidden\" name=\"".session_name()."\"";
echo " value=\"".session_id()."\" />";
echo " </li>\n";
echo " <ol>\n";
echo "</form>\n";
break;
 
case 'Frage bearbeiten':
echo "<form action=\"index.php?section=admin&amp;site=poll&amp;action=add\" ";
echo " method=\"post\"";
echo " class=\"formular\">\n";
echo " <p>\n";
echo " Frage bearbeiten.\n";
echo " </p>\n";
echo " <ol>\n";
echo " <li>\n";
echo " <label for=\"frage\">Frage</label>\n";
echo " <input type=\"text\" name=\"frage\"";
echo " id=\"name\" value=\"".$_SESSION['Frage']."\" />\n";
echo " </li>\n";
echo " <li>\n";
echo " <input type=\"submit\" name=\"submit\"";
echo " value=\"Frage speichern\" />\n";
echo " <input type=\"hidden\" name=\"".session_name()."\"";
echo " value=\"".session_id()."\" />";
echo " </li>\n";
echo " </ol>\n";
echo "</form>\n";
back2admin();
break;
 
case 'Neue Antwort hinzufügen':
echo "<form action=\"index.php?section=admin&amp;site=poll&amp;action=add\" ";
echo " method=\"post\"";
echo " class=\"formular\">\n";
echo " <p>\n";
echo " Antwort hinzufügen\n";
echo " </p>\n";
echo " <ol>\n";
echo " <li>\n";
echo " <label for=\"antwort\">Antwort</label>\n";
echo " <input type=\"text\" name=\"antwort\"";
echo " id=\"antwort\" />\n";
echo " </li>\n";
echo " <li>\n";
echo " <input type=\"submit\" name=\"submit\"";
echo " value=\"Antwort hinzufügen\" />\n";
echo " <input type=\"hidden\" name=\"".session_name()."\"";
echo " value=\"".session_id()."\" />";
echo " </li>\n";
echo " </ol>\n";
echo "</form>\n";
break; 
}
}
$check->free();
unset($check);
break;
 
case "edit":
...
?>
Was mach ich falsch.
 
Hier der Teil nach ... sry für Doubelpost man darf aber nur 10000 Zeichen benutzen.
PHP:
if(!isset($_SESSION['ID'])) {
$_SESSION['ID'] = 0;
} switch(@$_POST['submit']) {
case "Poll auswählen":
if(isset($_POST['PollID']) AND $_POST['PollID']) {
$sql = "SELECT
COUNT(*) as Anzahl
FROM
poll
WHERE
ID = '".addslashes($_POST['PollID'])."';";
$check = new Query($sql);
if($check->error()) {
die("<pre>".$check-getError()."</pre>\n");
}
$row = $check->fetch();
if($row['Anzahl']) {
$_SESSION['ID'] = $_POST['PollID'];
} else {
echo "<p>\n";
echo " Bitte wählen sie einen gültigen Poll aus.\n";
echo "</p>\n";
}
} else {
echo "<p>\n";
echo " Bitte wählen sie einen Poll aus\n";
echo "</pre>\n";
}
default:
if($_SESSION['ID']) {
// Zeige Formular
} else {
echo "<form action=\"index.php?section=admin&amp;site=poll&amp;action=edit\"";
echo " method=\"post\"";
echo " class=\"formular\">\n";
echo " <p>\n";
echo " </p>\n";
echo " Abstimmung auswählen.\n";
echo " <p>\n";
echo " <ol>n";
echo " <li>\n";
echo " <label for=\"pollid\">Poll</label>\n";
$sql = "SELECT
ID,
Frage,
Datum
FROM
poll
ORDER BY
Datum DESC;";
$polls = new Query($sql);
if($polls->error()) {
die("<pre>".$polls->getError()."</pre>\n");
}
echo "<select id=\"pollid\" name=\"PollID\">\n";
echo " <option value=\"0\">Bitte einen Poll wählen</option>\n";
while($row = $polls->fetch()) {
echo " <option value=\"".$row['ID']."\">\n";
echo $row['Frage']."(".$row['Datum'].")\n";
echo " </option\n";
}
echo "</select>\n";
echo " </li>\n";
echo " <li>\n";
echo " <input type=\"submit\"";
echo " name=\"submit\"";
echo " value=\"Poll auswählen\" />\n";
echo " <input type=\"reset\"";
echo " name=\"submit\"";
echo " value=\"Zurücksetzen\" />\n";
echo " <input type=\"hidden\"";
echo " name=\"".session_name()."\"";
echo " value=\"".session_id()."\" />\n";
// Wegen dem Tutorial umgebrochen
echo " </li>\n";
echo " </ol>\n";
echo "</form>\n";
}
break;
}
break;
if($_SESSION['ID']) {
$sql = "SELECT
Frage
FROM
poll
WHERE
ID = '".$_SESSION['ID']."';";
$daten = new Query($sql);
if($daten->error()) {
die("<pre>".$daten->getError()."</pre>\n");
}
$row = $daten->fetch();
$daten->free();
unset($daten);
$frage = $row['Frage'];
// Die Frage zum Poll geholt.
$sql = "SELECT
ID,
Antwort
FROM
poll_antworten
WHERE
PollID = '".$_SESSION['ID']."';";
$ansqry = new Query($sql);
if($ansqry->error()) {
die("<pre>".$ansqry->getError()."</pre>\n");
}
$antworten = array();
while($row = $ansqry->fetch()) {
$antworten[$row['ID']] = $row['Antwort'];
}
$ansqry->free();
unset($ansqry);
// Alle antworten geholt
echo "<form action=\"index.php?section=admin&amp;site=poll&amp;action=edit\"";
echo " method=\"post\"";
echo " class=\"formular\">\n";
echo " <p>\n";
echo " Abstimmung bearbeiten\n";
echo " </p>\n";
echo " <ol>\n";
echo " <li>\n";
echo " <label for="frage">Frage</label>\n";
echo " <input type=\"text\" name=\"Frage\"";
echo " id=\"frage\" value=\"".$frage."\"/>\n";
echo " </li>\n";
echo " <li>\n";
echo " Antworten\n";
echo " <ol>\n";
foreach($antworten as $key => $value) {
echo " <li>\n";
echo " <label for=\"Antwort_".$key."\">\n";
echo " Antwort\n";
echo " </label>\n";
echo " <input type=\"text\" name=\"Antwort[".$key."]\"";
echo " value=\"".$value."\" id=\"Antwort_".$key."\" />\n";
echo " </li>\n";
}
echo " </ol>\n";
echo " </li>\n";
echo " <li>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Änderungen abspeichern\" />\n";
echo "<input type=\"reset\" name=\"submit\" value=\"Zurücksetzen\" />\n";
echo "<input type=\"hidden\" name=\"".session_name()."\" value=\"".session_id()."\" />\n";
echo " </li>\n";
echo " </ol>\n";
echo "</form>\n";
back2admin();
}
case 'Änderungen abspeichern':
if($_SESSION['ID']) {
// Sicher ist sicher
// als erstes speichern wir die Frage.
$sql = "UPDATE
poll
SET
Frage = '".addslashes($_POST['Frage'])."'
WHERE
ID = '".$_SESSION['ID']."';";
$updfrg = new Query($sql);
if($updfrg->error()) {
die("<pre>".$updfrg->getError()."</pre>\n");
}
unset($updfrg);
// nun die AntwortAen
foreach($_POST['Antworten'] as $key => $value) {
$sql = "UPDATE
poll_antworten
SET
Antwort = '".addslashes($value)."'
WHERE
ID = '".$key."' AND
PollID = '".$_SESSION['ID']."';";
$updant = new Query($sql);
if($updant->error()) {
die("<pre>".$updant->getError()."</pre>\n");
}
unset($updant);
}
echo "<p>\n";
echo " Die Änderungen wurden gespeichert.";
echo "</p>\n";
} else {
echo "<p>\n";
echo " Bitte benutzen sie ein Formular aus dem Adminbereich.\n";
echo "</p>\n";
}
break;
case "del":
if(isset($_POST['submit']) AND "Poll löschen" == $_POST['submit']) {
if($_POST['PollID']) {
$sql = "DELETE FROM
poll_antworten
WHERE
PollID = '".$_POST['PollID']."';";
$delant = new Query($sql);
if($delant->error()) {
die("<pre>".$delant->getError()."</pre>\n");
}
unset($delant);
$sql = "DELETE FROM
poll
WHERE
ID = '".$_POST['PollID']."';";
$delfrg = new Query($sql);
if($delfrg->error()) {
die("<pre>".$delfrg->getError()."</pre>\n");
}
unset($delfrg);
echo "<p>\n";
echo " Der Poll wurde gelöscht\n";
echo "</p>\n";
back2admin();
} else {
echo "<p>\n";
echo " Bitte wählen sie einen gültigen Poll aus.\n";
echo "</p>\n";
back2admin();
}
} else {
echo "<form action=\"index.php?section=admin&amp;site=poll&amp;action=del\"";
echo " method=\"post\"";
echo " class=\"formular\">\n";
echo " <p>\n";
echo " Abstimmung löschen.\n";
echo " </p>\n";
echo " <ol>\n";
echo " <li>\n";
echo " <label for=\"pollid\">Poll</label>\n";
$sql = "SELECT
ID,
Frage,
Datum
FROM
poll
ORDER BY
Datum DESC;";
$polls = new Query($sql);
if($polls->error()) {
die("<pre>".$polls->getError()."</pre>\n");
}
echo "<select id=\"pollid\" name=\"PollID\">\n";
echo " <option value=\"0\">Bitte einen Poll wählen</option>\n";
while($row = $polls->fetch()) {
echo " <option value=\"".$row['ID']."\">\n";
echo $row['Frage']."(".$row['Datum'].")\n";
echo " </option\n";
}
echo "</select>\n";
echo " </li>\n";
echo " <li>\n";
echo " <input type=\"submit\"";
echo " name=\"submit\"";
echo " value=\"Poll löschen\" />\n";
echo " <input type=\"reset\"";
echo " name=\"submit\"";
echo " value=\"Zurücksetzen\" />\n";
echo " <input type=\"hidden\"";
echo " name=\"".session_name()."\"";
echo " value=\"".session_id()."\" />\n";
echo " </li>\n";
echo " </ol>\n";
echo "</form>\n";
}
break;
default:
echo "<p>\n";
echo " Bitte benutzen sie nur einen Link aus dem Adminmenu.\n";
echo "</p>\n";
back2admin();
break;
}
}
 
VORSICHT!
--> codemassen begraben uns!

schonmal was von debuggen gehört?

--> mysql_error
--> var_dump

nutzt auch sehr viel, den code zu kopieren, als ihn selber für sich nochmal zu schreiben, oder wenigstens durchzuarbeiten.

Nils aka XraYSoLo
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben