Seite 1 von 2

Votingmodul

Verfasst: Mo 19. Jul 2004, 14:24
von malsdgtac
Hallo alle zusammen,
da ich im Bereich Kommentarmodul gelesen haben, dass mehrere gerne ein Votingmodul hätten und ich gerade versucht habe eines zu erstellen, möchte ich gerne mein Ergebnis hier präsentieren.

Ich bin kein php-Profi, daher entschuligt meine teilweise stümperhaften Ansätze.

Ich habe für mein Votingmodul das Umfragemodul von Alexander Höhn als Grundlage verwendet und angepaßt.
Leider sind jetzt nur genau 4 Antowrtmöglichkeiten möglich (mit den Variablen war es mir zu kompliziert).

Zusätzlich zu den Antwortmöglichkeiten und den Zählergebnisse wir nun auch die idcat mit in die DB geschrieben und auf jeder Seite wiederrum nur diese ausgelesen. Wurde auf dieser Seite noch keine Bewertung ausgegeben kommt eine Meldung und wird eine neuer Datensatz angelegt.
Außerdem kommen die Ergebnisse und die Bewertungsmöglichkeit auf der gleichen Seite.

Falls jemand das Modul verwenden kann freue ich mich auch mal geholfen zu haben, falls es jemand verbessert würde ich mich freuen, wenn es hier wieder gepostet wird.

So hier nun mal mein Modul:

Eingabe:

Code: Alles auswählen

echo " <table>";

$db = new DB_Contenido; 
switch($button1){

//-------------------------- Speichern der Daten in die Tabelle ------------------------------
  case "Speichern" : {
                      $sql = 'INSERT INTO `umfragen` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `umfragenidcat`) VALUES (\'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\', \'0\', \'0\', \'0\',\'0\', \'0\');'; \');'; 
                      $db->query($sql);
                      break;
                     }
  case "Auswählen" :     { 

//--------------------------- Auswählen der gewünschten Frege --------------------------------
                      $db->query('SELECT * FROM umfragen WHERE `Frage` = \''.$CMS_VAR[7].'\''); 
                      $db->next_record();
                      $frage = $db->f("Frage");
                      $edit1 = $db->f("zaehlung1");
                      $edit2 = $db->f("zaehlung2");
                      $edit3 = $db->f("zaehlung3");
                      $edit4 = $db->f("zaehlung4");                
                      break;
                     }
  }

echo "<tr>
        <td>&nbsp;</td>
        <td></td>
    </tr>";
echo "    <tr>
        <td>Frage :</td>
        <td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"";
       if($frage=="") echo "CMS_VALUE[0]"; else echo $frage;
     echo "\"></td>
    </tr>
    <tr>
        <td>Möglichkeit 1 :</td>
        <td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"";
       if($edit1=="") echo "CMS_VALUE[1]" ; else echo $edit1; 
     echo "\"></td>
    </tr>
    <tr>
        <td>Möglichkeit 2 :</td>
        <td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"";
       if($edit2=="") echo "CMS_VALUE[2]" ; else echo $edit2; 
     echo "\"></td>
    </tr>
    <tr>
        <td>Möglichkeit 3 :</td>
        <td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"";
       if($edit3=="") echo "CMS_VALUE[3]" ; else echo $edit3; 
     echo "\"></td>
    </tr>
    <tr>
        <td>Möglichkeit 4 :</td>
        <td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"";
       if($edit4=="") echo "CMS_VALUE[4]" ; else echo $edit4; 
     echo "\"></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
    </tr>

    <tr>
        <td>&nbsp;</td>
        <td><input type=\"submit\" name=\"button1\" value=\"Speichern\"></td>
    </tr>
    <tr>
        <td colspan=\"2\"><center>";

//---------------------- darstellung in einer drop-down Liste --------------------------------
$db = new DB_Contenido; 
if($db->query("SELECT * FROM umfragen")){ 
  for($i=1;$i<=$db->num_rows();$i++){
    $db->next_record();
    $tab = "tab".$i;
    $$tab = $db->f("Frage"); 
   }
 }else{
  $sql = 'CREATE TABLE `umfragen` ( `umfragenid` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `Frage` TEXT NOT NULL, `zaehlung1` TEXT NOT NULL, `zaehlung2` TEXT NOT NULL, `zaehlung3` TEXT NOT NULL, `zaehlung4` TEXT NOT NULL,`ergebnis1` INT(15) NOT NULL, `ergebnis2` INT(15) NOT NULL, `ergebnis3` INT(15) NOT NULL, `ergebnis4` INT(15) NOT NULL, `umfragenidcat` INT(10) NOT NULL );'; 
  $db->query($sql);
 }
echo "<select name=\"CMS_VAR[7]\" size=\"1\">";
 if($CMS_VAR[7]!="")echo "<option value=\"$CMS_VAR[7]\">".$CMS_VAR[7]."</option>";
  for($i=1;$i<=$db->num_rows();$i++){
    $tab = "tab".$i;                                       
    if(!isset($CMS_VAR[7]))echo "<option value=\"".$$tab."\">".$$tab."</option>";
    if(isset($CMS_VAR[7])) if($$tab!=$CMS_VAR[7])echo "<option value=\"".$$tab."\">".$$tab."</option>";          
} 
echo "</select>" ;  

echo "  <input type=\"submit\" name=\"button1\" value=\"Auswählen\"></td>
    </tr>";    

echo "</table>"; 
Ausgabe:

Code: Alles auswählen

<?php

echo '<table width="100%"><tr><td colspan="2"><b>Bewertung dieses Ausflugszieles:</b><br><span class="k">Diese Bewertung wurde durch Benutzer dieser Webseite erstellt</span><br><br></td></tr><tr><td width="50%" valign="top">';

//----------------------------- Datenbank auswertung ----------------------------------------
  $db = new DB_Contenido; 
  $db->query('SELECT * FROM umfragen WHERE `Frage` = \'CMS_VALUE[0]\' AND `umfragenidcat` = \''.$idcat.'\''); 
  $db->next_record();
  $frage = $db->f("Frage");
  $ergeb1 = $db->f("ergebnis1");
  $ergeb2 = $db->f("ergebnis2");
  $ergeb3 = $db->f("ergebnis3");
  $ergeb4 = $db->f("ergebnis4");               
	$umfragecat = $db->f("umfragenidcat");     

	if ($umfragecat==$idcat){


switch($Radio1){
  case 1 : {
            $ergeb1++;
            break;
           }
  case 2 : {
            $ergeb2++;
            break;
           }
  case 3 : {
            $ergeb3++;
            break;
           }
  case 4 : {
            $ergeb4++;
            break;
           }
}

//--------------------------- Darstellung im Balkendiagramm ----------------------------------
$gesamt = $ergeb1+$ergeb2+$ergeb3+$ergeb4;
//echo "<center>CMS_VALUE[0]</center><br>";
   
if($ergeb1!="0") $farbe1= "bgcolor=\"cornflowerblue\"";
echo "<b>CMS_VALUE[1] :";
echo "<table width=\"100%\"><tr><td ".$farbe1." width=\"";
echo (300*$ergeb1)/$gesamt;
$prozent = (100*$ergeb1)/$gesamt;
echo "\">&nbsp;</td><td>".round($prozent, 2)." % </td></tr>";
echo "</table><br>";

if($ergeb2!="0") $farbe2= "bgcolor=\"skyblue\"";
echo "<b>CMS_VALUE[2] :";
echo "<table><tr><td ".$farbe2." width=\"";
echo (300*$ergeb2)/$gesamt;
$prozent = (100*$ergeb2)/$gesamt;
echo "\">&nbsp;</td><td>".round($prozent, 2)." % </td></tr>";
echo "</table><br>";

if($ergeb3!="0") $farbe3= "bgcolor=\"lightskyblue\"";
echo "<b>CMS_VALUE[3] :";
echo "<table><tr><td ".$farbe3." width=\"";
echo (300*$ergeb3)/$gesamt;
$prozent = (100*$ergeb3)/$gesamt;
echo "\">&nbsp;</td><td>".round($prozent, 2)." % </td></tr>";
echo "</table><br>";

if($ergeb4!="0") $farbe4= "bgcolor=\"lightblue\"";
echo "<b>CMS_VALUE[4] :";
echo "<table><tr><td ".$farbe4." width=\"";
echo (300*$ergeb4)/$gesamt;
$prozent = (100*$ergeb4)/$gesamt;
echo "\">&nbsp;</td><td>".round($prozent, 2)." % </td></tr>";
echo "</table><br>";

		} else {
			echo 'Es liegen noch keine Bewertungen vor';
			$sql = 'INSERT INTO `umfragen` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `umfragenidcat`) VALUES (\'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\', \'0\', \'0\', \'0\', \'0\', \''.$idcat.'\');'; \');'; 
			$db->query($sql);
		}

echo '</td><td valign="top">';

//------------------------- Speichern der neuen Ergebnisse in der DB -------------------------
if ($button1=="Bewerten"){
$sql = 'SELECT `umfragenid` FROM `umfragen` WHERE 1 AND `Frage` = \'CMS_VALUE[0]\' AND `umfragenidcat` = \''.$idcat.'\' LIMIT 0, 30'; 
$db->query($sql); 
$ID = $db->f("umfragenid");
$umfragecat = $db->f("umfragenidcat");

$sql = 'REPLACE INTO `umfragen` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `umfragenidcat`) VALUES (\''.$ID.'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\', \''.$ergeb1.'\', \''.$ergeb2.'\', \''.$ergeb3.'\', \''.$ergeb4.'\', \''.$idcat.'\');'; \');';
 
$db->query($sql);
}



echo "<form action=\"".$auth->url()."\"  method=\"post\" name=\"speichern\">";
//if($button1!="Bewerten"){

//---------------------------- Umfrage aus der DB auslesen -----------------------------------
  $db = new DB_Contenido; 
  $db->query('SELECT * FROM umfragen WHERE `Frage` = \'CMS_VALUE[0]\''); 
  $db->next_record();  
  $frage = $db->f("Frage");
  $antwort1 = $db->f("zaehlung1");
  $antwort2 = $db->f("zaehlung2");
  $antwort3 = $db->f("zaehlung3");
  $antwort4 = $db->f("zaehlung4");                   

//--------------- Fragen und Antwortmöglichkeiten darstellen ---------------------------------
echo "<table width=\"100%\"><tr><td></td><td height=\"15\" colspan=\"2\" >$frage</td>
   </tr>
   <tr>
    <td width=\"25\"></td><td><input value=\"1\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort1."</td>
   </tr>
   <tr>
    <td width=\"25\" ></td><td><input value=\"2\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort2."</td>
   </tr>
	 <tr>
    <td width=\"25\" ></td><td><input value=\"3\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort3."</td>
   </tr>
	 <tr>
    <td width=\"25\" ></td><td><input value=\"4\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort4."</td>
   </tr>
	 <tr>
    <td>&nbsp;</td><td>&nbsp;</td>
   </tr>
   <tr>
    <td colspan=\"2\"><center><input type=\"submit\" name=\"button1\" value=\"Bewerten\"><br>
   </tr></table>";
echo "</form>";
//}else{
echo '</td></tr></table>';
//}
?>

[/code]

Verfasst: Di 20. Jul 2004, 15:25
von maTTos
Hallo smac,

leider läuft Dein Modul bei mir nicht. Es scheint eine Überschneidung mit dem Voting-Modul (Poll) von Darth-Vader zu geben. Vielleicht werden einige Variablen doppelt genutzt.

Wie dem auch sei, ich frage mich: "Warum das Rad neu erfinden?". Denn ein solches Modul wird bereits auf der Seite "Contenido FAQ"
eingesetzt. (http://www.thilo-sommer.de/PHPMyFAQ/)

Bild

Vielleicht stellt der Autor des Modules ("Sommer & Partner" oder "Snoopy"!?) den Source-Code des Moduls zur Verfügung. :P

Verfasst: Di 20. Jul 2004, 15:48
von MichFress
diese Bewertungsmöglichkeit ist nur dummerweise Teil von "PHPMyFAQ", und damit nicht ganz so trivial als Contenido-Modul einsetzbar...

Verfasst: Di 20. Jul 2004, 15:59
von malsdgtac
Falls mein Votingmodul Überschneidungen mit dem Pollmodul von Darth Vader hat, tut mir das leid, kann es aber nicht nachvollziehen, da ich dieses nicht installiert habe.

Richtig ist allerdings, dass es Überschneidungen mit dem ursprünglichen Umfragemodul von Alexander Höhn gibt, da die gleiche Tabelle verwendet wird!
Diese wird extra für dieses Modul automatisch beim ersten Aufruf erstellt und heißt "Umfrage".

Verfasst: Di 20. Jul 2004, 16:16
von maTTos
Hi nochmal, das Problem lag nicht an den Variablen, sondern an dem selben DB-Eintrag. Bei dem Modul von DV wird auch die Tabelle "umfragen" erzeugt. Ich habe überall in Deinem Modul "umfragen" in "umfragen1" unbenannt. Jetzt funktioniert es. Danke!
Vielleicht hast Du ja mal irgendwann Lust und Zeit, das Modul entsprechend einem Artikelbewertungs-System (s.o.) anzupassen. :wink:

Verfasst: Di 20. Jul 2004, 23:58
von maTTos
So, ich habe mich selber mit meinen (äußerst) bescheidenen PHP-Kenntnissen an dieses Artikel-Bewertungsmodul herangewagt. Grundlage ist das vorherige Modul von smac auf Basis des Umfragemoduls von Alexander Höhn.

So siehts aus:
Bild

Jetzt habe ich allerdings ein Problem:
Damit das Modul Sinn macht, muss die Anzahl der Votings (Abstimmungen) auf jeder Seite bei Null beginnen - was jedoch nicht der Fall ist. Wählt man die gleiche "Frage" aus, so wird der bestehende Vote fortgesetzt.

Wer kann den Code so abändern, dass für jeden Artikel in dem das Modul eingesetzt wird, ein neuer DB-Eintrag erstellt wird? Der Input-Bereich wird ja sowieso wegfallen, da die Frage ja immer gleich lautet. Ich bitte um Eure Unterstützung! :roll:


Input (eingentlich nicht erforderlich, da keine Auswahl mehr erfolgend soll):
echo " <table>";

$db = new DB_Contenido;
switch($button1){

//-------------------------- Speichern der Daten in die Tabelle ------------------------------
case "Speichern" : {
$sql = 'INSERT INTO `umfragen1` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `zaehlung5`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `ergebnis5`, `umfragenidcat`) VALUES (\'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\', \'CMS_VALUE[5]\', \'0\', \'0\',\'0\', \'0\');'; \');';
$db->query($sql);
break;
}
case "Auswählen" : {

//--------------------------- Auswählen der gewünschten Frege --------------------------------
$db->query('SELECT * FROM umfragen1 WHERE `Frage` = \''.$CMS_VAR[7].'\'');
$db->next_record();
$frage = $db->f("Frage");
$edit1 = $db->f("zaehlung1");
$edit2 = $db->f("zaehlung2");
$edit3 = $db->f("zaehlung3");
$edit4 = $db->f("zaehlung4");
$edit5 = $db->f("zaehlung5");
break;
}
}

echo "<tr>
<td>&nbsp;</td>
<td></td>
</tr>";
echo " <tr>
<td>Frage :</td>
<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"";
if($frage=="") echo "CMS_VALUE[0]"; else echo $frage;
echo "\"></td>
</tr>
<tr>
<td>Möglichkeit 1 :</td>
<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"";
if($edit1=="") echo "CMS_VALUE[1]" ; else echo $edit1;
echo "\"></td>
</tr>
<tr>
<td>Möglichkeit 2 :</td>
<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"";
if($edit2=="") echo "CMS_VALUE[2]" ; else echo $edit2;
echo "\"></td>
</tr>
<tr>
<td>Möglichkeit 3 :</td>
<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"";
if($edit3=="") echo "CMS_VALUE[3]" ; else echo $edit3;
echo "\"></td>
</tr>

<tr>
<td>Möglichkeit 4 :</td>
<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"";
if($edit4=="") echo "CMS_VALUE[4]" ; else echo $edit4;
echo "\"></td>
</tr>

<tr>
<td>Möglichkeit 5 :</td>
<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"";
if($edit5=="") echo "CMS_VALUE[5]" ; else echo $edit5;
echo "\"></td>
</tr>



<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>

<tr>
<td>&nbsp;</td>
<td><input type=\"submit\" name=\"button1\" value=\"Speichern\"></td>
</tr>
<tr>
<td colspan=\"2\"><center>";

//---------------------- darstellung in einer drop-down Liste --------------------------------
$db = new DB_Contenido;
if($db->query("SELECT * FROM umfragen1")){
for($i=1;$i<=$db->num_rows();$i++){
$db->next_record();
$tab = "tab".$i;
$$tab = $db->f("Frage");
}
}else{
$sql = 'CREATE TABLE `umfragen1` ( `umfragenid` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `Frage` TEXT NOT NULL, `zaehlung1` TEXT NOT NULL, `zaehlung2` TEXT NOT NULL, `zaehlung3` TEXT NOT NULL, `zaehlung4` TEXT NOT NULL, `zaehlung5` TEXT NOT NULL,`ergebnis1` INT(15) NOT NULL, `ergebnis2` INT(15) NOT NULL, `ergebnis3` INT(15) NOT NULL, `ergebnis4` INT(15) NOT NULL, `ergebnis5` INT(15) NOT NULL, `umfragenidcat` INT(10) NOT NULL );';
$db->query($sql);
}
echo "<select name=\"CMS_VAR[7]\" size=\"1\">";
if($CMS_VAR[7]!="")echo "<option value=\"$CMS_VAR[7]\">".$CMS_VAR[7]."</option>";
for($i=1;$i<=$db->num_rows();$i++){
$tab = "tab".$i;
if(!isset($CMS_VAR[7]))echo "<option value=\"".$$tab."\">".$$tab."</option>";
if(isset($CMS_VAR[7])) if($$tab!=$CMS_VAR[7])echo "<option value=\"".$$tab."\">".$$tab."</option>";
}
echo "</select>" ;

echo " <input type=\"submit\" name=\"button1\" value=\"Auswählen\"></td>
</tr>";

echo "</table>";
Output:
<?php

//----------------------------- Datenbank auswertung ----------------------------------------
$db = new DB_Contenido;
$db->query('SELECT * FROM umfragen1 WHERE `Frage` = \'CMS_VALUE[0]\' AND `umfragenidcat` = \''.$idcat.'\'');
$db->next_record();
$frage = $db->f("Frage");
$ergeb1 = $db->f("ergebnis1");
$ergeb2 = $db->f("ergebnis2");
$ergeb3 = $db->f("ergebnis3");
$ergeb4 = $db->f("ergebnis4");
$ergeb5 = $db->f("ergebnis5");
$umfragecat = $db->f("umfragenidcat");

if ($umfragecat==$idcat){

switch($Radio1){
case 1 : {
$ergeb1++;
break;
}
case 2 : {
$ergeb2++;
break;
}
case 3 : {
$ergeb3++;
break;
}
case 4 : {
$ergeb4++;
break;
}
case 5 : {
$ergeb5++;
break;
}
}

//--------------------------- Darstellung im Balkendiagramm ----------------------------------

$gesamt = $ergeb1+$ergeb2+$ergeb3+$ergeb4+$ergeb5;

echo '<br><br><center><table width=100%><tr><td valign=top>';

echo "<font face=arial><b>","$gesamt","</b> Votings ergaben ";
$durchschnitt = ($ergeb1*1)+($ergeb2*2)+($ergeb3*3)+($ergeb4*4)+($ergeb5*5);
$ergebnis50 = $durchschnitt/$gesamt;

if ( $ergebnis50 > 0 && $ergebnis50 <= 1.7)
{
echo "eine <b>gute Bewertung</b> des Beitrags <img src=upload/system/green.gif>";
} elseif ( $ergebnis50 > 1.7 && $ergebnis50 <= 2.7) {
echo "eine <b>überdurchschnittlich gute Bewertung</b> des Beitrags <img src=upload/system/l_green.gif>";
} elseif ( $ergebnis50 > 2.7 && $ergebnis50 <= 3.3) {
echo "eine <b>neutrale Bewertung</b> des Beitrags <img src=upload/system/neutral.gif>";
} elseif ( $ergebnis50 > 3.3 && $ergebnis50 <= 4.3) {
echo "eine <b>unterdurchschnittlich schlechte Bewertung</b> des Beitrags <img src=upload/system/l_red.gif>";

} elseif ( $ergebnis50 > 4.3 ) {
echo "eine <b>schlechte Bewertung</b> des Beitrags <img src=upload/system/red.gif>";
} else {
echo "noch <b>keine Bewertung</b> des Beitrags";
}

} else {
echo 'Es liegen noch keine Bewertungen vor';
$sql = 'INSERT INTO `umfragen1` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `zaehlung5`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `ergebnis5`, `umfragenidcat`) VALUES (\'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\',\'CMS_VALUE[5]\', \'0\', \'0\', \'0\', \''.$idcat.'\');'; \');';
$db->query($sql);
}


//------------------------- Speichern der neuen Ergebnisse in der DB -------------------------
if ($button1=="Bewerten"){
$sql = 'SELECT `umfragenid` FROM `umfragen1` WHERE 1 AND `Frage` = \'CMS_VALUE[0]\' AND `umfragenidcat` = \''.$idcat.'\' LIMIT 0, 30';
$db->query($sql);
$ID = $db->f("umfragenid");
$umfragecat = $db->f("umfragenidcat");

$sql = 'REPLACE INTO `umfragen1` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `zaehlung5`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `ergebnis5`,`umfragenidcat`) VALUES (\''.$ID.'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\',\'CMS_VALUE[5]\', \''.$ergeb1.'\', \''.$ergeb2.'\', \''.$ergeb3.'\', \''.$ergeb4.'\', \''.$ergeb5.'\', \''.$idcat.'\');'; \');';

$db->query($sql);
}



echo "<form action=\"".$auth->url()."\" method=\"post\" name=\"speichern\">";
//if($button1!="Bewerten"){

//---------------------------- Umfrage aus der DB auslesen -----------------------------------
$db = new DB_Contenido;
$db->query('SELECT * FROM umfragen1 WHERE `Frage` = \'CMS_VALUE[0]\'');
$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");

//--------------- Fragen und Antwortmöglichkeiten darstellen ---------------------------------
echo "<table width=100% border=0><tr><td height=\"15\" colspan=\"5\"><hr size=1 color=\"#999999\"><br>$frage</td></tr>
<tr>
<td bgcolor=#009900><input value=\"1\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort1."</td>
<td bgcolor=#999999><input value=\"2\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort2."</td>
<td bgcolor=#cccccc><input value=\"3\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort3."</td>
<td bgcolor=#999999><input value=\"4\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort4."</td>
<td bgcolor=#990000><input value=\"5\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort5."</td>
</tr>
<tr>
<td align=center colspan=5><br><input type=\"submit\" name=\"button1\" value=\"Bewerten\"><br>
</tr></table>";
echo "</form>";
//}else{
echo '</td></tr></table>';
//}

?>
Gruß maTTos

Verfasst: Mi 21. Jul 2004, 08:00
von malsdgtac
Hallo maTTos

Ich habe den Output so geändert, (für den Input nicht notwendig) dass nicht die $idcat sondern die $idart gespeichert wird, bei mir funktioniert das jetzt so richtig.

Hier der Code für den Output:

Code: Alles auswählen

<?php 

//----------------------------- Datenbank auswertung ---------------------------------------- 
$db = new DB_Contenido; 
$db->query('SELECT * FROM umfragen1 WHERE `Frage` = \'CMS_VALUE[0]\' AND `umfragenidcat` = \''.$idart.'\''); 
$db->next_record(); 
$frage = $db->f("Frage"); 
$ergeb1 = $db->f("ergebnis1"); 
$ergeb2 = $db->f("ergebnis2"); 
$ergeb3 = $db->f("ergebnis3"); 
$ergeb4 = $db->f("ergebnis4"); 
$ergeb5 = $db->f("ergebnis5"); 
$umfragecat = $db->f("umfragenidcat"); 

if ($umfragecat==$idart){ 

switch($Radio1){ 
case 1 : { 
$ergeb1++; 
break; 
} 
case 2 : { 
$ergeb2++; 
break; 
} 
case 3 : { 
$ergeb3++; 
break; 
} 
case 4 : { 
$ergeb4++; 
break; 
} 
case 5 : { 
$ergeb5++; 
break; 
} 
} 

//--------------------------- Darstellung im Balkendiagramm ---------------------------------- 

$gesamt = $ergeb1+$ergeb2+$ergeb3+$ergeb4+$ergeb5; 

echo '<br><br><center><table width=100%><tr><td valign=top>'; 

echo "<font face=arial><b>","$gesamt","</b> Votings ergaben "; 
$durchschnitt = ($ergeb1*1)+($ergeb2*2)+($ergeb3*3)+($ergeb4*4)+($ergeb5*5); 
$ergebnis50 = $durchschnitt/$gesamt; 

if ( $ergebnis50 > 0 && $ergebnis50 <= 1.7) 
{ 
echo "eine <b>gute Bewertung</b> des Beitrags <img src=upload/system/green.gif>"; 
} elseif ( $ergebnis50 > 1.7 && $ergebnis50 <= 2.7) { 
echo "eine <b>überdurchschnittlich gute Bewertung</b> des Beitrags <img src=upload/system/l_green.gif>"; 
} elseif ( $ergebnis50 > 2.7 && $ergebnis50 <= 3.3) { 
echo "eine <b>neutrale Bewertung</b> des Beitrags <img src=upload/system/neutral.gif>"; 
} elseif ( $ergebnis50 > 3.3 && $ergebnis50 <= 4.3) { 
echo "eine <b>unterdurchschnittlich schlechte Bewertung</b> des Beitrags <img src=upload/system/l_red.gif>"; 

} elseif ( $ergebnis50 > 4.3 ) { 
echo "eine <b>schlechte Bewertung</b> des Beitrags <img src=upload/system/red.gif>"; 
} else { 
echo "noch <b>keine Bewertung</b> des Beitrags"; 
} 

} else { 
echo 'Es liegen noch keine Bewertungen vor'; 
$sql = 'INSERT INTO `umfragen1` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `zaehlung5`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `ergebnis5`, `umfragenidcat`) VALUES (\'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\',\'CMS_VALUE[5]\', \'0\', \'0\', \'0\', \''.$idart.'\');'; \');'; 
$db->query($sql); 
} 


//------------------------- Speichern der neuen Ergebnisse in der DB ------------------------- 
if ($button1=="Bewerten"){ 
$sql = 'SELECT `umfragenid` FROM `umfragen1` WHERE 1 AND `Frage` = \'CMS_VALUE[0]\' AND `umfragenidcat` = \''.$idart.'\' LIMIT 0, 30'; 
$db->query($sql); 
$ID = $db->f("umfragenid"); 
$umfragecat = $db->f("umfragenidcat"); 

$sql = 'REPLACE INTO `umfragen1` (`umfragenid`, `Frage`, `zaehlung1`, `zaehlung2`, `zaehlung3`, `zaehlung4`, `zaehlung5`, `ergebnis1`, `ergebnis2`, `ergebnis3`, `ergebnis4`, `ergebnis5`,`umfragenidcat`) VALUES (\''.$ID.'\', \'CMS_VALUE[0]\', \'CMS_VALUE[1]\', \'CMS_VALUE[2]\', \'CMS_VALUE[3]\', \'CMS_VALUE[4]\',\'CMS_VALUE[5]\', \''.$ergeb1.'\', \''.$ergeb2.'\', \''.$ergeb3.'\', \''.$ergeb4.'\', \''.$ergeb5.'\', \''.$idart.'\');'; \');'; 

$db->query($sql); 
} 



echo "<form action=\"".$auth->url()."\" method=\"post\" name=\"speichern\">"; 
//if($button1!="Bewerten"){ 

//---------------------------- Umfrage aus der DB auslesen ----------------------------------- 
$db = new DB_Contenido; 
$db->query('SELECT * FROM umfragen1 WHERE `Frage` = \'CMS_VALUE[0]\''); 
$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"); 

//--------------- Fragen und Antwortmöglichkeiten darstellen --------------------------------- 
echo "<table width=100% border=0><tr><td height=\"15\" colspan=\"5\"><hr size=1 color=\"#999999\"><br>$frage</td></tr> 
<tr> 
<td bgcolor=#009900><input value=\"1\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort1."</td> 
<td bgcolor=#999999><input value=\"2\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort2."</td> 
<td bgcolor=#cccccc><input value=\"3\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort3."</td> 
<td bgcolor=#999999><input value=\"4\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort4."</td> 
<td bgcolor=#990000><input value=\"5\" type=\"radio\" name=\"Radio1\">&nbsp;&nbsp;".$antwort5."</td> 
</tr> 
<tr> 
<td align=center colspan=5><br><input type=\"submit\" name=\"button1\" value=\"Bewerten\"><br> 
</tr></table>"; 
echo "</form>"; 
//}else{ 
echo '</td></tr></table>'; 
//} 

?> 

Verfasst: Mi 21. Jul 2004, 08:48
von Zeitgeist
HI,
Darth Vader benutzt meines Wissens nach die Tabelle "Umfragen" nicht mehr
Das ist doch in Poll und Poll_log gewandert...

Ich denke, besser wäre es, wenn jemand sein Modul erweitert und das Cookie Problem lösen würde...

Es kann keine neue Umfrage angelegt werden, weil das Cookie der alten Umfrage die Leute sperrt, die bereits (die alte Frage) abgestimmt haben.

Aber die LOG Funktionen (mit IP Sperre für Zeit X) finde ich sehr gut (bei Darth)

Greets
TimeSpirit

Verfasst: Mi 21. Jul 2004, 12:12
von maTTos
Hi smac, genau so hatte ich mir das vorgestellt. Vielen Dankl! Im zweiten Schritt, werde ich das Modul mal richtig stylen und überflüssigen Krempel rausschmeißen.
Eine Sache ist mir noch aufgefallen (Schönheitsfehler): Ich muss zu Beginn des Votes zweimal wählen, um eine Stimme zu erhalten. Beim der ersten Bewertung wird ein Eintrag in der DB angelegt und erst bei der zweiten Bewertung wird ein Ergebnis eingetragen. Ist das bei Dir auch so? Kannst Du das so ändern, dass DB-Eintrag und Stimme direkt in einem erfolgen?

@Zeitgeist: Das neue Voting-Modul von DV kam bei mir noch nicht zum Einsatz. Wenn es ähnlich aufgebaut sein sollte, wie das derzeitig bearbeitete Modul, denke ich, dass eine Neuauflage Sinn macht. Die IP-Logfunktion ist eine feine Sache. Ich bin zumindest froh, dass es jetzt überhaupt eine Version gibt, die es tut.

Greetz maTTos

Verfasst: Mi 21. Jul 2004, 21:54
von Darth-Vader
wenn ihr das cookie-prob löst wäre klasse, ich hab im mom eh zu viel zu tun mit klausuren und arbeiten + umzug nach stuttgart.


aber wenn ihr es net macht is auch ok, spä im sept. nach meinem umzug kümmer ich mich um den bug!

wenn ihr es macht, könnt ihr mir ja mal irgendwie mitteilen wie euer fix aussieht und wenn er passt, übernehm ich den so (mit euren copyrights) in das "umfragenmodul"

wie die table bei mir heisst, hängt vom release ab, das letzte release verwendet definitiv poll (oder polls) und poll_log ...

Verfasst: Mi 21. Jul 2004, 22:59
von Zeitgeist
...September...
momentan ist es wahrlich zum heulen :cry:

Verfasst: Mi 21. Jul 2004, 23:48
von Darth-Vader
hey, du kannst gerne meinen scheiß nach stuttgart für mich karren, die wohnung einrichten, die rechnungen bezahlen bzw. für mich schaffen gehen.... und dann kümmer ich mich um die bugs!


deal!? ;) :lol:

Verfasst: Do 22. Jul 2004, 02:42
von Zeitgeist
nee Darth,
habs im anderen Beitrag schon geschrieben.... :!:

DU hast ja wirklich gute Gründe, würde mir NIE einfallen/anmassen DICH zu kritisieren :!:

"Früher" (bis vor ein paar Wochen) war hier nur wesentlich mehr "los"
und es fand sich immer der ein oder andere der "einsprang" und Lösungen beisteuerte...aber momentan...tritt sich alles irgendwie fest

Man(n) möchte ja auch gelegentlich etwas anderes Voten lassen, mein Kd hat schon noch die ein oder andere Frage an die User

"wir" leben ja auch gern vorübergehend mit einer Notlösung, Auskunft ob es reicht, den Cookie Namen zu ändern würde schon vollkommen reichen
Aber Dein Cookie greift auf die DB zu und da ist es (zumindest mir) zu riskant daran unwissenderweis rumzudoktern/experimentieren

Der Bug ist ja nun schon länger bekannt...und ich bin der Meinung, Bugs zu beseitigen ist wichtiger als das Rad neu zu erfinden...

Aber wie geschrieben, seit einiger Zeit wird`s immer stiller (allgemein, auch rund um Contenido (4.5/4.6) selbst)

am besten ich schreib (auch) nichts mehr
TimeSpirit

Verfasst: Do 22. Jul 2004, 08:14
von kummer
@zeitgeist

nicht verzweifeln zeitgeist! du musst halt einfach auch ein bisschen geduld haben. ich habe für mich selber ein voting-modul gemacht, welches ich noch nicht veröffentlicht habe. dieses liesse sich ohne weiteres für verschiedenste umfragen verwenden (anpassung im php-code allerdings erforderlich).

ein beispielanwendung findest du hier:
http://www.w3concepts.net/1/1/51/130.html

falls interesse besteht, werde ich es auch publizieren.

gruss,
andreas

ps: funzt ohne cookies. auf cookies ist kein verlass: (1) sie können browserseitig ausgeschalten sein, (2) sie können gelöscht worden sein. bei meinem voting-modul wird die verwendete ip für 30 tage gesperrt (je umfrage). die sperre lässt sich aber sehr einfach auf eine kürzere oder auch länger zeit anpassen.

Verfasst: Do 22. Jul 2004, 08:29
von Zeitgeist
Hallo "Kummer",
ich gedulde mich wirklich immer soweit es geht...
n paar Sachen/BUG`s sind schon länger bekannt...

Die reine IP Sperre über mehrere Tage ist recht effektlos, in 98% der Fälle max. 24h wirksam.
(Neue Einwahl=neue IP und die wahrscheinlichkeit dass evtl. ein anderer die bereits benutzte IP bei seiner Einwahl bekommt)

die Kombi mit dem Cookie fand ich recht sinnvoll weil es (auch meinen)"Spammer" nervt/demotiviert immer das Cookie zu löschen.
Bei betreffendem Umfragemodul kann bei abgeschalteten oder abgelehnten Cookies nicht abgestimmt werden.
Da hat Darth wirklich einiges sehr gut durchdacht.

Ich schau`s mir dennoch mal an ...

Thx for Reaktion
TimeSpirit