Umfragemodul mit IP-Sperre

McHubi
Beiträge: 1075
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Umfragemodul mit IP-Sperre

Beitrag von McHubi » Fr 16. Mai 2008, 12:08

Hallo,

nachdem ich seit einiger Zeit immer mal wieder im Forum stöbere und häufig eine Lösung für mein Problem erhalten habe, poste ich jetzt auch mal was "nützliches". :wink:

Vorab: ich bin kein php und mysql-Profi, aber das Umfragemodul funktioniert. Also poste ich es mal hier und freu mich über Verbesserungen und Änderungsvorschläge.

Was ich selbst nicht - trotz Brüterei - nicht gelöst habe ist dieser Punkt:
Wie kann ich die Verbindung zur Datenbank herstellen ohne User und Passwort angeben zu müssen?

Hoffe mal ich blamier mich nicht mit dem Post hier :roll:

Beschreibung:
Dieses Umfragemodul bietet die Möglichkeit, einer Frage bis zu sechs Antworten zuzuordnen. Wenn weniger Antworten gewünscht sind, die übrigen einfach frei lassen (Die Radioboxen für frei gelassene Antworten werden automatisch nicht angezeigt).

Die Abstimmungen werden in einer mysql-Tabelle gespeichert, die vor der Nutzung des Moduls erstellt werden muss. Code (Tabellennamen ggf. anpassen):

CREATE TABLE `umfrage` (
`id` INT( 255 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`zaehler_01` INT( 10 ) NOT NULL ,
`zaehler_02` INT( 10 ) NOT NULL ,
`zaehler_03` INT( 10 ) NOT NULL ,
`zaehler_04` INT( 10 ) NOT NULL ,
`zaehler_05` INT( 10 ) NOT NULL ,
`zaehler_06` INT( 10 ) NOT NULL ,
`ip` VARCHAR( 20 ) NOT NULL ,
`datum_uhrzeit` DATETIME NOT NULL,
`datum_uhrzeit_verfall` DATETIME NOT NULL
)

Im Input-Bereich wird die Frage und die Antworten vorgegeben (können auch während einer laufenden Umfrage noch geändert werden) sowie die Zugangsdaten zur Datenbank. Darüber hinaus kann festgelegt werden, wann erneut eine Stimmabgabe erfolgen kann (Blocken einer 'Serienabstimmung' per IP und Datum/ Uhrzeit).

Die Balkenanzeige für jede Antwort kann über eine jeweils eigene Grafik frei bestimmt werden. Darüber hinaus kann der Abstimmbutton und die Darstellung des Ergebnisses per CSS definiert werden:
-h3
-input.button
-table.umfrage
-td.umfrage_stimmen
-td.umfrage_gesamt_stimmen
-td.umfrage_balken
-td.umfrage_gesamt_balken
-td.umfrage_prozent
-td.umfrage_gesamt_prozent
-th.umfrage
-th.umfrage_antworten
-th.umfrage_gesamt

Zu guter letzt ist auch die Vorgabe der Nachkommastellen bei der Darstellung der Prozentangabe möglich.

Das Modul sollte auch leicht außerhalb von Contenido genutzt werden können, da alle über den INPUT erfassten Daten zentral am Anfang des OUTPUT an Variablen übergeben werden. Außerhalb von Contenido also einfach die "CMS_VALUE[xyz]" durch die INPUT-Werte ersetzen.

Code: Alles auswählen

/***********************************************
    * CONTENIDO MODUL - INPUT
    * Umfrage mit IP-Sperre
    *
    * Author      :     Markus Hübner
    * Copyright   :     Markus Hübner
    * Version     :     1.0
    * Created     :     16.05.2008
    ************************************************/
    echo"
    <table>
    <tr><td colspan=2><strong>Zugangsdaten zur Datenbank</strong></td></tr>
    <tr><td>User</td><td><input size=50 type=\"password\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\"></td></tr>
    <tr><td>Passwort</td><td><input size=50 type=\"password\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\"></td></tr>
    <tr><td>Datenbank</td><td><input size=50 type=\"password\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\"></td></tr>
    <tr><td>Tabelle</td><td><input size=50 type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\"></td></tr>
    <tr><td colspan=2><strong><hr>Frage und Antworten:</strong></td></tr>
    <tr><td>Frage</td><td><input size=50 type=\"text\" name=\"CMS_VAR[10]\" value=\"CMS_VALUE[10]\"></td></tr>
    <tr><td>Antwort 1</td><td><input size=50 type=\"text\" name=\"CMS_VAR[21]\" value=\"CMS_VALUE[21]\"></td></tr>
    <tr><td>Antwort 2</td><td><input size=50 type=\"text\" name=\"CMS_VAR[22]\" value=\"CMS_VALUE[22]\"></td></tr>
    <tr><td>Antwort 3</td><td><input size=50 type=\"text\" name=\"CMS_VAR[23]\" value=\"CMS_VALUE[23]\"></td></tr>
    <tr><td>Antwort 4</td><td><input size=50 type=\"text\" name=\"CMS_VAR[24]\" value=\"CMS_VALUE[24]\"></td></tr>
    <tr><td>Antwort 5</td><td><input size=50 type=\"text\" name=\"CMS_VAR[25]\" value=\"CMS_VALUE[25]\"></td></tr>
    <tr><td>Antwort 6</td><td><input size=50 type=\"text\" name=\"CMS_VAR[26]\" value=\"CMS_VALUE[26]\"></td></tr>
    <tr><td colspan=2><em>(Bei weniger als 6 Antworten die übrigen einfach frei lassen.)</em></td></tr>
    <tr><td colspan=2><hr><strong>Weiteres:</strong></td></tr>
    <tr><td>Erneute Abstimmung möglich nach</td><td><input size=4 type=\"text\" name=\"CMS_VAR[30]\" value=\"CMS_VALUE[30]\"> Sekunden (1 Tag: 86400, 1 Stunde: 3600, 1 Minute: 60)</td></tr>
    <tr><td>Balkengrafik 1</td><td><input size=60 type=\"text\" name=\"CMS_VAR[31]\" value=\"CMS_VALUE[31]\"></td></tr>
    <tr><td>Balkengrafik 2</td><td><input size=60 type=\"text\" name=\"CMS_VAR[32]\" value=\"CMS_VALUE[32]\"></td></tr>
    <tr><td>Balkengrafik 3</td><td><input size=60 type=\"text\" name=\"CMS_VAR[33]\" value=\"CMS_VALUE[33]\"></td></tr>
    <tr><td>Balkengrafik 4</td><td><input size=60 type=\"text\" name=\"CMS_VAR[34]\" value=\"CMS_VALUE[34]\"></td></tr>
    <tr><td>Balkengrafik 5</td><td><input size=60 type=\"text\" name=\"CMS_VAR[35]\" value=\"CMS_VALUE[35]\"></td></tr>
    <tr><td>Balkengrafik 6</td><td><input size=60 type=\"text\" name=\"CMS_VAR[36]\" value=\"CMS_VALUE[36]\"></td></tr>
    <tr><td>Balkengrafik 7</td><td><input size=60 type=\"text\" name=\"CMS_VAR[37]\" value=\"CMS_VALUE[37]\"></td></tr>
    <tr><td colspan=2><em>(Pfade angeben.)</em></td></tr>
    <tr><td>Nachkommastellen der Prozentangabe</td><td><input size=4 type=\"text\" name=\"CMS_VAR[40]\" value=\"CMS_VALUE[40]\"></td></tr>
    </table>";
Bild

Code: Alles auswählen

    <?php

    /***********************************************
    * CONTENIDO MODUL - OUTPUT
    * Umfrage mit IP-Sperre
    *
    * Author      :     Markus Hübner
    * Copyright   :     Markus Hübner
    * Version        :      1.0
    * Created     :     16.05.2008
    ************************************************/

    /***** Definition der Variablen *****/

      $user="CMS_VALUE[1]";
      $db_pw="CMS_VALUE[2]";
      $db="CMS_VALUE[4]";
      $umfrage_tabelle="CMS_VALUE[3]";

    /***** Ermittlung der ip, zum schnellen Füllen der DB die tatsächliche oder zufällig generierte IP auskommentieren oder $verfall herabsetzen *****/
      $ip=$_SERVER['REMOTE_ADDR'];

      $datum_uhrzeit=date("Y-m-d H:i:s");   // Format Mysql DATETIME: 2008-05-14 10:33:58;
      $verfall=CMS_VALUE[30];   // 1 Tag: 86400, 1 Stunde: 3600, 1 Minute: 60
      $datum_uhrzeit_verfall=date("Y-m-d H:i:s",time() +$verfall);

      $frage="CMS_VALUE[10]";
      $antwort_01="CMS_VALUE[21]";
      $antwort_02="CMS_VALUE[22]";
      $antwort_03="CMS_VALUE[23]";
      $antwort_04="CMS_VALUE[24]";
      $antwort_05="CMS_VALUE[25]";
      $antwort_06="CMS_VALUE[26]";
      $zaehler_01="0";
      $zaehler_02="0";
      $zaehler_03="0";
      $zaehler_04="0";
      $zaehler_05="0";
      $zaehler_06="0";

      $pfad_balkengrafik_01="CMS_VALUE[31]";
      $pfad_balkengrafik_02="CMS_VALUE[32]";
      $pfad_balkengrafik_03="CMS_VALUE[33]";
      $pfad_balkengrafik_04="CMS_VALUE[34]";
      $pfad_balkengrafik_05="CMS_VALUE[35]";
      $pfad_balkengrafik_06="CMS_VALUE[36]";
      $pfad_balkengrafik_07="CMS_VALUE[37]";

      $nachkommastellen="CMS_VALUE[40]";

    /***** Ende Definition der Variablen *****/


    /***** Beginn Darstellung *****/

      echo "<form action=\"".$auth->url()."\"  method=\"post\" onsubmit=\"check_weiter\">";
      echo "<h3>".$frage."</h3>";
      if ($antwort_01=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"1\">".$antwort_01."<br>"; }
      if ($antwort_02=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"2\">".$antwort_02."<br>"; }
      if ($antwort_03=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"3\">".$antwort_03."<br>"; }
      if ($antwort_04=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"4\">".$antwort_04."<br>"; }
      if ($antwort_05=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"5\">".$antwort_05."<br>"; }
      if ($antwort_06=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"6\">".$antwort_06."<br>"; }

      echo "<input class=button type=\"submit\" name=\"abstimmen\" value=\"abstimmen\"></form>";

      $antwort = $_REQUEST[antwort];

      if ($antwort=="1")  {$zaehler_01="1"; $abstimmung=$antwort_01;};
      if ($antwort=="2")  {$zaehler_02="1"; $abstimmung=$antwort_02;};
      if ($antwort=="3")  {$zaehler_03="1"; $abstimmung=$antwort_03;};
      if ($antwort=="4")  {$zaehler_04="1"; $abstimmung=$antwort_04;};
      if ($antwort=="5")  {$zaehler_05="1"; $abstimmung=$antwort_05;};
      if ($antwort=="6")  {$zaehler_06="1"; $abstimmung=$antwort_06;};

      if ($antwort!="") // $antwort!="" verhindert einen Leereintrag und die Darstellung des Ergebnisses vor der Abstimmung
      {
      echo "Sie haben '".$abstimmung."' angegeben.";


    /********** MySQL **********/

    /*** Verbindung mit DB herstellen ***/

      mysql_connect ("localhost","$user", "$db_pw")
      or die ("keine Verbindung möglich, Benutzername oder Passwort sind falsch");

      mysql_select_db("$db")
      or die ("Die Datenbank existiert nicht.");


    if ($antwort!="")
       {

    /*** Einfügen der Daten in die DB ***/


    /*** IP-Check ***/

      $check_abfrage = "SELECT ip, datum_uhrzeit, datum_uhrzeit_verfall FROM $umfrage_tabelle";
      $check_ergebnis = mysql_query($check_abfrage);
      while($row = mysql_fetch_object($check_ergebnis))
      {
      if ($row->ip==$ip AND $datum_uhrzeit<$row->datum_uhrzeit_verfall) {$blocken="ja";}
      }

      if ($blocken=="ja") { echo " Da Sie bereits an der Umfrage teilgenommen haben, kann eine erneute Stimmabgabe nicht gewertet werden.";}

      else
      {

      $eintrag = "INSERT INTO $umfrage_tabelle
      (zaehler_01, zaehler_02, zaehler_03, zaehler_04, zaehler_05, zaehler_06, ip, datum_uhrzeit, datum_uhrzeit_verfall)
      VALUES
      ('$zaehler_01', '$zaehler_02', '$zaehler_03', '$zaehler_04', '$zaehler_05', '$zaehler_06', '$ip', '$datum_uhrzeit', '$datum_uhrzeit_verfall')";

      $eintragen = mysql_query($eintrag);

    /*** zur Überprüfung des korrekten Eintrags in die DB ggf. freischalten***/

    /*  if ($eintragen==true)
      {
      echo "<br><br>Ihre Abstimmung war erfolgreich.";
      }
      else echo "<br><br>Ihre Abstimmung war nicht erfolgreich.";
    */

    }  // Ende  if ($blocken!="ja")


    /*** Auslesen Datensätze ***/

      $abfrage = "SELECT id, zaehler_01, zaehler_02, zaehler_03, zaehler_04, zaehler_05, zaehler_06, ip, datum_uhrzeit FROM $umfrage_tabelle";
      $ergebnis = mysql_query($abfrage);
      while($row = mysql_fetch_object($ergebnis))
      {
       $gesamt_zaehler_01 = $gesamt_zaehler_01 + $row->zaehler_01;
       $gesamt_zaehler_02 = $gesamt_zaehler_02 + $row->zaehler_02;
       $gesamt_zaehler_03 = $gesamt_zaehler_03 + $row->zaehler_03;
       $gesamt_zaehler_04 = $gesamt_zaehler_04 + $row->zaehler_04;
       $gesamt_zaehler_05 = $gesamt_zaehler_05 + $row->zaehler_05;
       $gesamt_zaehler_06 = $gesamt_zaehler_06 + $row->zaehler_06;
       $gesamt_zaehler = $gesamt_zaehler + 1;
      }


    /*** Berechnung der Prozentangaben ***/

    $prozent_gesamt=100/$gesamt_zaehler*$gesamt_zaehler;
    $prozent_gesamt_zaehler_01=100/$gesamt_zaehler*$gesamt_zaehler_01;
    $prozent_gesamt_zaehler_02=100/$gesamt_zaehler*$gesamt_zaehler_02;
    $prozent_gesamt_zaehler_03=100/$gesamt_zaehler*$gesamt_zaehler_03;
    $prozent_gesamt_zaehler_04=100/$gesamt_zaehler*$gesamt_zaehler_04;
    $prozent_gesamt_zaehler_05=100/$gesamt_zaehler*$gesamt_zaehler_05;
    $prozent_gesamt_zaehler_06=100/$gesamt_zaehler*$gesamt_zaehler_06;


    /*** Darstellung der Zusammenrechnung ***/

      echo "<hr><table class=umfrage><tr><th class=umfrage colspan=4>Umfrageergebnis</th></tr>";
      if ($antwort_01!="") {echo "<tr><th class=umfrage_antworten>".$antwort_01.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_01."<td class=umfrage_balken>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_01)
         {
         echo "<img src=$pfad_balkengrafik_01 border=0>";
         $i=$i+1;
         }
         echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_01,$nachkommastellen)." %</td></tr>";}
      if ($antwort_02!="") {echo "<tr><th class=umfrage_antworten>".$antwort_02.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_02."<td class=umfrage_balken>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_02)
         {
         echo "<img src=$pfad_balkengrafik_02 border=0>";
         $i=$i+1;
         }
         echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_02,$nachkommastellen)." %</td></tr>";}
      if ($antwort_03!="") {echo "<tr><th class=umfrage_antworten>".$antwort_03.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_03."<td class=umfrage_balken>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_03)
         {
         echo "<img src=$pfad_balkengrafik_03 border=0>";
         $i=$i+1;
         }
         echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_03,$nachkommastellen)." %</td></tr>";}
      if ($antwort_04!="") {echo "<tr><th class=umfrage_antworten>".$antwort_04.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_04."<td class=umfrage_balken>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_04)
         {
         echo "<img src=$pfad_balkengrafik_04 border=0>";
         $i=$i+1;
         }
         echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_04,$nachkommastellen)." %</td></tr>";}
      if ($antwort_05!="") {echo "<tr><th class=umfrage_antworten>".$antwort_05.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_05."<td class=umfrage_balken>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_05)
         {
         echo "<img src=$pfad_balkengrafik_05 border=0>";
         $i=$i+1;
         }
         echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_05,$nachkommastellen)." %</td></tr>";}
      if ($antwort_06!="") {echo "<tr><th class=umfrage_antworten>".$antwort_06.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_06."<td class=umfrage_balken>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_06)
         {
         echo "<img src=$pfad_balkengrafik_06 border=0>";
         $i=$i+1;
         }
         echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_06,$nachkommastellen)." %</td></tr>";}
      echo "<tr><th class=umfrage_gesamt>gesamt: </th><td class=umfrage_gesamt_stimmen>".$gesamt_zaehler."<td class=umfrage_gesamt_balken>";
         $i=0;
         while($i<$prozent_gesamt)
         {
         echo "<img src=$pfad_balkengrafik_07 border=0>";
         $i=$i+1;
         }
         echo "</td><td class=umfrage_gesamt_prozent>".number_format($prozent_gesamt,$nachkommastellen)." %</td></tr>";
      echo "</table>";
    } // if ($antwort!="")
    } // if ($antwort!="")

    ?>
Bild


Und hier noch die CSS-Infos:
h3 { /* Headline im Text */
color: #000000;
margin-top: 0px;
font-size: 120%;
font-weight: 900;
font-family: helvetica, arial, geneva, sans-serif;
}

input.button {
color:#000000;
border-top: 1px solid #00037F;
border-left: 1px solid #00037F;
border-bottom: 2px solid #00037F;
border-right: 2px solid #00037F;
background-color:#F4FFF4;
}

table.umfrage {
font-size: 100%;
background: #00037F;
}

td.umfrage_stimmen,
td.umfrage_gesamt_stimmen {
color: #ffffff;
unicode-bidi: inherit;
vertical-align: top;
text-align: right;
}

td.umfrage_gesamt_stimmen {
border-top: 1px solid #97a7d5;
}

td.umfrage_balken,
td.umfrage_gesamt_balken {
border-left: 1px solid #97a7d5;
border-right: 1px solid #97a7d5;
}

td.umfrage_gesamt_balken {
border-left: 1px solid #97a7d5;
border-right: 1px solid #97a7d5;
border-top: 1px solid #97a7d5;
}


td.umfrage_prozent,
td.umfrage_gesamt_prozent {
text-align: right;
color: #ffffff;
font-size: 80%;
}

td.umfrage_gesamt_prozent {
border-top: 1px solid #97a7d5;
}

th.umfrage,
th.umfrage_antworten,
th.umfrage_gesamt {
background: #00037F;
color: #ffffff;
text-align: left;
font-weight: 900;
padding: 3px;
unicode-bidi: inherit;
vertical-align: top;
}

th.umfrage {
border-bottom: 2px solid #97a7d5;
}

th.umfrage_gesamt {
border-top: 1px solid #97a7d5;
}

Viel Spaß! :mrgreen:
Zuletzt geändert von McHubi am Fr 7. Aug 2009, 16:48, insgesamt 4-mal geändert.

Brazo Alkher
Beiträge: 103
Registriert: Fr 28. Jan 2005, 15:15
Wohnort: Unna
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre

Beitrag von Brazo Alkher » Fr 16. Mai 2008, 14:04

Hi,
da ich in naher Zukunft ein ähnliches Modul schreiben muss kann ich deines bestimmt als Vorlage nehmen. Deswegen schonmal Danke!

Zu deiner Frage:
McHubi hat geschrieben:1) Wie kann ich die Verbindung zur Datenbank herstellen ohne User und Passwort angeben zu müssen?
hier kannst du einfach die Datenbank-Verbindung nutzen die dir contenido bietet. Dieses Objekt ($db) existiert schon:

Code: Alles auswählen

$db = new DB_Contenido();
Und falls du weitere Verbindungen brauchst einfach mit

Code: Alles auswählen

$db2 = new DB_Contenido();
$db3 = new DB_Contenido();
...
erstellen.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre

Beitrag von derSteffen » Mi 27. Aug 2008, 09:39

Hallo Brazo Alkher,

ich hoffe meine Frage ist nicht unverschämt. Hast du denn Dein Umfragemodul fertig? Und hättest du auch Lust dieses zu veröffentlichen. Würde uns alle freuen, die ein Umfragemodul gut gebrauchen können.

Vielen Dank

Steffen

McHubi
Beiträge: 1075
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

?

Beitrag von McHubi » Fr 29. Aug 2008, 21:43

Hallo derSteffen,

hoffe, mein Kommentar ist nicht unverschämt. Hast Du das obige Modul mal getestet? Das ist nämlich ein Umfragemodul und geeignet für alle, die ein Umfragemodul gut gebrauchen können... ansonsten findest Du auch viele weitere über die Suche. Oder Du schneiderst es Dir - bei modischem Nichtgefallen - einfach ein wenig zurecht. CSS lässt grüßen.

:wink:

marphin
Beiträge: 196
Registriert: Mo 24. Nov 2003, 13:01

Re: Umfragemodul mit IP-Sperre

Beitrag von marphin » Do 28. Jan 2010, 14:44

Hallo,

ich habe das Modul in 4.8.12 eingebaut. Nach der Abstimmung bekomme ich die Ausgabe, wie ich abgestimmt habe aber die Ergebnisse mit der Balkengrafik erscheinen nicht. Woran könnte das liegen?

Gruß, Martin

McHubi
Beiträge: 1075
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre

Beitrag von McHubi » Mo 1. Feb 2010, 21:58

Hallo Martin,

sorry dass ich mich jetzt erst melde. War bis gestern Abend auf einer Insel im Süden unterwegs und hab mich auf's Schneechaos vorbereitet :wink:

Hast Du die Pfade zu den Grafiken korrekt gesetzt? Vielleicht postest Du mal einen Screenshot...
Wurden tatsächlich Daten in die DB geschrieben? Guck Dir mal diesen Part im Output an:

Code: Alles auswählen

/*** zur Überprüfung des korrekten Eintrags in die DB ggf. freischalten***/

    /*  if ($eintragen==true)
      {
      echo "<br><br>Ihre Abstimmung war erfolgreich.";
      }
      else echo "<br><br>Ihre Abstimmung war nicht erfolgreich.";
    */
Bis dann,

Markus
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

(NEU!) Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

marphin
Beiträge: 196
Registriert: Mo 24. Nov 2003, 13:01

Re: Umfragemodul mit IP-Sperre

Beitrag von marphin » So 14. Feb 2010, 13:30

Hallo Markus,

vielen Dank für die Antwort. Die Eintragung im Modul ist richtig aber in der Datenbank befindet sich kein Eintrag.

Screenshots:

Konfiguration:
Bild

Umfrage:
Bild

Ergebnis:
Bild
Wenn ich die Datenbankeinstellungen korrekt eingebe, erscheint:
Sie haben 'Sehr wichtig' angegeben.keine Verbindung möglich, Benutzername oder Passwort sind falsch

Der Screenshot erfolgte mit der Moduleinstellung:

Code: Alles auswählen

$db = new DB_Contenido();
statt:

Code: Alles auswählen

$user="CMS_VALUE[1]";
          $db_pw="CMS_VALUE[2]";
          $db="CMS_VALUE[4]";
          $umfrage_tabelle="CMS_VALUE[3]";

Mein Output:

Code: Alles auswählen

        <?php

        /***********************************************
        * CONTENIDO MODUL - OUTPUT
        * Umfrage mit IP-Sperre
        *
        * Author      :     Markus Hübner
        * Copyright   :     Markus Hübner
        * Version        :      1.0
        * Created     :     16.05.2008
        ************************************************/

        /***** Definition der Variablen *****/

          $user="CMS_VALUE[1]";
          $db_pw="CMS_VALUE[2]";
          $db="CMS_VALUE[4]";
          $umfrage_tabelle="CMS_VALUE[3]";
          
              /*$db = new DB_Contenido();*/

        /***** Ermittlung der ip, zum schnellen Füllen der DB die tatsächliche oder zufällig generierte IP auskommentieren oder $verfall herabsetzen *****/
          $ip=$_SERVER['REMOTE_ADDR'];

          $datum_uhrzeit=date("Y-m-d H:i:s");   // Format Mysql DATETIME: 2008-05-14 10:33:58;
          $verfall=CMS_VALUE[30];   // 1 Tag: 86400, 1 Stunde: 3600, 1 Minute: 60
          $datum_uhrzeit_verfall=date("Y-m-d H:i:s",time() +$verfall);

          $frage="CMS_VALUE[10]";
          $antwort_01="CMS_VALUE[21]";
          $antwort_02="CMS_VALUE[22]";
          $antwort_03="CMS_VALUE[23]";
          $antwort_04="CMS_VALUE[24]";
          $antwort_05="CMS_VALUE[25]";
          $antwort_06="CMS_VALUE[26]";
          $zaehler_01="0";
          $zaehler_02="0";
          $zaehler_03="0";
          $zaehler_04="0";
          $zaehler_05="0";
          $zaehler_06="0";

          $pfad_balkengrafik_01="CMS_VALUE[31]";
          $pfad_balkengrafik_02="CMS_VALUE[32]";
          $pfad_balkengrafik_03="CMS_VALUE[33]";
          $pfad_balkengrafik_04="CMS_VALUE[34]";
          $pfad_balkengrafik_05="CMS_VALUE[35]";
          $pfad_balkengrafik_06="CMS_VALUE[36]";
          $pfad_balkengrafik_07="CMS_VALUE[37]";

          $nachkommastellen="CMS_VALUE[40]";

        /***** Ende Definition der Variablen *****/


        /***** Beginn Darstellung *****/

          echo "<form action=\"".$auth->url()."\"  method=\"post\" onsubmit=\"check_weiter\">";
          echo "<h3>".$frage."</h3>";
          if ($antwort_01=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"1\">".$antwort_01."<br>"; }
          if ($antwort_02=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"2\">".$antwort_02."<br>"; }
          if ($antwort_03=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"3\">".$antwort_03."<br>"; }
          if ($antwort_04=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"4\">".$antwort_04."<br>"; }
          if ($antwort_05=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"5\">".$antwort_05."<br>"; }
          if ($antwort_06=="") {echo "";} else {echo "<input type=\"Radio\" name=\"antwort\" value=\"6\">".$antwort_06."<br>"; }

          echo "<input class=button type=\"submit\" name=\"abstimmen\" value=\"abstimmen\"></form>";

          $antwort = $_REQUEST[antwort];

          if ($antwort=="1")  {$zaehler_01="1"; $abstimmung=$antwort_01;};
          if ($antwort=="2")  {$zaehler_02="1"; $abstimmung=$antwort_02;};
          if ($antwort=="3")  {$zaehler_03="1"; $abstimmung=$antwort_03;};
          if ($antwort=="4")  {$zaehler_04="1"; $abstimmung=$antwort_04;};
          if ($antwort=="5")  {$zaehler_05="1"; $abstimmung=$antwort_05;};
          if ($antwort=="6")  {$zaehler_06="1"; $abstimmung=$antwort_06;};

          if ($antwort!="") // $antwort!="" verhindert einen Leereintrag und die Darstellung des Ergebnisses vor der Abstimmung
          {
          echo "Sie haben '".$abstimmung."' angegeben.";


        /********** MySQL **********/

        /*** Verbindung mit DB herstellen ***/

          mysql_connect ("localhost","$user", "$db_pw")
          or die ("keine Verbindung möglich, Benutzername oder Passwort sind falsch");

          mysql_select_db("$db")
          or die ("Die Datenbank existiert nicht.");


        if ($antwort!="")
           {

        /*** Einfügen der Daten in die DB ***/


        /*** IP-Check ***/

          $check_abfrage = "SELECT ip, datum_uhrzeit, datum_uhrzeit_verfall FROM $umfrage_tabelle";
          $check_ergebnis = mysql_query($check_abfrage);
          while($row = mysql_fetch_object($check_ergebnis))
          {
          if ($row->ip==$ip AND $datum_uhrzeit<$row->datum_uhrzeit_verfall) {$blocken="ja";}
          }

          if ($blocken=="ja") { echo " Da Sie bereits an der Umfrage teilgenommen haben, kann eine erneute Stimmabgabe nicht gewertet werden.";}

          else
          {

          $eintrag = "INSERT INTO $umfrage_tabelle
          (zaehler_01, zaehler_02, zaehler_03, zaehler_04, zaehler_05, zaehler_06, ip, datum_uhrzeit, datum_uhrzeit_verfall)
          VALUES
          ('$zaehler_01', '$zaehler_02', '$zaehler_03', '$zaehler_04', '$zaehler_05', '$zaehler_06', '$ip', '$datum_uhrzeit', '$datum_uhrzeit_verfall')";

          $eintragen = mysql_query($eintrag);

        /*** zur Überprüfung des korrekten Eintrags in die DB ggf. freischalten***/

          if ($eintragen==true)
          {
          echo "<br><br>Ihre Abstimmung war erfolgreich.";
          }
          else echo "<br><br>Ihre Abstimmung war nicht erfolgreich.";
        

        }  // Ende  if ($blocken!="ja")


        /*** Auslesen Datensätze ***/

          $abfrage = "SELECT id, zaehler_01, zaehler_02, zaehler_03, zaehler_04, zaehler_05, zaehler_06, ip, datum_uhrzeit FROM $umfrage_tabelle";
          $ergebnis = mysql_query($abfrage);
          while($row = mysql_fetch_object($ergebnis))
          {
           $gesamt_zaehler_01 = $gesamt_zaehler_01 + $row->zaehler_01;
           $gesamt_zaehler_02 = $gesamt_zaehler_02 + $row->zaehler_02;
           $gesamt_zaehler_03 = $gesamt_zaehler_03 + $row->zaehler_03;
           $gesamt_zaehler_04 = $gesamt_zaehler_04 + $row->zaehler_04;
           $gesamt_zaehler_05 = $gesamt_zaehler_05 + $row->zaehler_05;
           $gesamt_zaehler_06 = $gesamt_zaehler_06 + $row->zaehler_06;
           $gesamt_zaehler = $gesamt_zaehler + 1;
          }


        /*** Berechnung der Prozentangaben ***/

        $prozent_gesamt=100/$gesamt_zaehler*$gesamt_zaehler;
        $prozent_gesamt_zaehler_01=100/$gesamt_zaehler*$gesamt_zaehler_01;
        $prozent_gesamt_zaehler_02=100/$gesamt_zaehler*$gesamt_zaehler_02;
        $prozent_gesamt_zaehler_03=100/$gesamt_zaehler*$gesamt_zaehler_03;
        $prozent_gesamt_zaehler_04=100/$gesamt_zaehler*$gesamt_zaehler_04;
        $prozent_gesamt_zaehler_05=100/$gesamt_zaehler*$gesamt_zaehler_05;
        $prozent_gesamt_zaehler_06=100/$gesamt_zaehler*$gesamt_zaehler_06;


        /*** Darstellung der Zusammenrechnung ***/

          echo "<hr><table class=umfrage><tr><th class=umfrage colspan=4>Umfrageergebnis</th></tr>";
          if ($antwort_01!="") {echo "<tr><th class=umfrage_antworten>".$antwort_01.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_01."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_01)
             {
             echo "<img src=$pfad_balkengrafik_01 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_01,$nachkommastellen)." %</td></tr>";}
          if ($antwort_02!="") {echo "<tr><th class=umfrage_antworten>".$antwort_02.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_02."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_02)
             {
             echo "<img src=$pfad_balkengrafik_02 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_02,$nachkommastellen)." %</td></tr>";}
          if ($antwort_03!="") {echo "<tr><th class=umfrage_antworten>".$antwort_03.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_03."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_03)
             {
             echo "<img src=$pfad_balkengrafik_03 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_03,$nachkommastellen)." %</td></tr>";}
          if ($antwort_04!="") {echo "<tr><th class=umfrage_antworten>".$antwort_04.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_04."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_04)
             {
             echo "<img src=$pfad_balkengrafik_04 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_04,$nachkommastellen)." %</td></tr>";}
          if ($antwort_05!="") {echo "<tr><th class=umfrage_antworten>".$antwort_05.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_05."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_05)
             {
             echo "<img src=$pfad_balkengrafik_05 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_05,$nachkommastellen)." %</td></tr>";}
          if ($antwort_06!="") {echo "<tr><th class=umfrage_antworten>".$antwort_06.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_06."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_06)
             {
             echo "<img src=$pfad_balkengrafik_06 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_06,$nachkommastellen)." %</td></tr>";}
          echo "<tr><th class=umfrage_gesamt>gesamt: </th><td class=umfrage_gesamt_stimmen>".$gesamt_zaehler."<td class=umfrage_gesamt_balken>";
             $i=0;
             while($i<$prozent_gesamt)
             {
             echo "<img src=$pfad_balkengrafik_07 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_gesamt_prozent>".number_format($prozent_gesamt,$nachkommastellen)." %</td></tr>";
          echo "</table>";
        } // if ($antwort!="")
        } // if ($antwort!="")

        ?>

Wie man sieht, wird beim Umfrageergebnis sogar das Layout zerschossen. Die Pfade zu den Grafiken stimmen, hab sie auch als absolute Pfade getestet!

LG, Martin

McHubi
Beiträge: 1075
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre

Beitrag von McHubi » So 14. Feb 2010, 18:25

Hi,

Code: Alles auswählen

keine Verbindung möglich, Benutzername oder Passwort sind falsch
Du hast doch jetzt nur die Verbindung zur Datenbank geändert, oder? Klappt es denn wenn Du das "Ur-"Modul nimmst mit einer separaten Verbindung zur DB? Ja, ich weiß. Noch ne Verbindung, Performanceabsacker und so weiter und so fort... :wink:

Aber wenn das dann funktioniert, bist Du ja schonmal nen Schritt weiter. Das das Layout zerschossen wird, kann ich mir jetzt nicht erklären. Ggf. die CSS-Daten checken. Blöde Frage: Die Tabelle "umfrage" hast Du erstellt, oder?

Die Fehlermeldung wird hier produziert:

Code: Alles auswählen

        /********** MySQL **********/

        /*** Verbindung mit DB herstellen ***/

          mysql_connect ("localhost","$user", "$db_pw")
          or die ("keine Verbindung möglich, Benutzername oder Passwort sind falsch");

          mysql_select_db("$db")
          or die ("Die Datenbank existiert nicht.");
Wenn Du vorher mit "$db = new DB_Contenido();" die Verbindung herstellst, dann musst Du natürlich auch in diesem Bereich eine Änderung vornehmen, sprich rauswerfen oder auskommentieren.
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

(NEU!) Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

marphin
Beiträge: 196
Registriert: Mo 24. Nov 2003, 13:01

Re: Umfragemodul mit IP-Sperre

Beitrag von marphin » So 14. Feb 2010, 20:52

Hi,

wie meinst du das mit der zweiten Datenbankverbindung?

Der Export der Tabelle sieht nach mehrmaligem Abstimmen so aus:

Code: Alles auswählen

-- phpMyAdmin SQL Dump
-- version 2.11.9.6
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1:3307
-- Erstellungszeit: 14. Februar 2010 um 20:44
-- Server Version: 5.0.91
-- PHP-Version: 5.2.12

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Datenbank: `usrdb_pbdhhjve`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `umfrage`
--

CREATE TABLE IF NOT EXISTS `umfrage` (
  `id` int(255) NOT NULL auto_increment,
  `zaehler_01` int(10) NOT NULL,
  `zaehler_02` int(10) NOT NULL,
  `zaehler_03` int(10) NOT NULL,
  `zaehler_04` int(10) NOT NULL,
  `zaehler_05` int(10) NOT NULL,
  `zaehler_06` int(10) NOT NULL,
  `ip` varchar(20) collate latin1_german1_ci NOT NULL,
  `datum_uhrzeit` datetime NOT NULL,
  `datum_uhrzeit_verfall` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=1 ;

--
-- Daten für Tabelle `umfrage`
--
Das Ur-Modul habe ich eingesetzt und trotzdem den selben Fehler.

Code: Alles auswählen

Sie haben 'Sehr wichtig' angegeben.keine Verbindung möglich, Benutzername oder Passwort sind falsch
Ich habe die Zugangsdaten mehrmals eingegeben, die müssen stimmen

McHubi
Beiträge: 1075
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre

Beitrag von McHubi » Di 16. Feb 2010, 12:31

Hi,
wie meinst du das mit der zweiten Datenbankverbindung?
Contenido ist standarmäßig mit der Datenbank verbunden. Diese Verbindung kannst Du per "$db = new DB_Contenido();" nutzen um die Abfrage durchzuführen. Also es ist grundsätzlich nicht zwingend notwendig einen neuen mysql_connect durchzuführen.

Ich setz die Umfrage mal bei einer 4.8.12er Testinstallation ein. Mal sehen, ob ich die gleichen Probleme habe. Ich meld mich wieder :D

So. Da bin ich. Habe folgendes gemacht:

1) Neues Modul angelegt indem ich den oben geposteten In- und Output kopiert und eingefügt habe.
2) CSS-Infos in die CSS-Datei reinkopiert
3) SQL-Befehl durchgeführt
4) Grafik-Dateien hochgeladen
5) Modul in Template eingebunden
6) Artikel mit Template erstellt und konfiguriert.
7) Artikel aufgerufen und an Umfrage teilgenommen.

Klappt. Also an der Datenbankverbindung im In-/ Output kann es nicht liegen. (Eine Verbesserung auf die "$db = new DB_Contenido();"-Variante werde ich aber wohl dennoch mal vornehmen.)

Mein Dump der Tabelle sieht so aus:

Code: Alles auswählen

-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Erstellungszeit: 16. Februar 2010 um 13:00
-- Server Version: 5.0.84
-- PHP-Version: 5.2.12-0.dotdeb.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Datenbank: `usr_web1063_1`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `umfrage_test`
--

CREATE TABLE IF NOT EXISTS `umfrage_test` (
  `id` int(255) NOT NULL auto_increment,
  `zaehler_01` int(10) NOT NULL,
  `zaehler_02` int(10) NOT NULL,
  `zaehler_03` int(10) NOT NULL,
  `zaehler_04` int(10) NOT NULL,
  `zaehler_05` int(10) NOT NULL,
  `zaehler_06` int(10) NOT NULL,
  `ip` varchar(20) collate latin1_german1_ci NOT NULL,
  `datum_uhrzeit` datetime NOT NULL,
  `datum_uhrzeit_verfall` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=2 ;

--
-- Daten für Tabelle `umfrage_test`
--

INSERT INTO `umfrage_test` (`id`, `zaehler_01`, `zaehler_02`, `zaehler_03`, `zaehler_04`, `zaehler_05`, `zaehler_06`, `ip`, `datum_uhrzeit`, `datum_uhrzeit_verfall`) VALUES
(1, 0, 1, 0, 0, 0, 0, '212.60.243.120', '2010-02-16 12:56:05', '2010-02-16 12:56:06');
Was bei mir fehlt ist dieses hier:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
Da scheint bei Dir der Hase im Pfeffer begraben zu liegen. Was diese "Fehlermeldungen" jetzt aber im Einzelnen bedeuten: gute Frage. Dürfte aber mit der Zeichencodierung zusammenhängen.
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

(NEU!) Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Fips
Beiträge: 105
Registriert: Fr 20. Feb 2009, 09:55
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre - mod_rewrite

Beitrag von Fips » Do 19. Aug 2010, 14:14

Hallo McHubi,
habe das Umfragemodul eingebaut und es funktioniert ohne mod_rewrite super.

Code: Alles auswählen

<?php

    /***********************************************
    * CONTENIDO MODUL - OUTPUT
    * Umfrage mit IP-Sperre
    *
    * Author      :     Markus Hübner
    * Copyright   :     Markus Hübner
    * Version        :      1.0
    * Created     :     16.05.2008
    ************************************************/

$db = new DB_Contenido();    

      $umfrage_tabelle="con_umfrage";

    /***** Ermittlung der ip, zum schnellen Füllen der DB die tatsächliche oder zufällig generierte IP auskommentieren oder $verfall herabsetzen *****/
      $ip=$_SERVER['REMOTE_ADDR'];

      $datum_uhrzeit=date("Y-m-d H:i:s");   // Format Mysql DATETIME: 2008-05-14 10:33:58;
      $verfall=CMS_VALUE[30];   // 1 Tag: 86400, 1 Stunde: 3600, 1 Minute: 60
      $datum_uhrzeit_verfall=date("Y-m-d H:i:s",time() +$verfall);

      $frage="CMS_VALUE[10]";
      $antwort_01="CMS_VALUE[21]";
      $antwort_02="CMS_VALUE[22]";
      $antwort_03="CMS_VALUE[23]";
      $antwort_04="CMS_VALUE[24]";
      $antwort_05="CMS_VALUE[25]";
      $antwort_06="CMS_VALUE[26]";
      $zaehler_01="0";
      $zaehler_02="0";
      $zaehler_03="0";
      $zaehler_04="0";
      $zaehler_05="0";
      $zaehler_06="0";

      $pfad_balkengrafik_01="CMS_VALUE[31]";
      $pfad_balkengrafik_02="CMS_VALUE[32]";
      $pfad_balkengrafik_03="CMS_VALUE[33]";
      $pfad_balkengrafik_04="CMS_VALUE[34]";
      $pfad_balkengrafik_05="CMS_VALUE[35]";
      $pfad_balkengrafik_06="CMS_VALUE[36]";
      $pfad_balkengrafik_07="CMS_VALUE[37]";

      $nachkommastellen="CMS_VALUE[40]";

    /***** Ende Definition der Variablen *****/


    /***** Beginn Darstellung *****/

      echo "<form action=\"".$auth->url()."\"  method=\"post\" onsubmit=\"check_weiter\">";
      echo "<h5>".$frage."</h5>";
      if ($antwort_01=="") {echo "";} else {echo "<div class='umfrage_antwort'><input type=\"radio\" name=\"antwort\" value=\"1\" />&nbsp;".$antwort_01."</div>"; }
      if ($antwort_02=="") {echo "";} else {echo "<div class='umfrage_antwort'><input type=\"radio\" name=\"antwort\" value=\"2\" />&nbsp;".$antwort_02."</div>"; }
      if ($antwort_03=="") {echo "";} else {echo "<div class='umfrage_antwort'><input type=\"radio\" name=\"antwort\" value=\"3\" />&nbsp;".$antwort_03."</div>"; }
      if ($antwort_04=="") {echo "";} else {echo "<div class='umfrage_antwort'><input type=\"radio\" name=\"antwort\" value=\"4\" />&nbsp;".$antwort_04."</div>"; }
      if ($antwort_05=="") {echo "";} else {echo "<div class='umfrage_antwort'><input type=\"radio\" name=\"antwort\" value=\"5\" />&nbsp;".$antwort_05."</div>"; }
      if ($antwort_06=="") {echo "";} else {echo "<div class='umfrage_antwort'><input type=\"radio\" name=\"antwort\" value=\"6\" />&nbsp;".$antwort_06."</div>"; }

      echo "<div class='umfrage_antwort'><input class=\"button\" type=\"submit\" name=\"abstimmen\" value=\"abstimmen\" /></div></form>";

      $antwort = $_REQUEST[antwort];

      if ($antwort=="1")  {$zaehler_01="1"; $abstimmung=$antwort_01;};
      if ($antwort=="2")  {$zaehler_02="1"; $abstimmung=$antwort_02;};
      if ($antwort=="3")  {$zaehler_03="1"; $abstimmung=$antwort_03;};
      if ($antwort=="4")  {$zaehler_04="1"; $abstimmung=$antwort_04;};
      if ($antwort=="5")  {$zaehler_05="1"; $abstimmung=$antwort_05;};
      if ($antwort=="6")  {$zaehler_06="1"; $abstimmung=$antwort_06;};

      if ($antwort!="") // $antwort!="" verhindert einen Leereintrag und die Darstellung des Ergebnisses vor der Abstimmung
      {
      echo "Sie haben '".$abstimmung."' angegeben.";


    /********** MySQL **********/

    /*** Verbindung mit DB herstellen ***/


    if ($antwort!="")
       {

    /*** Einfügen der Daten in die DB ***/


    /*** IP-Check ***/

      $check_abfrage = "SELECT ip, datum_uhrzeit, datum_uhrzeit_verfall FROM $umfrage_tabelle";
      $check_ergebnis = mysql_query($check_abfrage);
      while($row = mysql_fetch_object($check_ergebnis))
      {
      if ($row->ip==$ip AND $datum_uhrzeit<$row->datum_uhrzeit_verfall) {$blocken="ja";}
      }

      if ($blocken=="ja") { echo " Da Sie bereits an der Umfrage teilgenommen haben, kann eine erneute Stimmabgabe nicht gewertet werden.";}

      else
      {

      $eintrag = "INSERT INTO $umfrage_tabelle
      (zaehler_01, zaehler_02, zaehler_03, zaehler_04, zaehler_05, zaehler_06, ip, datum_uhrzeit, datum_uhrzeit_verfall)
      VALUES
      ('$zaehler_01', '$zaehler_02', '$zaehler_03', '$zaehler_04', '$zaehler_05', '$zaehler_06', '$ip', '$datum_uhrzeit', '$datum_uhrzeit_verfall')";

      $eintragen = mysql_query($eintrag);

    /*** zur Überprüfung des korrekten Eintrags in die DB ggf. freischalten***/

    /*  if ($eintragen==true)
      {
      echo "<br /><br />Ihre Abstimmung war erfolgreich.";
      }
      else echo "<br /><br />Ihre Abstimmung war nicht erfolgreich.";
    */

    }  // Ende  if ($blocken!="ja")


    /*** Auslesen Datensätze ***/

      $abfrage = "SELECT id, zaehler_01, zaehler_02, zaehler_03, zaehler_04, zaehler_05, zaehler_06, ip, datum_uhrzeit FROM $umfrage_tabelle";
      $ergebnis = mysql_query($abfrage);
      while($row = mysql_fetch_object($ergebnis))
      {
       $gesamt_zaehler_01 = $gesamt_zaehler_01 + $row->zaehler_01;
       $gesamt_zaehler_02 = $gesamt_zaehler_02 + $row->zaehler_02;
       $gesamt_zaehler_03 = $gesamt_zaehler_03 + $row->zaehler_03;
       $gesamt_zaehler_04 = $gesamt_zaehler_04 + $row->zaehler_04;
       $gesamt_zaehler_05 = $gesamt_zaehler_05 + $row->zaehler_05;
       $gesamt_zaehler_06 = $gesamt_zaehler_06 + $row->zaehler_06;
       $gesamt_zaehler = $gesamt_zaehler + 1;
      }


    /*** Berechnung der Prozentangaben ***/

    $prozent_gesamt=100/$gesamt_zaehler*$gesamt_zaehler;
    $prozent_gesamt_zaehler_01=100/$gesamt_zaehler*$gesamt_zaehler_01;
    $prozent_gesamt_zaehler_02=100/$gesamt_zaehler*$gesamt_zaehler_02;
    $prozent_gesamt_zaehler_03=100/$gesamt_zaehler*$gesamt_zaehler_03;
    $prozent_gesamt_zaehler_04=100/$gesamt_zaehler*$gesamt_zaehler_04;
    $prozent_gesamt_zaehler_05=100/$gesamt_zaehler*$gesamt_zaehler_05;
    $prozent_gesamt_zaehler_06=100/$gesamt_zaehler*$gesamt_zaehler_06;


    /*** Darstellung der Zusammenrechnung ***/

      echo "<hr /><table class='umfrage'>
	              <tr>
				  <td class='umfrage' colspan='4'>Umfrageergebnis</td></tr>";
      if ($antwort_01!="") {
		  
	  echo "<tr>
	        <td class='umfrage_antworten'>".$antwort_01.": </td><td class='umfrage_stimmen'>".$gesamt_zaehler_01."</td><td class='umfrage_balken'>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_01)
         {
         echo "<img src='$pfad_balkengrafik_01' border='0' alt='Balken1' name='Balken1' />";
         $i=$i+1;
         }
         echo "</td><td class='umfrage_prozent'>".number_format($prozent_gesamt_zaehler_01,$nachkommastellen)." %</td></tr>";}
      if ($antwort_02!="") {echo "<tr><td class='umfrage_antworten'>".$antwort_02.": </td><td class='umfrage_stimmen'>".$gesamt_zaehler_02."</td><td class='umfrage_balken'>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_02)
         {
         echo "<img src='$pfad_balkengrafik_02' border='0' alt='Balken2' name='Balken2' />";
         $i=$i+1;
         }
         echo "</td><td class='umfrage_prozent'>".number_format($prozent_gesamt_zaehler_02,$nachkommastellen)." %</td></tr>";}
      if ($antwort_03!="") {echo "<tr><td class='umfrage_antworten'>".$antwort_03.": </td><td class='umfrage_stimmen'>".$gesamt_zaehler_03."</td><td class=umfrage_balken>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_03)
         {
         echo "<img src=$'pfad_balkengrafik_03' border='0' alt='Balken3' name='Balken3' />";
         $i=$i+1;
         }
         echo "</td><td class='umfrage_prozent'>".number_format($prozent_gesamt_zaehler_03,$nachkommastellen)." %</td></tr>";}
      if ($antwort_04!="") {echo "<tr><td class='umfrage_antworten'>".$antwort_04.": </td><td class='umfrage_stimmen'>".$gesamt_zaehler_04."</td><td class='umfrage_balken'>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_04)
         {
         echo "<img src='$pfad_balkengrafik_04' border='0' alt='Balken4' name='Balken4' />";
         $i=$i+1;
         }
         echo "</td><td class=#umfrage_prozent'>".number_format($prozent_gesamt_zaehler_04,$nachkommastellen)." %</td></tr>";}
      if ($antwort_05!="") {echo "<tr><td class='umfrage_antworten'>".$antwort_05.": </td><td class='umfrage_stimmen'>".$gesamt_zaehler_05."</td><td class='umfrage_balken'>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_05)
         {
         echo "<img src='$pfad_balkengrafik_05' border='0' alt='Balken5' name='Balken5' />";
         $i=$i+1;
         }
         echo "</td><td class='umfrage_prozent'>".number_format($prozent_gesamt_zaehler_05,$nachkommastellen)." %</td></tr>";}
      if ($antwort_06!="") {echo "<tr><td class='umfrage_antworten'>".$antwort_06.": </td><td class='umfrage_stimmen'>".$gesamt_zaehler_06."</td><td class='umfrage_balken'>";
         $i=0;
         while($i<$prozent_gesamt_zaehler_06)
         {
         echo "<img src='$pfad_balkengrafik_06' border='0' alt='Balken6' name='Balken6' />";
         $i=$i+1;
         }
         echo "</td><td class='umfrage_prozent'>".number_format($prozent_gesamt_zaehler_06,$nachkommastellen)." %</td></tr>";}
      echo "<tr><td class='umfrage_gesamt'>gesamt: </td><td class='umfrage_gesamt_stimmen'>".$gesamt_zaehler."</td><td class='umfrage_gesamt_balken'>";
         $i=0;
         while($i<$prozent_gesamt)
         {
         echo "<img src='$pfad_balkengrafik_07' border='0' alt='Balken7' name='Balken7' />";
         $i=$i+1;
         }
         echo "</td><td class='umfrage_gesamt_prozent'>".number_format($prozent_gesamt,$nachkommastellen)." %</td></tr>";
      echo "</table>";
    } // if ($antwort!="")
    } // if ($antwort!="")

    ?>
Wenn ich den mod_rewrite Modus einschalte, dann wird die Seite nicht gefunden. Wie kann ich diese Änderung einbauen?

Danke Fips

McHubi
Beiträge: 1075
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre

Beitrag von McHubi » Mo 23. Aug 2010, 10:24

Hallo Fips,

damit bin ich leider Gottes überfragt. Bin bisher immer ohne statische URLs "unterwegs" da mir die vielen auftauchenden Probleme in diversen Modulen im Zusammenhang mit mod-rewrite nicht behagten. Über das Thema kann man sicherlich streiten (ja, in den serps bin ich mit den dynamischen auch gut vertreten) :twisted: aber inwiefern mein Modul auf mod-rewrite umgestrickt werden kann/ müsste: :?: Ich käme da im Moment aus Zeitgründen ohnehin nicht zu. Wenn Du da zu einer Lösung kommen solltest, kannst Du den Code ja hier entsprechend posten.

Viele Grüße,


Markus
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

(NEU!) Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Fips
Beiträge: 105
Registriert: Fr 20. Feb 2009, 09:55
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre

Beitrag von Fips » Di 31. Aug 2010, 08:14

Hallo McHubi,
danke für die Infromation. Da ich in PHP nicht so fit bin, kann ich da nicht direkt weiterhelfen.

Wie kann ich denn im Modul die Anzeige der Auswertung immer anzeigen lassen, ohne vorher eine Abstimmung zu tätigen, da sonst die Auswertung verfälscht wäre.

Danke Fips.

McHubi
Beiträge: 1075
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre

Beitrag von McHubi » Di 31. Aug 2010, 14:58

Hallo Fips,

das Ergebnis wird absichtlich erst nach der Abstimmung angezeigt, damit der abstimmende in seiner Abstimmung nicht beeinflusst wird vom Ergebnis.

Wenn Du jetzt zwischendurch die Ergebnisse anschauen willst ohne selbst abzustimmen (ähnliches Problem nur andersrum) dann musst Du die Abfrage im Code (ob eine Antwort eingetragen wurde) umgehen. Das kannst Du am einfachsten durch ein eigenes Modul: Du kopierst das Modul und hängst ein "_auswertung" oder ähnliches dran und bindest es ein. Dann wirfst Du alles raus was mit der Abstimmung zu tun hat und lässt nur die Ausgabe drin. Allerdings musst Du in der Konfiguration auch die Frage und die Antworten nochmal eintragen um eine entsprechende Ausgabe zu erhalten.

Ungeprüft:

Code: Alles auswählen

  /***** Definition der Variablen *****/

          $user="CMS_VALUE[1]";
          $db_pw="CMS_VALUE[2]";
          $db="CMS_VALUE[4]";
          $umfrage_tabelle="CMS_VALUE[3]";

        /***** Ermittlung der ip, zum schnellen Füllen der DB die tatsächliche oder zufällig generierte IP auskommentieren oder $verfall herabsetzen *****/
          $ip=$_SERVER['REMOTE_ADDR'];

          $datum_uhrzeit=date("Y-m-d H:i:s");   // Format Mysql DATETIME: 2008-05-14 10:33:58;
          $verfall=CMS_VALUE[30];   // 1 Tag: 86400, 1 Stunde: 3600, 1 Minute: 60
          $datum_uhrzeit_verfall=date("Y-m-d H:i:s",time() +$verfall);

          $frage="CMS_VALUE[10]";
          $antwort_01="CMS_VALUE[21]";
          $antwort_02="CMS_VALUE[22]";
          $antwort_03="CMS_VALUE[23]";
          $antwort_04="CMS_VALUE[24]";
          $antwort_05="CMS_VALUE[25]";
          $antwort_06="CMS_VALUE[26]";
          $zaehler_01="0";
          $zaehler_02="0";
          $zaehler_03="0";
          $zaehler_04="0";
          $zaehler_05="0";
          $zaehler_06="0";

          $pfad_balkengrafik_01="CMS_VALUE[31]";
          $pfad_balkengrafik_02="CMS_VALUE[32]";
          $pfad_balkengrafik_03="CMS_VALUE[33]";
          $pfad_balkengrafik_04="CMS_VALUE[34]";
          $pfad_balkengrafik_05="CMS_VALUE[35]";
          $pfad_balkengrafik_06="CMS_VALUE[36]";
          $pfad_balkengrafik_07="CMS_VALUE[37]";

          $nachkommastellen="CMS_VALUE[40]";

        /***** Ende Definition der Variablen *****/


                /********** MySQL **********/

        /*** Verbindung mit DB herstellen ***/

          mysql_connect ("localhost","$user", "$db_pw")
          or die ("keine Verbindung möglich, Benutzername oder Passwort sind falsch");

          mysql_select_db("$db")
          or die ("Die Datenbank existiert nicht.");


        
        /*** Auslesen Datensätze ***/

          $abfrage = "SELECT id, zaehler_01, zaehler_02, zaehler_03, zaehler_04, zaehler_05, zaehler_06, ip, datum_uhrzeit FROM $umfrage_tabelle";
          $ergebnis = mysql_query($abfrage);
          while($row = mysql_fetch_object($ergebnis))
          {
           $gesamt_zaehler_01 = $gesamt_zaehler_01 + $row->zaehler_01;
           $gesamt_zaehler_02 = $gesamt_zaehler_02 + $row->zaehler_02;
           $gesamt_zaehler_03 = $gesamt_zaehler_03 + $row->zaehler_03;
           $gesamt_zaehler_04 = $gesamt_zaehler_04 + $row->zaehler_04;
           $gesamt_zaehler_05 = $gesamt_zaehler_05 + $row->zaehler_05;
           $gesamt_zaehler_06 = $gesamt_zaehler_06 + $row->zaehler_06;
           $gesamt_zaehler = $gesamt_zaehler + 1;
          }


        /*** Berechnung der Prozentangaben ***/

        $prozent_gesamt=100/$gesamt_zaehler*$gesamt_zaehler;
        $prozent_gesamt_zaehler_01=100/$gesamt_zaehler*$gesamt_zaehler_01;
        $prozent_gesamt_zaehler_02=100/$gesamt_zaehler*$gesamt_zaehler_02;
        $prozent_gesamt_zaehler_03=100/$gesamt_zaehler*$gesamt_zaehler_03;
        $prozent_gesamt_zaehler_04=100/$gesamt_zaehler*$gesamt_zaehler_04;
        $prozent_gesamt_zaehler_05=100/$gesamt_zaehler*$gesamt_zaehler_05;
        $prozent_gesamt_zaehler_06=100/$gesamt_zaehler*$gesamt_zaehler_06;


        /*** Darstellung der Zusammenrechnung ***/

          echo "<hr><table class=umfrage><tr><th class=umfrage colspan=4>Umfrageergebnis</th></tr>";
          if ($antwort_01!="") {echo "<tr><th class=umfrage_antworten>".$antwort_01.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_01."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_01)
             {
             echo "<img src=$pfad_balkengrafik_01 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_01,$nachkommastellen)." %</td></tr>";}
          if ($antwort_02!="") {echo "<tr><th class=umfrage_antworten>".$antwort_02.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_02."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_02)
             {
             echo "<img src=$pfad_balkengrafik_02 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_02,$nachkommastellen)." %</td></tr>";}
          if ($antwort_03!="") {echo "<tr><th class=umfrage_antworten>".$antwort_03.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_03."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_03)
             {
             echo "<img src=$pfad_balkengrafik_03 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_03,$nachkommastellen)." %</td></tr>";}
          if ($antwort_04!="") {echo "<tr><th class=umfrage_antworten>".$antwort_04.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_04."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_04)
             {
             echo "<img src=$pfad_balkengrafik_04 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_04,$nachkommastellen)." %</td></tr>";}
          if ($antwort_05!="") {echo "<tr><th class=umfrage_antworten>".$antwort_05.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_05."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_05)
             {
             echo "<img src=$pfad_balkengrafik_05 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_05,$nachkommastellen)." %</td></tr>";}
          if ($antwort_06!="") {echo "<tr><th class=umfrage_antworten>".$antwort_06.": </th><td class=umfrage_stimmen>".$gesamt_zaehler_06."<td class=umfrage_balken>";
             $i=0;
             while($i<$prozent_gesamt_zaehler_06)
             {
             echo "<img src=$pfad_balkengrafik_06 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_prozent>".number_format($prozent_gesamt_zaehler_06,$nachkommastellen)." %</td></tr>";}
          echo "<tr><th class=umfrage_gesamt>gesamt: </th><td class=umfrage_gesamt_stimmen>".$gesamt_zaehler."<td class=umfrage_gesamt_balken>";
             $i=0;
             while($i<$prozent_gesamt)
             {
             echo "<img src=$pfad_balkengrafik_07 border=0>";
             $i=$i+1;
             }
             echo "</td><td class=umfrage_gesamt_prozent>".number_format($prozent_gesamt,$nachkommastellen)." %</td></tr>";
          echo "</table>";
Alles andere müsste man über eine weitere if-Bedingung laufen lassen: Wenn in der aufrufenden Url z.B. www.meinedomain.de/cms/front_content.ph ... heck=check[/b] stehen würde, könnte man im Output prüfen ob diese Variable den bestimmten Ausdruck trägt und dann über eine if-Bedingung nur die Ausgabe anwerfen ohne einen Eintrag vorzunehmen. Mal schauen. Vielleicht poste ich hier noch was schnelles...
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

(NEU!) Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Schimmerlos
Beiträge: 8
Registriert: Di 26. Okt 2010, 13:56
Kontaktdaten:

Re: Umfragemodul mit IP-Sperre

Beitrag von Schimmerlos » Fr 29. Okt 2010, 13:08

Gibt es dieses vielversprechende Modul eigentlich in einer aktualisierten Variante, z.B. als Zip File zum Download?

Gesperrt