Verfasst: Mo 16. Feb 2004, 11:50
das versteh ich nicht, das sollte doch grad nicht funktionieren, denn um abzustimmen muss $button1 == "Go" sein! 
Das Diskussionsforum zum Open Source Content Management System
https://forum.contenido.org/
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\"> </td></tr>
<tr class=\"text\">
<td width=\"25\"></td><td><input value=\"1\" type=\"radio\" name=\"Radio1\"> $antwort1</td>
</tr>
<tr class=\"text\">
<td width=\"25\" ></td><td><input value=\"2\" type=\"radio\" name=\"Radio1\"> $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\"> $antwort3</td>
</tr>";
if(strlen($antwort4) > 1)
echo "
<tr class=\"text\">
<td width=\"25\" ></td><td><input value=\"4\" type=\"radio\" name=\"Radio1\"> $antwort4</td>
</tr>";
if(strlen($antwort5) > 1)
echo "
<tr class=\"text\">
<td width=\"25\" ></td><td><input value=\"5\" type=\"radio\" name=\"Radio1\"> $antwort5</td>
</tr>";
if(strlen($antwort6) > 1)
echo "
<tr class=\"text\">
<td width=\"25\" ></td><td><input value=\"6\" type=\"radio\" name=\"Radio1\"> $antwort6</td>
</tr>";
echo "<tr>
<td> </td><td> </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> </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."\"> </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."\"> </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."\"> </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."\"> </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."\"> </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."\"> </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 »</a></div>
";
echo "
<!-- Umfragenmodul end -->
";
?>
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?
damit müsste es gehen: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>
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
Code: Alles auswählen
echo "</table>
<div align="center"><a href="$PHP_SELF?idcat=$idcat&button1=Go&statistic=yes">Statistik »</a></div>
";
Code: Alles auswählen
echo "</table>
";
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?
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!