tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
461
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von FactorX
    FactorX FactorX ist offline Mitglied Silber
    Registriert seit
    Mar 2001
    Beiträge
    82
    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

  2. #2
    rookie rookie ist offline Mitglied Gold
    Registriert seit
    Mar 2002
    Beiträge
    140
    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.
     

  3. #3
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    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.:
    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> <?
    ?>
    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.

    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

  4. #4
    rookie rookie ist offline Mitglied Gold
    Registriert seit
    Mar 2002
    Beiträge
    140
    *zwinker*
     

  5. #5
    Avatar von FactorX
    FactorX FactorX ist offline Mitglied Silber
    Registriert seit
    Mar 2001
    Beiträge
    82
    Original 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.
    Also, so ganz verstanden hab ich das leider nicht
    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

  6. #6
    rookie rookie ist offline Mitglied Gold
    Registriert seit
    Mar 2002
    Beiträge
    140
    PHP-Code:
    CREATE TABLE question (
             
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
             
    question VARCHAR(30NOT NULL
             
    );

    CREATE TABLE answers (
             
    question_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
             
    answer VARCHAR(30NOT NULL,
                 
    votes INT(10) DEFAULT "0"
             
    ); 
    so ungefähr würd' ich das machen.

    question = Frage,
    answer = Antwort,
    votes = Anzahl der Votes,
    question_id = die ID aus der anderen Tabelle.

    so war das einleuchtend ? :P
     

  7. #7
    Avatar von Shiivva
    Shiivva Shiivva ist offline Mitglied Platin
    Registriert seit
    Jun 2001
    Ort
    Bi, NRW
    Beiträge
    546
    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'
    )
     
    404-Seiten gesucht!






  8. #8
    rookie rookie ist offline Mitglied Gold
    Registriert seit
    Mar 2002
    Beiträge
    140
    nachlaber :P

    das ist doch das gleich was ich 10 min. früher gespostet hab .. *g*
     

  9. #9
    Avatar von Shiivva
    Shiivva Shiivva ist offline Mitglied Platin
    Registriert seit
    Jun 2001
    Ort
    Bi, NRW
    Beiträge
    546
    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...
     
    404-Seiten gesucht!






  10. #10
    rookie rookie ist offline Mitglied Gold
    Registriert seit
    Mar 2002
    Beiträge
    140
    passiert doch jeden mal .... ab und zu brauch man halt ne brille *g*
     

Ähnliche Themen

  1. Wie funktionieren OLE-Abfragen?
    Von Name im Forum Borland CBuilder und VCL
    Antworten: 0
    Letzter Beitrag: 10.10.09, 13:47
  2. Einträge mit den meisten Votes ausgeben
    Von Identität im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 14.10.08, 22:27
  3. Antworten: 2
    Letzter Beitrag: 19.04.08, 10:09
  4. lustige votes
    Von krey im Forum Fun-Forum
    Antworten: 2
    Letzter Beitrag: 30.06.04, 16:26
  5. Wie funktionieren Arrays?
    Von fLoOmY im Forum PHP
    Antworten: 3
    Letzter Beitrag: 13.12.01, 15:49