ERLEDIGT
NEIN
NEIN
ANTWORTEN
14
14
ZUGRIFFE
679
679
EMPFEHLEN
-
Aaaalsssooo:
Ich hab mir bis jetzt folgendes aufgebaut:
Ein Formular:
Eine Seite zum eingeben der Antworten:PHP-Code:<?php
if(!isset($_SESSION['admin'])) {
die("Acess denieded.");
} else {
echo "<h3>Neue Umfrage starten</h2>";
echo '<form name="addPoll" action="index.php?section=admin&action=intern&acp_action=8gr_420g348&acp_status=poll_add_answers" method="POST">';
echo 'Was wollen sie fragen: <input type="text" name="addPoll_question" size="40"><br>';
echo 'Wieviel Antworten soll es geben: <input type="text" name="addPoll_sum_answers" size="2"><br><br>';
echo "<font face=\"Verdana\" size=\"2\"><a href=\"index.php?section=admin&action=intern&acp_action=8gr_420g348&acp_status=poll_add_answers\" onclick=\"window.document.forms['addPoll'].submit(); return false;\" style=\"text-decoration: none\"><font color=\"black\">Antworten eingeben</font></a><br></form>";
}
?>
Und dann das Script zum adden:PHP-Code:<?php
echo "<h2>Antworten eintragen</h2>";
$question = $_POST['addPoll_question'];
$answers = $_POST['addPoll_sum_answers'];
$answersID = 1;
echo "<form action=\"index.php?section=admin&action=intern&acp_action=8gr_420g348&acp_status=poll_added\" method=\"POST\">";
echo "Ihre Frage: ".$question."<br>";
while($answers > 0) {
echo "Antwort $answersID: <input type=\"text\" name=\"$answers\" size=\"40\"><br>";
$answers--;
$answersID++;
}
$answers = $_POST['addPoll_sum_answers'];
echo "<input type=\"hidden\" name=\"q\" value=\"$question\">";
echo "<input type=\"hidden\" name=\"a\" value=\"$answers\">";
echo "<input type=\"submit\"></form>";
?>
Diesen letzten INSERT INTO Befehl muss man wahrscheinlich innerhalb einer While-Schleife, ich weiß nur nicht wie. Wie kann ich jetzt die VALUES der Input-Felder von vorhin eintragen? Hoffe ihr könnt mir helfen. Wenn ihr etwas nicht versteht FRAGT BITTE.PHP-Code:<?php
$question = $_POST['q'];
$add_poll = "INSERT INTO poll ('Datum', 'Frage') VALUES ('NOW()', '".$question."')";
mysql_query($add_poll) OR die(mysql_error());
$sql_pollid = mysql_query("SELECT PollID FROM poll_antworten ORDER BY ID DESC LIMIT 0,1");
$get_pollid = mysql_fetch_array($sql_pollid);
$current_pollid = $get_pollid['PollID'];
$new_pollid = $current_pollid+1;
$add_answers = "INSERT INTO poll_antworten ('PollID', 'Antwort') VALUES ('".$new_pollid."')"; // jetzt komme ich nicht weiter
?>
mfg
unlord
-
So sollte es gehen, wenn ich dich richtig verstanden habe.PHP-Code:
<?php
$question = $_POST['q'];
$add_poll = "INSERT INTO poll ('Datum', 'Frage') VALUES ('NOW()', '".$question."')";
mysql_query($add_poll) OR die(mysql_error());
$sql_pollid = mysql_query("SELECT PollID FROM poll_antworten ORDER BY ID DESC LIMIT 0,1");
for ($i = 0; $i < mysql_num_rows ($sql_pollid); $i++)
{
$get_pollid = mysql_fetch_assoc($sql_pollid); //Assoziiertes Array, da du eine Zeile weiter ein assoziiertes Array verwendest
$current_pollid = $get_pollid['PollID'];
$new_pollid = $current_pollid+1;
$add_answers = "INSERT INTO poll_antworten ('PollID', 'Antwort') VALUES ('".$new_pollid."')"; // jetzt geht es weiter, aber $sql_pollid darf nicht verändert werden
}
?>~WonGak~
"And if there is a god, I know he likes to rock."
-
Nene, das habe ich nich gemeint, hab auch schlecht erklärt sry. Ich will zusätzlich zu der PollID Antworten einfügen, ich zeige hier mal mein Tabellenaufbau:
poll: ID(INT);Frage;Datum
poll_antworten: ID(INT);PollID(INT, hier wird die ID des polls angegeben, für den die Fragen sind); Antwort; Klicks
So... jetzt habe ich PollID (mein Script zu der PollID funtzt nämlich auch); Klicks bleibt auf 0 und ID is auto_incr, fehlen also nur noch die Antworten...
Ich habe die Antworten ja am Anfang mit einer While-Schleife bestimmt:
Wie kann ich jetzt wieder den Wert dieser Input-Felder auslesen und dann für INSERT INTO verweden. Vielleicht hilft euch mein kläglicher Versuch, es besser zu verstehenPHP-Code:while($answers > 0) {
echo "Antwort $answersID: <input type=\"text\" name=\"$answers\" size=\"40\"><br>";
$answers--;
$answersID++;
}
:
Hierbei werden, was ja auch logisch ist, nicht etwa die Werte der Input-Felder eingetragen, sondern die namen der Input-Felder. Hoffe konnte es dir nun besser erklären. Wenn jemand eine bessere Lösung für ein ACP-Script adden hat, lasse ich mich gerne überraschen, es muss nur in mein Konzept mit den 2 Tabellen passen. (sonst kann man nämlich nicht beliebig viele Antworten erstellen)PHP-Code:<?php
$question = $_POST['q'];
$add_poll = "INSERT INTO poll (Datum,Frage) VALUES (NOW(), '".$question."')";
mysql_query($add_poll) OR die(mysql_error());
$sql_pollid = mysql_query("SELECT PollID FROM poll_antworten ORDER BY ID DESC LIMIT 0,1");
$get_pollid = mysql_fetch_array($sql_pollid);
$current_pollid = $get_pollid['PollID'];
$new_pollid = $current_pollid+1;
$answers = $_POST['a'];
while($answers > 0) {
$sql = "INSERT INTO poll_antworten (PollID, Antwort) VALUES ('".$new_pollid."', '".$answers."')";
mysql_query($sql) OR die(mysql_error());
$answers--;
}
?>
mfg
unlord
-
Speicher erstmal alle Antworten in ein Array. Das mit dem an[$answers] als name macht es.PHP-Code:
while($answers > 0) {
echo "Antwort $answersID: <input type=\"text\" name=\"an[$answers]\" size=\"40\"><br>";
$answers--;
$answersID++;
}
PHP-Code:<?php
$question = $_POST['q'];
$add_poll = "INSERT INTO poll (Datum,Frage) VALUES (NOW(), '".$question."')";
mysql_query($add_poll) OR die(mysql_error());
$sql_pollid = mysql_query("SELECT PollID FROM poll_antworten ORDER BY ID DESC LIMIT 0,1");
$get_pollid = mysql_fetch_array($sql_pollid);
$current_pollid = $get_pollid['PollID'];
$new_pollid = $current_pollid+1;
$answers = $_POST['a'];
$an = $_POST["an"]; //Hier
while($answers > 0) {
$sql = "INSERT INTO poll_antworten (PollID, Antwort) VALUES ('".$new_pollid."', '".$an[$answers]."')"; // und hier
mysql_query($sql) OR die(mysql_error());
$answers--;
}
?>~WonGak~
"And if there is a god, I know he likes to rock."
-
Ok, geht
Aber jetzt hab ich wieder Probleme mit dem Poll an sich -.-
mfg
unlordGeändert von unlord (10.02.04 um 20:14 Uhr)
-
Also erstmal danke @ won_gak geht jetzt
Aber jetzt.... das hier ist mein doppelvote blocker:
So... der aktuelle Vote hat die ID 9, das steht auch bei poll_user bei dem user unlord, mit dem ich gerade eingeloggt bin. Aber es kommt nicht die Meldung "Sie haben bereits am Vote teilgenommen" sondern ich kann imer wieder voten. Ich wüsste nur zu gern warum O_OPHP-Code:echo "<br>Insgesamt haben ".$pro_gesamt." User an der Umfrage teilgenommen.<br><br>";
$cuser = $_SESSION['user'];
$getpollid = mysql_query("SELECT ID FROM poll ORDER BY ID DESC LIMIT 0,1");
$getpid = mysql_fetch_array($getpollid);
$pollid = $getpid['ID'];
$checkpoll = mysql_query("SELECT Poll FROM poll_user WHERE Poll = '".$pollid."'");
$checkuser = mysql_query("SELECT user FROM poll_user WHERE user = '".$cuser."'");
$fcuser = mysql_num_rows($checkuser);
$fcpoll = mysql_num_rows($checkpoll);
if($fcuser == '1' AND $fcpoll == '1') {
echo "Sie haben bereits am Vote teilgenommen.";
} else {
echo "<br><form action=\"index.php?section=poll&action=vote\" method=\"POST\">";
$apollsql = mysql_query("SELECT ID,PollID,Antwort,Klicks FROM poll_antworten WHERE PollID = '".$pollID."'");
$getpollid = mysql_query("SELECT ID FROM poll ORDER BY ID DESC LIMIT 0,1");
$getpid = mysql_fetch_array($getpollid);
$pollid = $getpid['ID'];
while($data = mysql_fetch_array($apollsql)) {
$id = $data['ID'];
echo "".$data['Antwort'].": <input type=\"radio\" name=\"$pollid\" value=\"$id\"><br>";
}
echo "<br><input type=\"submit\" value=\"Voten\"></form>";
}
mfg
unlordGeändert von unlord (10.02.04 um 20:40 Uhr)
-
PHP-Code:
$getpid = mysql_fetch_assoc($getpollid); // du musst assoc nehmen um ein assoziiertes Array zu bekommen
$pollid = $getpid['ID'];
~WonGak~
"And if there is a god, I know he likes to rock."
-
So geht es auch nicht:
Was mich vor allem wunder ist, dass es vorher schon einmal genau so ging. Ich habe nämlich dieses Pollscript schon vor ein paar Tagen gemacht, nur ohne Add-Script und da ging es Und ich glaube nicht, dass es an assoc liegt, weil ich immer array verwende... und wie gesagt mit deiner Methode gehts ja leider auch nichtPHP-Code:echo "<br>Insgesamt haben ".$pro_gesamt." User an der Umfrage teilgenommen.<br><br>";
$cuser = $_SESSION['user'];
$getpollid = mysql_query("SELECT ID FROM poll ORDER BY ID DESC LIMIT 0,1");
$getpid = mysql_fetch_assoc($getpollid);
$pollid = $getpid['ID'];
$checkpoll = mysql_query("SELECT Poll FROM poll_user WHERE Poll = '".$pollid."'");
$checkuser = mysql_query("SELECT user FROM poll_user WHERE user = '".$cuser."'");
$fcpoll = mysql_num_rows($checkpoll);
$fcuser = mysql_num_rows($checkuser);
if($fcpoll == $pollid AND $fcuser == $cuser) {
echo "Sie haben bereits am Vote teilgenommen.";
mfg
unlord
-
Da scheint glaub ich ein logischer Fehler drinzustecken. Du willst doch nachsehen ob in poll_user ein User drin ist, der bei einem Poll bereits teilgenommen hat.
Also:
[Oder nimm mal diese Funktionen:PHP-Code:echo "<br>Insgesamt haben ".$pro_gesamt." User an der Umfrage teilgenommen.<br><br>";
$cuser = $_SESSION['user'];
$getpollid = mysql_query("SELECT ID FROM poll ORDER BY ID DESC LIMIT 0,1");
$getpid = mysql_fetch_assoc($getpollid);
$pollid = $getpid['ID'];
$checkpoll = mysql_query("SELECT Poll FROM poll_user WHERE Poll = '".$pollid."' AND user = '" . $cuser . "'");
$fcpoll = mysql_num_rows($checkpoll);
if($fcpoll == 1) {
echo "Sie haben bereits am Vote teilgenommen.";
PHP-Code:/*
VOID function set_session_lock ($check)
.......................................
Diese Funktion speichert die IP zusammen mit der Variablen $check. Wird verwendet um IP-Sperren einzurichten.
Siehe: check_session_lock ($check)
*/
function set_session_lock ($check)
{
global $tables_prefix;
snd_query ("INSERT INTO " . $tables_prefix . "_session_locks (sess_id, proof, timestamp) VALUES ('" . $_SERVER[REMOTE_ADDR] . "', '$check', " . time () . ")");
}
/*
BOOL function check_session_lock ($check, $t = 86400)
.....................................................
Pendant zu set_session_lock ($check). Diese Funktion überprüft, ob es zu einem $check und der IP-Adresse einen Eintrag gibt.
Falls Ja: => FALSE
Falls Nein: => TRUE
$t gibt das Zeintintervall an, nachdem alte Einträge gelöscht werden. Standard sind 24 Stunden.
*/
function check_session_lock ($check, $t = 86400)
{
$query = "DELETE FROM " . $tables_prefix . "_session_locks WHERE " . time () . " - timestamp > $t";
$q = mysql_query ($query) or die ("Error while removing old lock! <br>query: $query<br>" . mysql_error ());
$foo = give_ret ("_session_locks", "WHERE proof = '$check' AND sess_id = '" . $_SERVER[REMOTE_ADDR] . "'");
if (count ($foo) > 0)
{
return FALSE;
} else {
return TRUE;
}
}
~WonGak~
"And if there is a god, I know he likes to rock."
-
Okay die erste Version funtzt auf jeden Fall
nur... ich seh irgendwie nich den unterschied zwischen:undPHP-Code:$checkpoll = mysql_query("SELECT Poll FROM poll_user WHERE Poll = '".$pollid."' AND user = '" . $cuser . "'");
$fcpoll = mysql_num_rows($checkpoll);
if($fcpoll == 1) {
echo "Sie haben bereits am Vote teilgenommen.";
... läuft das nicht irgendwie aufs selbe raus, vor allem hatte es ja schon mal so funktioniert O_O!? Naja egal, Hauptsache es gehtPHP-Code:$checkpoll = mysql_query("SELECT Poll FROM poll_user WHERE Poll = '".$pollid."'");
$checkuser = mysql_query("SELECT Poll FROM poll_user WHERE user = '" . $cuser . "'");
$fcpoll = mysql_num_rows($checkpoll);
$fcuser = mysql_num_rows($checkuser);
if($fcpoll == 1 AND $fcuser == 1) {
echo "Sie haben bereits am Vote teilgenommen.";
mfg
unlord
-
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
-
11.02.04 14:34 #12
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.~WonGak~
"And if there is a god, I know he likes to rock."
-
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:
alles wie es sein soll, dann die Seite zum Sachen ändern:PHP-Code:<?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."><< zurück</a> ";
}
if($ID + $limit < $total) {
$newID = $ID + $limit;
echo " <a href=".$_SERVER['PHP_SELF']."?section=admin&action=intern&acp_action=edit_poll&ID=".$newID.">vor >></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>";
?>
denke eigentlich dort müsste alles stimmen, hab mich ziemlich an die Erklärung mit den Arrays usw. von won_gak gehaltenPHP-Code:<?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>";
}
?>
dann das Update-Script:
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 -.-'PHP-Code:<?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());
?>
mfg
unlord
-
Kann mir keiner helfen
mfg
unlord
Ähnliche Themen
-
Polls Einbindung fehlerhaft
Von bertonex19 im Forum PHPAntworten: 3Letzter Beitrag: 13.09.08, 21:00 -
Fedora-core4 shell script smb & ftp User adden
Von el loco mO im Forum Linux & UnixAntworten: 5Letzter Beitrag: 20.04.06, 13:17 -
[DRINGEND] Script zum editieren von Polls
Von unlord im Forum PHPAntworten: 16Letzter Beitrag: 12.03.04, 23:28 -
tutorial zur erstellung eines polls ?
Von blubber im Forum PHPAntworten: 4Letzter Beitrag: 03.03.02, 12:46 -
Funktion eines Forums / Polls
Von cardex im Forum PHPAntworten: 2Letzter Beitrag: 22.02.02, 14:20





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren