Voting System

  • Themenstarter Themenstarter Blümchen
  • Beginndatum Beginndatum
B

Blümchen

Guten Abend euch allen,

ich habe mal wieder ein Problem und komme nicht weiter. Mein Freund hatte die Idee dass man einzelne Locations bewerten könnte. Ich finde die Idee auch ganz gut und stelle mir das so vor.

Auf der Seite info_disco.php soll einen weitere Rubrik eingerichtet werden die nehmen ich einfach mal Voting. Das stelle ich mir dann so vor:

1 – 2 – 3 – 4 – 5 – 6 so darunter oder eben daneben sollen eben dann auch RadioButtons hin. Wie ich das mir genau vorgestellt habe, das seht Ihr hier:


PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p align="center"><strong>Voting f&uuml;r diese Disco</strong></p>
<blockquote>
  <blockquote>
    <blockquote>
      <form name="form1" method="post" action="">
        <table width="50%"  border="0" align="center">
          <tr>
            <td height="25"><div align="center"><em>Note 1 </em></div></td>
            <td><div align="center"><em>Note 2 </em></div></td>
            <td><div align="center"><em>Note 3 </em></div></td>
            <td><div align="center"><em>Note 4 </em></div></td>
            <td><div align="center"><em>Note 5 </em></div></td>
            <td><div align="center"><em>Note 6 </em></div></td>
          </tr>
          <tr>
            <td height="32"><div align="center">
              <input type="radio" name="radiobutton" value="radiobutton">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="radiobutton">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="radiobutton">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="radiobutton">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="radiobutton">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="radiobutton">
            </div></td>
          </tr>
          <tr>
            <td height="32" colspan="6"><div align="center">
              <input type="submit" name="Submit" value="&gt;&gt;&gt; Voting abgeben">
            </div></td>
          </tr>
        </table>
      </form>
    </blockquote>
  </blockquote>
</blockquote>
<p>&nbsp;</p>
</body>
</html>

OK nun kommt meine Frage wie muss ich das jetzt umsetzten? Kann mir da jemand helfen und vor allem wie muss ich die Tabelle erweitern? Hier mal die Tabelle wie ich dir bis jetzt habe.:

-- Tabellenstruktur für Tabelle `discos_in_berlin`
--

CREATE TABLE `discos_in_berlin` (
`id` int(6) NOT NULL auto_increment,
`name` varchar(200) NOT NULL default '',
`platz` varchar(200) default NULL,
`ort` varchar(200) default NULL,
`telefon` varchar(200) default NULL,
`mail` varchar(200) default NULL,
`url` varchar(200) default NULL,
`info` varchar(200) default NULL,
`bild` varchar(200) default NULL,
`straße` varchar(100) default NULL,
`aktiv` int(2) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=40 ;

So nun habe ich mal alles aufgeschrieben was ich denke was man braucht oder? Ach ja bevor ich das dann noch vergessen habe, wenn man bei dem Script dann auf abschicken klickt, dann sollte man eine anzeige kommen wo dann eben das GESAMMT Ergebniss dagestellt wird.

Gruß Blümchen
 
Ich würde eine eigene Tabelle für das Voting machen:

Tabelle Disco_Vote
  • VoteID, int, Primary
  • DiscoID, int, Foreign Key
  • UserID, int, Foreign Key, Id des Users oder null, für Gäste
  • VoteValue, int, <- 1 bis 6
  • VoteTime, datetime
  • IP, char, ggf. für Sperre, damit nicht tausendmal hintereinander abgestimmt wird
  • ..., was Dir noch so einfällt
Mit GROUP BY DiscoID und der Funktion AVG kannst Du die Auswertung abfragen.

Gruß hpvw
 
Hallo

Ich würde zu allererst mal den Radio Buttons den richtigen Value Wert geben also so

Code:
          <tr>
            <td height="32"><div align="center">
              <input type="radio" name="radiobutton" value="1">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="2">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="3">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="4">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="5">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="6">
            </div></td>
          </tr>

Denn wenn du dann mit PHP die Variable radiobutton per Post holst dann steht die Bewertung drinnen also so:

PHP:
$bewertung=$_POST['radiobutton'];

Dann zur Tabelle, wenn du einfach nur die Discos bewerten willst dann brauchst du einfach nur eine weitere Spalte zb bewertung mit dem Wert INT und den Wert darin erhöhst du bei jedem abgegebenen Wert.

Wenn du allerdings das ganze erweitert machen willst dann machst du eine eigene Tabelle für die Votings und dann kann jeder User zb für seinen Vote noch ein Kommentar dazu abgeben!

Fürs Gesamtergebnis einfach nach der Spalte bewertung sortieren dann die Discos auslesen!

Hoffe ich konnte ein wenig helfen!

Grüße Matz
 
matzseesi hat gesagt.:
Dann zur Tabelle, wenn du einfach nur die Discos bewerten willst dann brauchst du einfach nur eine weitere Spalte zb bewertung mit dem Wert INT und den Wert darin erhöhst du bei jedem abgegebenen Wert.
Wer also sieben Mal mit 1 (nach dt. Schulnoten) bewertet wird, steht schlechter da, als einer der einmal eine 6 bekommt. Das wird nicht mit einem einzelnen zusätzlichen Attribut in der Tabelle gehen. Dazu gehört wenigstens eine weitere Spalte, die die Anzahl der Votes für diesen Kandidaten speichert.

Gruß hpvw
 
Hallo,

so nun habe ich mal eine Tabelle angelegt das stimmt doch so oder?

CREATE TABLE `voting_discos_in_berlin` (
`VoteID` INT( 100 ) NOT NULL AUTO_INCREMENT ,
`DiscoID` INT( 100 ) NOT NULL ,
`UserID` VARCHAR( 30 ) NOT NULL ,
`VoteValue` INT( 6 ) NOT NULL ,
`VoteTime` DATETIME NOT NULL ,
PRIMARY KEY ( `VoteID` )
) TYPE = MYISAM ;

Den User kann ich nicht mit einer ID erkennen lassen er wird mit dem NickName angesprochen.

Das mit dem Formular das habe ich auch nun so geändert:

Code:
      <form name="form1" method="post" action="">
        <table width="50%"  border="0" align="center">
          <tr>
            <td height="25"><div align="center"><em>Note 1 </em></div></td>
            <td><div align="center"><em>Note 2 </em></div></td>
            <td><div align="center"><em>Note 3 </em></div></td>
            <td><div align="center"><em>Note 4 </em></div></td>
            <td><div align="center"><em>Note 5 </em></div></td>
            <td><div align="center"><em>Note 6 </em></div></td>
          </tr>
          <tr>
            <td height="32"><div align="center">
              <input type="radio" name="radiobutton" value="1">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="2">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="3">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="4">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="5">
            </div></td>
            <td><div align="center">
              <input type="radio" name="radiobutton" value="6">
            </div></td>
          </tr>
          <tr>
            <td height="32" colspan="6"><div align="center">
              <input type="submit" name="Submit" value="&gt;&gt;&gt; Voting abgeben">
            </div></td>
          </tr>
        </table>
      </form>

So wie muss ich nun weiter machen?

Gruß Blümchen
 
Zuletzt bearbeitet von einem Moderator:
Blümchen hat gesagt.:
So wie muss ich nun weiter machen?
Bei jedem Vote, schreibst Du eine Zeile mit den entsprechenden Daten in die Tabelle.
Für die Abfrage schaust Du Dir die genannte Funktion und group by an.
Wo ist das Problem?
 
wenn die 1 als bestes ergebnis und die 6 als schlechtestes zählt dann brauchst nur immer zusammenzählen oder?

1+1+1+1 = 4 bei 4 votes und
6+6+6+6 = 24 bei 4 Votes somit ist die Disco mit 4 6er votings schlechter als die erste mit 4 1er votings oder?

ist ja auch nur die simpelste methode!
Würde auch eine eigene Tabelle machen! wie du vorgeschlagen hast aber am schnellsten gehts so!

Grüße Matz
 
Hallo,


hpvw hat gesagt.:
Bei jedem Vote, schreibst Du eine Zeile mit den entsprechenden Daten in die Tabelle.
Für die Abfrage schaust Du Dir die genannte Funktion und group by an.
Wo ist das Problem?


Wo das Problem ist das kann ich dir sagen, ich habe das noch nie gemacht und ich weiß gar nicht wie ich das umsetzten kann. Hab das jetzt mal so gemacht. Wie muss denn nun den Code aussehen den ich brauch, dass er mir auch die richtige Disco und so einträgt?

PHP:
<?php
//Konfigurations Datei einbinden
include "../data/config.php";
include "../configs/functions.php";
?>
<html>
<head>

<?php
include "../includes/meta.php";
?>

<link href="../img/css/style.css" rel="stylesheet" type="text/css">

<style type="text/css">
<!--
body {
	background-color: #FFFFFF;
}
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>
<?php $db_bars = mysql_fetch_assoc(mysql_query('SELECT id,name,straße,platz,ort, telefon,info,url,mail, bild,aktiv FROM discos_in_berlin WHERE id = "'.$_GET['id'].'"')); 				?>
<table width="98%">
  <tr>
    <td width="9%"><div align="center"><img src="../img/grafiken/Achtung.gif" width="75" height="91"></div></td>
    <td width="91%"><p><strong><?php echo htmlentities(echo_message($db_bars['name'])); ?><br>
          <br>
    </strong>Keine weiteren Daten gefunden </p></td>
  </tr>
</table>
<p align="center"><strong>Voting f&uuml;r diese Disco</strong></p>
<blockquote>
  <blockquote>
    <blockquote>
      <form name="form1" method="post" action="info_disco.php">
        <table width="50%"  border="0" align="center">
          <tr>
            <td height="25"><div align="center"><em>Note 1 </em></div></td>
            <td><div align="center"><em>Note 2 </em></div></td>
            <td><div align="center"><em>Note 3 </em></div></td>
            <td><div align="center"><em>Note 4 </em></div></td>
            <td><div align="center"><em>Note 5 </em></div></td>
            <td><div align="center"><em>Note 6 </em></div></td>
          </tr>
          <tr>
            <td height="32"><div align="center">
                <input type="radio" name="radiobutton" value="1">
            </div></td>
            <td><div align="center">
                <input type="radio" name="radiobutton" value="2">
            </div></td>
            <td><div align="center">
                <input type="radio" name="radiobutton" value="3">
            </div></td>
            <td><div align="center">
                <input type="radio" name="radiobutton" value="4">
            </div></td>
            <td><div align="center">
                <input type="radio" name="radiobutton" value="5">
            </div></td>
            <td><div align="center">
                <input type="radio" name="radiobutton" value="6">
            </div></td>
          </tr>
          <tr>
            <td height="32" colspan="6"><div align="center">
                <input type="submit" name="Submit" value="&gt;&gt;&gt; Voting abgeben">
            </div></td>
          </tr>
        </table>
      </form>
    </blockquote>
  </blockquote>
</blockquote>
<p>&nbsp;</p>
</body>
</html>

Gruß Blümchen
 
Du solltest in einem hidden-input die ID der Disco mitgeben. Dieses kannst Du dann samt der Note im auswertenden Skript in die DB eintragen.
Ich würde dem Submitbutton noch den Namen "doVote" geben und dann (vom Prinzip her) so vorgehen:
PHP:
if (isset($_POST['doVote'])) {
    mysql_query("INSERT INTO Tabelle SET DiscoID="
        .$_POST['DiscoID'] //Aus dem anzulegenden Hidden-Input
        .", usw.");
}

matzseesi hat gesagt.:
wenn die 1 als bestes ergebnis und die 6 als schlechtestes zählt dann brauchst nur immer zusammenzählen oder?

1+1+1+1 = 4 bei 4 votes und
6+6+6+6 = 24 bei 4 Votes somit ist die Disco mit 4 6er votings schlechter als die erste mit 4 1er votings oder?
Das funktioniert, solange alle Discos gleich häufig bewertet werden. Und das ist, wenn ich das Konzept richtig verstanden habe, nicht gegeben.

Gruß hpvw
 
Ich kram das Thema mal wieder aus.
Und zwar möchte ich Grafiken anzeigen lassen. Da es auch Kommazahlen gibt wird natürlich gerundet.
Ich habe max. 5 Punkte zu vergeben, und möchte dann für die Punkte Sterne anzeigen lassen. Der Rest zu den fehlenden 5 Sternen soll dann mit grauen Sternen ausgefüllt werden.

Ich hab da was mit ner for-Schleife im Kopf, aber ich kenn mich mit den for-Schleifen nicht aus.
 
Zurück