Ergebnis 1 bis 11 von 11

Thema: [PHP]-Umfrage Script

  1. #1

    [PHP]-Umfrage Script

    So, das wäre das erste Problem im neuen Forum, hoffe Ihr könnt mir dabei helfen. Folgendes Script:

    <?PHP

    function schreiben($datei,$mode) {
    global $REMOTE_ADDR;
    $fp = @fopen($datei,$mode);
    flock($fp,2);
    fwrite($fp,$REMOTE_ADDR."|".time()."\n");
    flock($fp,3);
    fclose($fp);
    }

    function ip_sperre() {
    global $REMOTE_ADDR;
    $reloadlogdatei = "ips.txt";
    $anzahleintraege = 50; // nach sovielen ip´s werden die alten gelöscht
    $zeitlimit = 3600; // solange bleibt eine ip gesperrt

    // prüfen ob datei existiert wenn nicht erstellen
    if(!file_exists($reloadlogdatei)) {
    $datei = fopen($reloadlogdatei,"w+");
    fclose($datei);
    }
    $fp = file($reloadlogdatei);
    $size = sizeof($fp);

    // beschreibt die Datei, wenn Liste voll
    if($size >= $anzahleintraege){
    schreiben($reloadlogdatei,"w");
    // Prüft, ob eine IP in der Liste steht
    }
    else {
    $ausgabe=false;
    for ($i=0;$i<$size;$i++) {
    $zeile = explode("|",$fp[$i]);
    if ($zeile[0] == $REMOTE_ADDR AND $zeile[1] > (time()-$zeitlimit)){
    // ip wird gefunden
    $ausgabe = true;
    }
    }
    // protokolliert die ip
    schreiben($reloadlogdatei,"a+");
    }
    return $ausgabe;
    }

    $frage = "Wie findet Ihr meine Seite ?"; // Thema der Abfrage

    $anzahl = 5; // Anzahl der Auswahloptionen

    $option[0] = "Sehr Gut"; // Option 1
    $option[1] = "Gut"; // Option 2
    $option[2] = "Mittelmaessig"; // usw.
    $option[3] = "Schlecht";
    $option[4] = "Sehr Schlecht";

    $farbe[0]="#0000FF"; // Farbe des 1. Balkens
    $farbe[1]="#00FF00"; // Farbe des 2. Balkens
    $farbe[2]="#FF0000"; // usw.
    $farbe[3]="#FFFF00";
    $farbe[4]="#00FFFF";

    $datei = "ergebnis.txt"; // Ergebnisdatei


    //////////////////////////////////////////////////////////////////////////////////////////
    // so, und hier das Script: //
    // //
    // zuerst oeffnen wir die Ergebnisdatei, bzw. legen diese neu an, falls nicht vorhanden //
    //////////////////////////////////////////////////////////////////////////////////////////

    if (file_exists($datei)) { //existiert die Datei?
    $votes=file($datei); //dann in Array "$votes" einlesen
    }
    else { //wenn nicht
    $handle = fopen($datei, "w+"); //Datei anlegen
    $i=0;
    for ($i; $i<$anzahl; $i++) { //fuer jede Option
    fputs($handle,"0\n"); //"0" in Datei schreiben (mit Zeilenvorschub)
    }
    fclose($handle); //Datei wieder schliessen
    $votes=file($datei); //Datei in Array "$votes" einlesen
    }


    //////////////////////////////////////////////////////////////////////////////////////////////////
    // wurde abgestimmt? wenn ja, dann muessen wir das Ergebnis anpassen und in die Datei schreiben //
    //////////////////////////////////////////////////////////////////////////////////////////////////

    if (($submitvote) && (ip_sperre()==false)) {
    settype($votes[$radio],"integer");
    $votes[$radio]++; //entsprechende Option um eins erhoehen
    $handle = fopen($datei, "w+"); //Datei oeffnen
    $i=0;
    for ($i; $i<$anzahl; $i++) { //fuer jede Option
    settype($votes[$i],"integer");
    fputs($handle,"$votes[$i]\n"); //Anzahl in Datei schreiben (mit Zeilenvorschub)
    }
    fclose($handle); //Datei wieder schliessen
    }

    ////////////////////////////////////////////////////////////
    // jetzt startet die Ausgabe! zuerst mal die Ueberschrift //
    ////////////////////////////////////////////////////////////

    echo "<H1>".$frage."</H1>\n\n"; //Ueberschrift schreiben

    ////////////////////////////////////////
    // dann das Ergebnis als Balkengrafik //
    ////////////////////////////////////////

    $i=0;
    for ($i; $i<$anzahl; $i++) { //fuer jede Option
    $j=0;
    echo $option[$i]."&nbsp;&nbsp;&nbsp;<FONT COLOR=\"".$farbe[$i]."\">"; //Option ausgeben und Farbe setzen
    for($j; $j<$votes[$i]; $j++) { //fuer Anzahl der Votes
    echo "|"; //je einen Strich ausgeben
    }
    echo "&nbsp;&nbsp;&nbsp;".$votes[$i]."</FONT><BR>\n"; //Balken zu ende, also Zeilenumbruch
    }

    ////////////////////////////////////
    // am Schluss das Auswahlformular //
    ////////////////////////////////////

    echo "<FORM ACTION=\"".$PHP_SELF."\" METHOD=\"Post\">\n"; //Formular anfangen
    $i=0;
    for ($i; $i<$anzahl; $i++) { //fuer jede Option
    echo "<INPUT TYPE=\"radio\" NAME=\"radio\" VALUE=\"".$i."\">".$option[$i]."<BR>\n"; //Radiobutton anzeigen
    }

    echo "<INPUT TYPE=\"Submit\" VALUE=\"Umfragen\" NAME=\"submitvote\"></FORM>"; //Formularende


    ?>

    möchte ich so anpassen, dass zuerst nur die Fragen stehen:

    Frage
    - Antwort1
    - Antwort2
    - usw
    [Vote]

    und wenn man auf Vote geklickt hat, erscheint das Resultat. Aber die Fragen sollen nun nicht mehr angezeigt werden. Jetzt ist es ja so, dass immer beides angezeigt wird... ich habe es mal raufgeladen:

    http://mitglied.lycos.de/bloodyroar6...ge/umfrage.php

    Vielen Dank! Gruss Peti

  2. #2
    Gehört jetzt PHP eigentlich zum Programmieren? Ich frag deshalb weil ich den PC-Forum ja nicht unnötig zu viele Themen abgragen will.

  3. #3
    na ja, PHP muss ja auch erst mal Programmiert werden, denke schon das es dann ins Programmierer-Forum gehört.

  4. #4
    Ich schaus mir in diesem Moment an und habe auch schon eine Idee. ^^
    Muss sie nurnoch realisieren.
    Also nur einen kleinen Moment noch. ^^

    Klick mich.
    Ich hab jetz nicht lange Zeit zu erklären.
    Falls du fragen hast, frag mich. ^^


    BTW: Dein Codestil, soweit ich sehen kann, gefällt mir nicht. :P

    Geändert von Dingsi (05.12.2003 um 03:24 Uhr)

  5. #5
    Also wenn ich das richtig sehe, dann fragst du damit

    if (!$ausgabe && !$submitvote) {
    echo "<FORM ACTION=\"".$PHP_SELF."\" METHOD=\"Post\">\n"; //Formular anfangen
    $i=0;
    for ($i; $i<$anzahl; $i++) { //fuer jede Option
    echo "<INPUT TYPE=\"radio\" NAME=\"radio\" VALUE=\"".$i."\">".$option[$i]."<BR>\n"; //Radiobutton anzeigen
    }

    echo "<INPUT TYPE=\"Submit\" VALUE=\"Umfragen\" NAME=\"submitvote\"></FORM>"; //Formularende
    }




    ab, ob schon gevotet wurde, oder nicht. und wenn schon gevotet wurde, dann steht die frage nicht mehr. habe ich das richtig verstanden??

    ps. ist nicht mein Stil :-)

    Geändert von Bloodyroar (05.12.2003 um 13:44 Uhr)

  6. #6
    Also mit !$ausgabe guckt er ob die ip in der ips.txt vorhanden ist.
    Mit !$submitvote guckt er ob in diesem moment gevotet wird. Nur wenn beides false ist wird die frage angezeigt, ja.

  7. #7
    ich habe es getestet: http://mitglied.lycos.de/bloodyroar66/index.php und es funktioniert. viele dank.

    kannst mir auch sagen, wie man machen kann, dass am Anfang nur die Fragen stehen. Ich möchte die Umfrage aufteilen, dass am Anfang nur die Fragen stehen und nachher, falls der User gevotet hat!, nur noch das Ergebnis steht. vielleicht so???:

    index.php:
    PHP-Code:
    ...
    ////////////////////////////////////
    // am Schluss das Auswahlformular //
    ////////////////////////////////////
    if (!$ausgabe && !$submitvote) {
    echo 
    "<FORM ACTION="[COLOR=orangered]index2.php[/COLOR]" METHOD=\"Post\">\n"//Formular anfangen
    $i=0;
    for (
    $i$i<$anzahl$i++) { //fuer jede Option
    echo "<INPUT TYPE=\"radio\" NAME=\"radio\" VALUE=\"".$i."\">".$option[$i]."<BR>\n"//Radiobutton anzeigen
    }

    echo 
    "<INPUT TYPE=\"Submit\" VALUE=\"Umfragen\" NAME=\"submitvote\"></FORM>"//Formularende
    }
    ?> 
    index2.php:
    PHP-Code:
    <?PHP

    ////////////////////////////////////////////////////////////
    // jetzt startet die Ausgabe! zuerst mal die Ueberschrift //
    ////////////////////////////////////////////////////////////

    if (!$ausgabe && !$submitvote) echo "<H1>".$frage."</H1>\n\n"//Ueberschrift schreiben

    ////////////////////////////////////////
    // dann das Ergebnis als Balkengrafik //
    ////////////////////////////////////////

    $i=0;
    for (
    $i$i<$anzahl$i++) { //fuer jede Option
    $j=0;
    echo 
    $option[$i]."   <FONT COLOR=\"".$farbe[$i]."\">"//Option ausgeben und Farbe setzen
    for($j$j<$votes[$i]; $j++) { //fuer Anzahl der Votes
    echo "|"//je einen Strich ausgeben
    }
    echo 
    "   ".$votes[$i]."</FONT><BR>\n"//Balken zu ende, also Zeilenumbruch
    }

    ?>


    ??????

    Geändert von Bloodyroar (05.12.2003 um 19:23 Uhr)

  8. #8
    Für PHP gibbet doch diese wunderschöne Highlight Funktion im Board

    PHP-Code:
    if (!$ausgabe && !$submitvote) {
    echo 
    "<FORM ACTION=\"".$PHP_SELF."\" METHOD=\"Post\">\n"//Formular anfangen
    $i=0;
    for (
    $i$i<$anzahl$i++) { //fuer jede Option
    echo "<INPUT TYPE=\"radio\" NAME=\"radio\" VALUE=\"".$i."\">".$option[$i]."<BR>\n"//Radiobutton anzeigen
    }

    echo 
    "<INPUT TYPE=\"Submit\" VALUE=\"Umfragen\" NAME=\"submitvote\"></FORM>"//Formularende

    Nur so als anmerkung

  9. #9
    merci für den hinweis

  10. #10
    Uhm.... warum in mehrere Files aufteilen? o_O
    Naja.. ich setz mich mal davor. ^^

    Klick mich wieder.
    Ich hab im Grunde einfach nur das If, was ich vorher auch benutzt hab um die Frage nicht anzuzeigen, umgekehrt und um die Balken-Ausgabe gepackt.

    Geändert von Dingsi (06.12.2003 um 02:46 Uhr)

  11. #11
    hey, vielen Dank für die Hilfe! Funktioniert Tip Top!
    Werde mich mal hinters Script setzten, vielleicht lern ich ja was davon!

    Gruss Bloodyroar

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •