Votingmodul

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Votingmodul

Beitrag 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]
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag 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
Zuletzt geändert von maTTos am Mi 21. Jul 2004, 13:10, insgesamt 1-mal geändert.
MichFress
Beiträge: 750
Registriert: Mo 5. Jan 2004, 22:32
Wohnort: Bochum
Kontaktdaten:

Beitrag von MichFress »

diese Bewertungsmöglichkeit ist nur dummerweise Teil von "PHPMyFAQ", und damit nicht ganz so trivial als Contenido-Modul einsetzbar...
"Es wird keine Handlung geben, keine Geschichte mit ihrer Versprechung auf einen Anfang und ihrer Hoffnung auf ein Ende." (Andrzej Stasiuk)
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag 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".
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag 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:
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag 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
Zuletzt geändert von maTTos am Mi 21. Jul 2004, 13:11, insgesamt 1-mal geändert.
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag 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>'; 
//} 

?> 
Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag 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
Rechtschreibfehler sind nicht als "Fehler" sondern als Hommage an Pisa zu verstehen ;)
Keine Einträge im Errorlog :)
Contenido 4.4.4 - Firefox -
maTTos
Beiträge: 130
Registriert: Fr 27. Jun 2003, 14:14
Kontaktdaten:

Beitrag 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
Darth-Vader
Beiträge: 661
Registriert: So 25. Jan 2004, 19:06
Wohnort: Stuttgart-Bad Cannstatt
Kontaktdaten:

Beitrag 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 ...
Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Zeitgeist »

...September...
momentan ist es wahrlich zum heulen :cry:
Rechtschreibfehler sind nicht als "Fehler" sondern als Hommage an Pisa zu verstehen ;)
Keine Einträge im Errorlog :)
Contenido 4.4.4 - Firefox -
Darth-Vader
Beiträge: 661
Registriert: So 25. Jan 2004, 19:06
Wohnort: Stuttgart-Bad Cannstatt
Kontaktdaten:

Beitrag 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:
Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag 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
Rechtschreibfehler sind nicht als "Fehler" sondern als Hommage an Pisa zu verstehen ;)
Keine Einträge im Errorlog :)
Contenido 4.4.4 - Firefox -
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag 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.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag 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
Rechtschreibfehler sind nicht als "Fehler" sondern als Hommage an Pisa zu verstehen ;)
Keine Einträge im Errorlog :)
Contenido 4.4.4 - Firefox -
Gesperrt