Internal Server Error beim Poll ScriptForum » Tutorials » Help » Internal Server Error beim Poll Script
-
12.04.2012 um 00:50 Uhr
Hi Alice,
ich habe versucht das Poll Script in meine Homepage einzubauen. Anfangs hat es auch problemlos geklappt, allerdings bekomme ich prompt den Fehler vom Browser angezeigt
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log.
sobald ich in einer Umfrage etwas abgestimmt habe. Ich vermute, dass der Fehler irgendwo bei "function show_ergebnis($id)" liegt, weil "function abstimmen($poll_id)" geklappt hat. Sobald ich auch die Zeile 80 in der poll.php "show_ergebnis($id); // Auswertung anzeigen" entferne, wird mir die index.php ganz normal angezeigt (allerdings natrlich ohne Auswertung).
Ich habe brigens lediglich die Tabellennamen gendert und ich msste sie eigentlich berall angepasst haben...
Funktioniert das Script unter PHP5?
Vielen Dank fr den guten Support, Alice.
Liebe Gre
Steffi
-
12.04.2012 um 01:08 Uhr
Hallo Steffi,
das Script laeuft auch unter PHP 5, wenn man mal von ein paar Notices all Notice: Undefined index: absieht, wobei man die ja ausblenden lassen kann, die stoeren ja nicht die Funktion des Scriptes.
Ich hatte mir auch grad noch mal die Dateien aus dem Tutorial heruntergeladen, wenn du es so nutzt wie es dort ist muesste rein theoretisch alles funktionieren, auch unter PHP5.
Mhh, funktionierte es denn reibungslos bevor du die Tabellennamen geaendert hattest?
Liebe Gruesse
Alice
... { signatur } ... -
12.04.2012 um 01:26 Uhr
Hallo,
erstmal danke fr die rasche Antwort.
Also ich habe die Tabellennamen mal wieder umbenannt und die original Dateien hochgeladen, leider mit demselben Ergebnis. Knntest du das Script eventuell mal auf deinem Server testen?
Ansonsten werde ich mal meinen Hoster fragen, der kann ja einen Blick ins Error Log werfen...
Liebe Gre
Steffi
-
12.04.2012 um 21:24 Uhr
Hallo Steffi,
ich kann den 500er Error nicht nachvollziehen.
Hab das Script bei mir auf den Server geladen und lasse es unter PHP 5.3 laufen - funktioniert...
Kannst du gerne selbst testen: http://unnecessary.de/grafixx_poll/index.php53
Was spricht denn der Errorlog?
Liebe Gruesse
Alice... { signatur } ... -
14.04.2012 um 12:11 Uhr
Hmmm, mein hoster meint, dass es ein Problem beim Eintrag in die Datenbank gibt.
Das sagt der error log:
Access denied with code 500 (phase 4). Pattern match "(?:\b(??:s(?:elect list because it is not contained in (?:an aggregate function and there is no|either an aggregate function or the) GROUP BY clause|upplied argument is not a valid (??:M(?:S |y)|Postgre)SQL|O(?:racle|DBC)))|S(?:yntax error converti ..." at RESPONSE_BODY. [file "/etc/apache2/security/modsecurity_crs_50_outbound.conf"] [line "23"] [id "970003"] [msg "SQL Information Leakage"] [severity "WARNING"] [tag "LEAKAGE/ERRORS"]
-
15.04.2012 um 23:08 Uhr
Hmm, hab gerade nochmal in den Code geguckt, aber keine Ahnung warum's nicht geht.
Weit du eventuell weiter?
-
16.04.2012 um 00:08 Uhr
Aehm ja ...
Versuch mal in der Datei poll.php die DB Abfrage der function show_ergebnis
$umfrage = mysql_query("SELECT a.frage, SUM(b.stimmen) AS total FROM grafixx_poll a INNER JOIN grafixx_antworten b ON a.id = b.poll_id WHERE a.id = '$id'");
durch diese hier zu ersetzten:
$umfrage = mysql_query("SELECT frage, SUM(stimmen) AS total FROM grafixx_poll INNER JOIN grafixx_antworten ON grafixx_poll.id = grafixx_antworten.poll_id WHERE grafixx_poll.id = '$id'");
Und schau mal ob es dann funktioniert ...
Liebe Gruesse
Alice... { signatur } ... -
16.04.2012 um 21:43 Uhr
Hat leider nichts gebracht. Das Problem liegt bei SUM(stimmen). Ich habe es jetzt so abgendert:
function show_ergebnis($id){ // Abstimmungsergebnis anzeigen if(is_int($id)){ // Sofern ID uebergeben wurde und ID = Zahl // Frage auslesen => nur aktiver Umfragen | INNER JOIN => Anzahl aller abgegebenen Stimmen zaehlen $umfrage = mysql_query("SELECT frage, stimmen AS total FROM grafixx_poll INNER JOIN grafixx_antworten ON grafixx_poll.id = grafixx_antworten.poll_id WHERE grafixx_poll.id = '$id'"); $stimmen = mysql_query("SELECT SUM(stimmen) AS stimmenzahl FROM grafixx_poll INNER JOIN grafixx_antworten ON grafixx_poll.id = grafixx_antworten.poll_id WHERE grafixx_poll.id = '$id'"); $poll = mysql_fetch_object($umfrage); echo "<ul class=\"poll\">\n"; echo "<li><h2>".$poll->frage."</h2></li>\n"; // Frage ausgeben // Antworten auslesen $abfrage = mysql_query("SELECT antwort, stimmen FROM grafixx_antworten WHERE poll_id = '$id'"); $total = $poll->total; // Anzahl aller bisher abgegebener Stimmen while($row = mysql_fetch_object($abfrage)){ // Antworten ausgeben if($row->stimmen > 0){ // Prozent berechnen $prozent = round($row->stimmen * 100 / $total); }else{ $prozent = 0; } echo "<li><div class=\"rate\"><div style=\"width: ".$prozent."%;\" class=\"vote\"> </div>".$prozent."%</div>\n"; echo $row->antwort."</li>\n"; } $row = mysql_fetch_assoc($stimmen); $stimmenzahl = $row['stimmenzahl']; echo "</ul>\n <small>Anzahl abgegebener Stimmen: ".$stimmenzahl."</small>\n"; } // close id } // close function show_ergebnis
Habe eine seperate Abfrage hinzugefgt, die nur die Stimmen zhlt. Klappt alles problemlos!
EDIT: Ist es eigentlich nicht mglich 2 oder mehrere Umfragen auf einer Seite anzuzeigen? Da alle Forms denselben Namen "Abstimmen" haben, wird jede Umfrage ausgefhrt...
Der Beitrag wurde insgesamt 1 mal editiert, zuletzt 16.04.2012 um 22:44 Uhr ... -
17.04.2012 um 12:17 Uhr
Zitat von Steffi2012:
Habe eine seperate Abfrage hinzugefgt, die nur die Stimmen zhlt. Klappt alles problemlos!
Gerade die wollte ich ja mit dem Innerjoin eigentlich vermeiden ^^
Ich muss mir das noch mal genauer anschauen, warum das nicht funktioniert. Ich hab da grad keinen Kopf zu, wobei es ja auf meinen Servern problemlos funktioniert o.0
EDIT: Ist es eigentlich nicht mglich 2 oder mehrere Umfragen auf einer Seite anzuzeigen? Da alle Forms denselben Namen "Abstimmen" haben, wird jede Umfrage ausgefhrt...
Ersetzt die function show_poll durch diese hier, dann sollte es klappen...
function show_poll($id){ // Umfrage ausgeben if(is_int($id)){ // Pruefen ob $id = Zahl // Frage auslesen => nur aktiver Umfragen $umfrage = mysql_query("SELECT frage FROM grafixx_poll WHERE id = '$id' AND status = 'aktiv'"); $row = mysql_fetch_object($umfrage); $user_ip = $_SERVER['REMOTE_ADDR']; // IP // pruefen ob schon abgestimmt wurde => DB Abfragen $select = mysql_query("SELECT ip FROM grafixx_poll_ip WHERE poll_id = '$id' AND ip = '$user_ip'"); $check_ip = mysql_num_rows($select); if($check_ip > 0){ // Wenn schon abgestimmt wurde show_ergebnis($id); // Auswertung anzeigen }else{ // Wenn noch nicht abgestimmt wurde => Optionen anzeigen if(isset($_POST['abstimmen']) && ($_POST['gpoll_id'] == "$id")){ // Wenn Abstimmen gedrueckt abstimmen($id); // Abstimmen }else{ // Wenn nicht abstimmen gedrueckt // Formular ausgeben echo "<form action=\"\" method=\"post\">\n"; echo "<ul class=\"poll\">\n"; echo "<li><h2>".$row->frage."</h2></li>\n"; // Frage ausgeben // Antworten auslesen $abfrage = mysql_query("SELECT id, antwort FROM grafixx_antworten WHERE poll_id = '$id'"); while($row = mysql_fetch_object($abfrage)){ // Antworten ausgeben echo "<li><input type=\"radio\" name=\"vote\" value=\"".$row->id."\" class=\"radio\" /> ".$row->antwort."</li>\n"; } echo "<input type=\"hidden\" name=\"gpoll_id\" value=\"".$id."\" />\n"; echo "<li><input type=\"submit\" name=\"abstimmen\" value=\"Abstimmen\" class=\"button\" /></li>"; echo "</ul>\n"; echo "</form>"; } // close submit } // close Check_ip } // close id } // close function show_poll
Liebe Gruesse
Alice... { signatur } ... -
26.04.2012 um 00:53 Uhr
Danke. Es klappt prima. Danke fr den tollen Support und deine Skripte.