Seite 3 von 11

Verfasst: Mo 16. Feb 2004, 11:50
von Darth-Vader
das versteh ich nicht, das sollte doch grad nicht funktionieren, denn um abzustimmen muss $button1 == "Go" sein! :roll:

Verfasst: Mo 16. Feb 2004, 12:01
von koffer
so sieht jetzt mein output aus:

Code: Alles auswählen

<?php

/********************************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :            Umfrage
* Author      :     Alexander Höhn
* Copyright   :     art & weise medienproduktion
                    info@auw-media.de
* Created     :     16-09-2002
* Modified    :     04-07-2003
* Modified again:  Feb. 16th 2004 by Lars D. Forseth <lars@forseth.de>
*********************************************************/


echo "

<!-- Umfragenmodul begin -->
";


$db1 = new DB_Contenido;
$db1->query("SELECT * FROM umfragen WHERE active=1");
$db1->next_record();
$umfragenid_active = $db1->f("umfragenid");

  
// ask for cookie of poll (!cookie is set in layout-file!)
if ($poll > 0) {
  //echo "<br>umfragenid_active=".$umfragenid_active."<br>poll=".$poll."<br>"; // uncomment for debugging only!
  if ($poll == $umfragenid_active) {$button1 = "Wählen";}
} // end if
// end ask for cookie of poll //


if ($statistic == "yes") {$b=$button1; $button1="bla";}

// see if a user with this IP voted already and maybe decide not to count the vote
if (!$poll and ($button1 == "Wählen")) {

  $db2 = new DB_Contenido;
  $ip = getenv("REMOTE_ADDR");

  $sql2 = "SELECT * FROM umfragen_log WHERE umfragenid=$umfragenid_active and user_ip=\"$ip\" LIMIT 1";
  $db2->query($sql2);
  $db2->next_record();
  $user_time = $db2->f("user_time");
  $user_voted = $db2->f("user_voted");

  if (!$user_time or !$user_voted) { // a user has never voted with this IP.
    $sql2 = "INSERT INTO umfragen_log VALUES($umfragenid_active,\"$ip\",1,UNIX_TIMESTAMP())";
    $db2->query($sql2);
  } // end if

  // a user with this IP has voted before (at least once)
  else {
    $max_voted = 30;
    if ($user_voted >= $max_voted) { // with this IP equal or more votes than $max_voted were given, so block it!
      $Radio1 = 99;
    } // end if
    else {
      $block_seconds        = 0;
      $block_minutes        = 15;
      $block_hours          = 0;
      $block_days           = 0;
      $block_months         = 0;
      $block_total          = ($block_seconds + ($block_minutes * 60) + ($block_hours * 60 * 60)
                                + ($block_days * 60 * 60 * 24) + ($block_months * 60 * 60 * 24 * 30));
      if ((time()) <= ($user_time + $block_total)) { // this IP is still blocked
        $Radio1 = 99;
        $v = $user_voted + 1;
        $sql2 = "UPDATE umfragen_log SET user_voted=$v,user_time=UNIX_TIMESTAMP() ".
                "WHERE umfragenid=$umfragenid_active and user_ip=\"$ip\"";
        $db2->query($sql2);
      } // end if
      else {
        $v = $user_voted + 1;
        $sql2 = "UPDATE umfragen_log SET user_voted=$v,user_time=UNIX_TIMESTAMP() ".
                "WHERE umfragenid=$umfragenid_active and user_ip=\"$ip\"";
        $db2->query($sql2);
      } // end else
    } //  end else
  } // end else

} // end if(!$poll and ($button1=="Wählen"))
/* end IP-check */

if ($statistic == "yes") {$button1=$b;}




// no cookie set and no form data given //
if($button1!="Wählen"){

//---------------------------- Umfrage aus der DB auslesen -----------------------------------
  $db = new DB_Contenido;
  $db->query('SELECT * FROM umfragen WHERE active=1;');
  $db->next_record();
  $frage = $db->f("Frage");
  $umfragenid = $db->f("umfragenid");
  $antwort1 = $db->f("zaehlung1");
  $antwort2 = $db->f("zaehlung2");
  $antwort3 = $db->f("zaehlung3");
  $antwort4 = $db->f("zaehlung4");
  $antwort5 = $db->f("zaehlung5");
  $antwort6 = $db->f("zaehlung6");

//--------------- Fragen und Antwortmöglichkeiten darstellen ---------------------------------

  $links = explode('?',$auth->url());
  $links2 = explode('&',$links[1]);
  $link = $links[0].'?'.$links2[0];
  echo "<form action=\"$link\" method=\"post\" name=\"poll_form\">";

  echo "

  <table width=\"400\" cellspacing=\"0\" cellpadding=\"2\" style=\"border: 0px;border-color: #000000; border-style: solid; background-color: #F3F3F1;margin-bottom:3pt\">
   <tr>
    <td colspan=\"2\" class=\"punkte\">$frage<br></td>
   </tr>
   <tr><td colpsan=\"2\">&nbsp;</td></tr>
   <tr class=\"text\">
    <td width=\"25\"></td><td><input value=\"1\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;$antwort1</td>
   </tr>
   <tr class=\"text\">
    <td width=\"25\" ></td><td><input value=\"2\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;$antwort2</td>
   </tr>";

//sollte ein Feld nicht belegt worden sein wird es weggelassen, für Umfragen mit weniger als 6 Antwortmöglichkeiten
  if(strlen($antwort3) > 1)
     echo "
   <tr class=\"text\">
    <td width=\"25\" ></td><td><input value=\"3\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;$antwort3</td>
   </tr>";
  if(strlen($antwort4) > 1)
     echo "
   <tr class=\"text\">
    <td width=\"25\" ></td><td><input value=\"4\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;$antwort4</td>
   </tr>";
  if(strlen($antwort5) > 1)
     echo "
   <tr class=\"text\">
    <td width=\"25\" ></td><td><input value=\"5\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;$antwort5</td>
   </tr>";
  if(strlen($antwort6) > 1)
     echo "
   <tr class=\"text\">
    <td width=\"25\" ></td><td><input value=\"6\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;$antwort6</td>
   </tr>";
  echo "<tr>
    <td>&nbsp;</td><td>&nbsp;</td>
   </tr class=\"text\">
   <tr>
    <td colspan =\"2\">
     <input type=\"hidden\" name=\"umfragenid\" value=\"".$umfragenid."\">
     <center><input type=\"submit\" name=\"button1\" class=\"button\" value=\"Wählen\"><br>

    <!-- end of poll_form -->
    </form>
    <!--             -->

   </tr>";

} // end if

else {


//----------------------------- Datenbank auswertung ----------------------------------------
  $db = new DB_Contenido;
  $db->query('SELECT * FROM umfragen WHERE active=1;');
  $db->next_record();
  $frage = $db->f("Frage");
  $antwort1 = $db->f("zaehlung1");
  $antwort2 = $db->f("zaehlung2");
  $antwort3 = $db->f("zaehlung3");
  $antwort4 = $db->f("zaehlung4");
  $antwort5 = $db->f("zaehlung5");
  $antwort6 = $db->f("zaehlung6");

  $ergebnis1 = $db->f("ergebnis1");
  $ergebnis2 = $db->f("ergebnis2");
  $ergebnis3 = $db->f("ergebnis3");
  $ergebnis4 = $db->f("ergebnis4");
  $ergebnis5 = $db->f("ergebnis5");
  $ergebnis6 = $db->f("ergebnis6");


  switch($Radio1){
    case 1 : {
              $ergebnis1++;
              break;
             }
    case 2 : {
              $ergebnis2++;
              break;
             }
    case 3 : {
              $ergebnis3++;
              break;
             }
    case 4 : {
              $ergebnis4++;
              break;
             }
    case 5 : {
              $ergebnis5++;
              break;
             }
    case 6 : {
              $ergebnis6++;
              break;
             }
    } // end switch
    

//--------------------------- Darstellung im Balkendiagramm ----------------------------------
  $gesamt = $ergebnis1+$ergebnis2+$ergebnis3+$ergebnis4+$ergebnis5+$ergebnis6;

  echo "<table width=\"400\" cellspacing=\"0\" cellpadding=\"2\" style=\"border: 0px;border-color: #000000; border-style: solid; background-color: #F3F3F1;margin-bottom:3pt\">";


  echo "<tr class=\"punkte\"><td>".$frage."</td></tr><tr><td>&nbsp;</td></tr>";


  $prozent = round(((100*$ergebnis1)/$gesamt), 2);
  if($ergebnis1!="0") $farbe1= "cornflowerblue";
  if ($prozent < 5.00) $farbe1 = "";
  echo "<tr class=\"text\"><td>\"<b>".$antwort1."</b>\" (".round($prozent, 2)."%) :</td></tr>";
  echo "<tr><td>
         <table><tr class=\"text\">
          <td bgcolor=\"".$farbe1."\" width=\"".$prozent."\">&nbsp;</td></tr>";
  echo " </table>
      </td></tr>
  ";

  $prozent = round(((100*$ergebnis2)/$gesamt), 2);
  if($ergebnis2!="0") $farbe2= "skyblue";
  if ($prozent < 5.00) $farbe2 = "";
  echo "<tr class=\"text\"><td>\"<b>".$antwort2."</b>\" (".round($prozent, 2)."%) :</td></tr>";
  echo "<tr><td>
         <table><tr class=\"text\">
          <td bgcolor=\"".$farbe2."\" width=\"".$prozent."\">&nbsp;</td></tr>";
  echo " </table>
      </td></tr>
  ";

  if(strlen($antwort3) > 1){
    $prozent = round(((100*$ergebnis3)/$gesamt), 2);
    if($ergebnis3!="0") $farbe3= "lightskyblue";
    if ($prozent < 5.00) $farbe3 = "";
    echo "<tr class=\"text\"><td>\"<b>".$antwort3."</b>\" (".round($prozent, 2)."%) :</td></tr>";
    echo "<tr><td>
           <table><tr class=\"text\">
            <td bgcolor=\"".$farbe3."\" width=\"".$prozent."\">&nbsp;</td></tr>";
    echo " </table>
        </td></tr>
    ";
  }

  if(strlen($antwort4) > 1){
    $prozent = round(((100*$ergebnis4)/$gesamt), 2);
    if($ergebnis4!="0") $farbe4= "lightblue";
    if ($prozent < 5.00) $farbe4 = "";
    echo "<tr class=\"text\"><td>\"<b>".$antwort4."</b>\" (".round($prozent, 2)."%) :</td></tr>";
    echo "<tr><td>
           <table><tr class=\"text\">
            <td bgcolor=\"".$farbe4."\" width=\"".$prozent."\">&nbsp;</td></tr>";
    echo " </table>
        </td></tr>
    ";
  }

  if(strlen($antwort5) > 1){
    $prozent = round(((100*$ergebnis5)/$gesamt), 2);
    if($ergebnis5!="0") $farbe5= "lightsteelblue";
    if ($prozent < 5.00) $farbe5 = "";
    echo "<tr class=\"text\"><td>\"<b>".$antwort5."</b>\" (".round($prozent, 2)."%) :</td></tr>";
    echo "<tr><td>
           <table><tr class=\"text\">
            <td bgcolor=\"".$farbe5."\" width=\"".$prozent."\">&nbsp;</td></tr>";
    echo " </table>
        </td></tr>
    ";
  }

  if(strlen($antwort6) > 1){
    $prozent = round(((100*$ergebnis6)/$gesamt), 2);
    if($ergebnis6!="0") $farbe6= "darkgray";
    if ($prozent < 5.00) $farbe6 = "";
    echo "<tr class=\"text\"><td>\"<b>".$antwort6."</b>\" (".round($prozent, 2)."%) :</td></tr>";
    echo "<tr><td>
           <table><tr class=\"text\">
            <td bgcolor=\"".$farbe6."\" width=\"".$prozent."\">&nbsp;</td></tr>";
    echo " </table>
        </td></tr>
    ";
  }

//------------------------- Speichern der neuen Ergebnisse in der DB -------------------------
  $sql = 'UPDATE umfragen SET ergebnis1='.$ergebnis1.', ergebnis2='.$ergebnis2.', ergebnis3='.$ergebnis3.', ergebnis4='.$ergebnis4.', ergebnis5='.$ergebnis5.', ergebnis6='.$ergebnis6.' WHERE active=1;';
  $db->query($sql);

} // end else

echo "</table>
  <div align=\"center\"><a href=\"$PHP_SELF?idcat=$idcat&button1=Go&statistic=yes\">Statistik &raquo;</a></div>
";


echo "
<!-- Umfragenmodul end -->


";

?>



funktioniert alles...

Verfasst: Mo 16. Feb 2004, 12:14
von Darth-Vader
ja klar, du hast also doch das "Go" im src angepasst, net so wie du in deinem vorherigen post behauptet hast.. ;)

Verfasst: Mi 18. Feb 2004, 22:59
von Darth-Vader
so, mir is noch was aufgefallen, was ich in den nächsten tagen ändern will:

die eingaben, die man im backend machen kann, also die frage und die antworten dazu, werden nicht gefiltert, da ich niemandem traue, noch nicht einmal meinen mitarbeitern :twisted: :wink: , werde ich das im neuen release entsprechend filtern.

das (momentan) neueste release findet ihr hier:


von nun an werden "meine" module auf meiner privaten homepage auf http://www.forseth.de --> "Downloads&Sonstiges" --> "Contenido-Module" zu finden sein... :idea:


so long,
Darth. :twisted:


für hinweise zu dem realease bin ich wie immer dankbar ;)


so long,
euer Darth. :twisted:

Verfasst: Do 26. Feb 2004, 13:38
von CyberDan
da ist man auf der Suche nach einem Umfragemodul für ein Projekt und stößt auf die Site des Asta ZW... :D

DM98 rulez!!


Gruß nach Zweibrücken
Daniel

Verfasst: Do 26. Feb 2004, 21:00
von Darth-Vader
hi,
DM98? ohhh.... naja, siehste mal, jetzt bin ich an der Macht, naja zwar nur als Referent Redaktion (alias für webmaster,sysadmin,admin,"unser computermensch","unser computerheini") aber ich hab schon meinen Einfluss dadurch... und wenn ich da an die alte AStA-Seite denke.... oh oh oh ;)

Verfasst: So 29. Feb 2004, 16:51
von Darth-Vader
so, hier das neuste release des umfragenmoduls vom 29.02.2004:


Einzige Änderung, die vorgenommen wurde ist, dass nun die Frage und die Antworten, die man im Backend eingibt aus Sicherheitsgründen gefiltert werden und somit SQL-injection verhindert wird.

Falls ich was übersehen habe und injection doch möglich ist, oder dass jetzt auf einmal irgendwas nicht mehr so geht wie vorher, weil ich beim Testen was übersehen habe, dann einfach hier posten, danke! :)



Ihr findet das neue release hier:

-->

von nun an werden "meine" module auf meiner privaten homepage auf http://www.forseth.de --> "Downloads&Sonstiges" --> "Contenido-Module" zu finden sein... :idea:


so long,
Darth. :twisted:



so long,

Darth. :twisted:

Verfasst: Sa 20. Mär 2004, 15:52
von maTTos
Hi Darth-Vader. Super-Modul, vielen Dank! Hier noch Feedback/Fragen von mir.

1. Ich möchte gerne, dass das Ergbnis nachdem einmal gevotet wurde dauerhaft angezeigt wird. So nen Balkendiagramm sieht einfach schöner aus, als die Radiobuttons. Und der User wundert sich doch, warum er aufgefordert wird, immer wieder neu zu voten. Was muss ich dafür tun?

2. Den hässlichen "Go"-Button möchte ich gerne gegen eine Grafik austauschen. Leider habe ich das noch nicht hinbekommen. Was ist daran falsch?

<input type=\"hidden\" name=\"umfragenid\" value=\"".$umfragenid."\"><center>
<input type=\"image\" name=\"button1\" src=upload/buttons/weiter.gif border=0><br>

3. Der Statistik-Button bei der Diagrammausgabe verwirrt den User ebenfalls. Kann dieser beseitigt werden?

Hier gibts die Neuauflage der Seite zu sehen: http://www.betaweb.de/myfdb/cms/start.htm

Verfasst: Sa 20. Mär 2004, 17:10
von Darth-Vader
maTTos hat geschrieben:Hi Darth-Vader. Super-Modul, vielen Dank! Hier noch Feedback/Fragen von mir.

1. Ich möchte gerne, dass das Ergbnis nachdem einmal gevotet wurde dauerhaft angezeigt wird. So nen Balkendiagramm sieht einfach schöner aus, als die Radiobuttons. Und der User wundert sich doch, warum er aufgefordert wird, immer wieder neu zu voten. Was muss ich dafür tun?

Hi thx, :)

müsste doch in der install stehen... ;)
wenn cookies bei dem user aktiviert sind und er gevoted hat, wird bis eine neue umfrage aktiviert wird fortan das balkendiagramm angezeigt. wenn er keine cookies aktiviert hat eben nicht... deswegen hab ich ja auch für alle fälle den link "Statistik" eingefügt. ;)


maTTos hat geschrieben: 2. Den hässlichen "Go"-Button möchte ich gerne gegen eine Grafik austauschen. Leider habe ich das noch nicht hinbekommen. Was ist daran falsch?

<input type="hidden" name="umfragenid" value="".$umfragenid.""><center>
<input type="image" name="button1" src="upload/buttons/weiter.gif" border="0"><br>
damit müsste es gehen:

Code: Alles auswählen

<input type="image" name="button1" value="Go" src="upload/buttons/weiter.gif " border="0">


maTTos hat geschrieben: 3. Der Statistik-Button bei der Diagrammausgabe verwirrt den User ebenfalls. Kann dieser beseitigt werden?

Hier gibts die Neuauflage der Seite zu sehen: http://www.betaweb.de/myfdb/cms/start.htm

wenn du ziemlich am Ende des Src des Output

Code: Alles auswählen

echo "</table>
  <div align="center"><a href="$PHP_SELF?idcat=$idcat&button1=Go&statistic=yes">Statistik &raquo;</a></div>
";
durch

Code: Alles auswählen

echo "</table>
  ";
ersetzt, wird der "Statistik-Link" nicht mehr angezeigt.




so long,
Darth. :twisted:

Verfasst: Sa 20. Mär 2004, 17:51
von maTTos
Hi Darth, danke für die schnelle Antwort und den Support.

zu 1: Mmh, ich dacht ich hätte Cookies aktiviert. Das werde ich erst nochmal prüfen. Siehst Du ausschließlich das Diagramm, wenn Du bei mir gevotet hast und danach auf eine andere Seite klickst? :P
Nachtrag: Also ich hab das jetzt mal drei Kollegen machen lassen (mit Cookies on), da wird immer wieder die Frage mit Radio-Buttons angezeigt. Aber plz teste mal selber.

zu 2: Habe ich ausprobiert. Aber leider tut sich beim Klick auf den Button garnichts. Die Radio-Buttons bleiben weiterhin da. :(

zu 3: Ja, nur dann verschwindet die Statistik auf beiden Seiten. Aber bei der Fragestellung macht ein Statistik-Button durchaus Sinn. Ich habe ihn deswegen nun hinter den "Go"-Button gehängt und unten gelöscht. Funktioniert! :D

Verfasst: Sa 20. Mär 2004, 18:25
von Darth-Vader
maTTos hat geschrieben:Hi Darth, danke für die schnelle Antwort und den Support.

zu 1: Mmh, ich dacht ich hätte Cookies aktiviert. Das werde ich erst nochmal prüfen. Siehst Du ausschließlich das Diagramm, wenn Du bei mir gevotet hast und danach auf eine andere Seite klickst? :P
Nachtrag: Also ich hab das jetzt mal drei Kollegen machen lassen (mit Cookies on), da wird immer wieder die Frage mit Radio-Buttons angezeigt. Aber plz teste mal selber.

zu 2: Habe ich ausprobiert. Aber leider tut sich beim Klick auf den Button garnichts. Die Radio-Buttons bleiben weiterhin da. :(

zu 3: Ja, nur dann verschwindet die Statistik auf beiden Seiten. Aber bei der Fragestellung macht ein Statistik-Button durchaus Sinn. Ich habe ihn deswegen nun hinter den "Go"-Button gehängt und unten gelöscht. Funktioniert! :D

zu 1)
wenn ich vote, bekomm ich garkein cookie angeboten, bist du sicher, dass du den code der das cookie setzt wie in der install beschrieben auch in dein layout eingefügt hast?!

zu 2)
bei mir ging es, habe es lokal hier mal ausprobiert. hast du evtl. den Wert "Go" im Source des Scripts vielleicht auf "Wählen" oder sonst was gesetzt, so wie das manche hier im Forum auch gemacht hatten?!

zu 3)
gut, gut. deswegen steht mein zeug auch grundsätzlich unter open source ;) so lange ihr das copyright-gedöns da lasst wo und wie es ist, könnt ihr mit dem source machen was ihr wollt und ihn somit natürlich auch anpassen ;)

Verfasst: Sa 20. Mär 2004, 19:09
von maTTos
1. Code ist in beiden Layouts über dem <html>-Tag drin. Der aus der Installationsdatei <? ... ?>. Muss denn noch irgendein Wert auf 1 oder yes gesetzt werden?

2. Der Wert "Go" wurde nicht verändert. Aber, jetzt wird es interessant. Um sicher zu gehen, habe ich unverändert deine Original-Module verwendet und nur die Buttonzeile eingesetzt. Damit funktioniert es auch nicht. Ich verwende die Version 4.4.4

kA :cry:

Achja, mir ist noch ein Verbesserungsvorschlag eingefallen: Wär toll wenn man sehen könnte, wieviele Leutz an dem Vote teilgenommen haben.

Verfasst: So 21. Mär 2004, 01:45
von Darth-Vader
4.4.4?

hmm, ok, ich benutze nach wie vor 4.4.2 und damit klappt es problemlos... ich wusste doch, warum ich kein update machen wollte ;)


aber die umfrage funktioniert soweit, wenn du den button so lässt wie von mir verwendet?



sorry, aber momentan hab ich einfach keine zeit mehr, mir das modul unter 4.4.4 anzuschauen, weil am Montag die Vorlesungen wieder weitergehen und ich einiges dafür tun muss...

Verfasst: So 21. Mär 2004, 12:40
von maTTos
Nachtrag: So, dass Problem ist gelöst und der Fehler festgestellt. Der PHP-Code, der vor den <HTML>-Tag gepastet wird, muss nach ganz oben und ohne Leerzeichen eingesetzt werden. Also, direkt wenn das Dokument beginnt muss <?php ... stehen. Dann klappts auch mit Cookies und grafischem Vote-Button. Dieser Hinweis sollte vielleicht noch mit in die Installationsanleitung eingesetzt werden.

Ein letztes Prob hab ich aber noch: Der grafische Vote-Button muss zweimal gedrückt werden, damit der Vote akzeptiert wird. Hat jemand eine Idee? :idea:

Verfasst: Mo 22. Mär 2004, 12:09
von Halchteranerin
Hallo,

nur eine Kleinigkeit, die kannst Du beim naechsten Update korrigieren: irgendwo beim Output steht colpsan statt colspan. Keine Ahnung, ob sich das beim Layout irgendwie auswirkt, denn ich habe den Fehler zufaellig gesehen und bei mir gleich korrigiert.

Viele Gruesse
Christa