ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
461
461
EMPFEHLEN
-
Ich habe vor, einen Vote zu programmieren, der mittels MySQL Datenbank auch beliebig viele Optionen haben kann. Leider ist mir nicht ganz verständlich wie das funktioniert - denn mir würde nur die Idee kommen, die Tabellen um einige Felder zu erweitern, wenn mehr Optionen folgen sollen. Allerdings ist das viel zu umständlich und langsam.
Wie würde denn eine performante und praktische Lösung aussehen? Ich habe leider keine Ahnung
"Die Freiheit ist ein Gut, das durch Gebrauch wächst, durch Nichtgebrauch dahinschwindet."
Carl-Friedrich von Weizsäcker - dt. Physiker und Philosoph
-
du willst beliebig viele antwort möglichkeiten haben ? - hab ich das richtig verstanden ? ... gut !
1. Tabelle:
question
mit ID und question spalten.
2. Tabelle
votes
mit question_ID , antwort und der anzahl der votes ...
dann kannst du auch mehrere polls gleichzeitig benutzen.
-
Ganz einfach: Du erstellst dir eine Tabelle mit beispielsweise 4 Feldern: ID, Frage, Antworten, Ergebnis
Erstellst du nun einen neuen Poll, speicherst du die Antworten in ein Array. Dieses Array bringst du dann mittels serialize() in eine speicherbare Form und schreibst es in die Datenbank.
Bsp.:
Beim Auslesen musst du dann nur unserialize() verwenden, und schon hast du wieder ein Array zur Verfügung. Selbiges machst du natürlich mit dem Feld Ergebnis. Da kommt ein Array hinein, das die Anzahl der Antworten enthält.PHP-Code:<?
switch ($_POST['action']) {
case "getanswers": ?>
<h2>Neuer Poll</h2>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="hidden" name="action" value="addpoll">
<input type="hidden" name="frage" value="<?=$_POST['frage']?>">
Frage: <?=$_POST['frage']?><br>
<? for ($i=1; $i<=$_POST['antworten']; $i++) { ?>
Antwort <?=$i?>: <input type="text" name="antworten[]"><br>
<? } ?>
<input type="submit">
</form> <?
break;
case "addpoll":
$frage = $_POST['frage'];
$antworten = serialize($_POST['antworten']);
mysql_query("INSERT INTO polls (Frage, Antworten) VALUES ('$frage', '$antworten')");
echo "Poll eingetragen!";
break;
default: ?>
<h2>Neuer Poll</h2>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="hidden" name="action" value="getanswers">
Frage: <input type="text" name="frage"><br>
Anzahl der Antworten: <input type="text" name="antworten"><br>
<input type="submit">
</form> <?
} ?>
Alles klar?
reima
PS: Oder so @rookie... Bei genauerer Betrachtung gefällt mir deine Möglichkeit sogar schon fast besser
Geändert von Matthias Reitinger (21.05.02 um 15:21 Uhr)
„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
*zwinker*
-
Also, so ganz verstanden hab ich das leider nichtOriginal geschrieben von rookie
du willst beliebig viele antwort möglichkeiten haben ? - hab ich das richtig verstanden ? ... gut !
1. Tabelle:
question
mit ID und question spalten.
2. Tabelle
votes
mit question_ID , antwort und der anzahl der votes ...
dann kannst du auch mehrere polls gleichzeitig benutzen.
Kannst du mir mal in etwa die Tabellenstrukturen hinschreiben und die Funktion jedes Feldes erklären?
Das wäre echt nett....
"Die Freiheit ist ein Gut, das durch Gebrauch wächst, durch Nichtgebrauch dahinschwindet."
Carl-Friedrich von Weizsäcker - dt. Physiker und Philosoph
-
so ungefähr würd' ich das machen.PHP-Code:
CREATE TABLE question (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
question VARCHAR(30) NOT NULL
);
CREATE TABLE answers (
question_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
answer VARCHAR(30) NOT NULL,
votes INT(10) DEFAULT "0"
);
question = Frage,
answer = Antwort,
votes = Anzahl der Votes,
question_id = die ID aus der anderen Tabelle.
so war das einleuchtend ? :P
-
also du machst zwei Tabellen, die eine heisst question, die andere votes.
in question wird eine id für jede frage festgehalten (kann ja ruhig auto-increment sein) und natürlich die jeweilige frage.
in votes dagegen kommen die möglichen antworten, die anzahl der votes, und mit question_id wird festgelegt, auf welche id (bei question) sich diese antwort bezieht.
z.B. :
CREATE TABLE question
(
id int(11) NOT NULL auto_increment,
question text NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE votes
(
question_id int(11) NOT NULL default '0',
antwort varchar(250) NOT NULL default '',
votes int(11) NOT NULL default '0'
)
-
nachlaber :P
das ist doch das gleich was ich 10 min. früher gespostet hab .. *g*
-
oh, das hab ich gar nicht gesehen...sorry.
das kommt davon, wenn man erst alle fenster wo man posten will aufmacht, dann erst duschen geht und dann erst antwortet...
ähem, ist das peinlich...
-
passiert doch jeden mal .... ab und zu brauch man halt ne brille *g*
Ähnliche Themen
-
Wie funktionieren OLE-Abfragen?
Von Name im Forum Borland CBuilder und VCLAntworten: 0Letzter Beitrag: 10.10.09, 13:47 -
Einträge mit den meisten Votes ausgeben
Von Identität im Forum Relationale DatenbanksystemeAntworten: 7Letzter Beitrag: 14.10.08, 22:27 -
Bewertungssystem problem mit Rate geteilt durch Votes
Von Bernie33 im Forum PHPAntworten: 2Letzter Beitrag: 19.04.08, 10:09 -
lustige votes
Von krey im Forum Fun-ForumAntworten: 2Letzter Beitrag: 30.06.04, 16:26 -
Wie funktionieren Arrays?
Von fLoOmY im Forum PHPAntworten: 3Letzter Beitrag: 13.12.01, 15:49





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren