voting funktion erstellen -bitte helfen...

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • voting funktion erstellen -bitte helfen...

    hallo liebe leser!

    ich arbeite seit ein paar wochen mit php und mysql und soweit funktioniert alles.
    jetzt bin ich aber bei einem problem angelangt, wo ich nicht weiter komme!

    ich habe eine mysql db mit cd´s drin. dieser soll der user bewerten. daher:
    daten aus der tabelle "cd" werden abgefragt
    dann soll der user mir checkboxen/einem menü zu jedem gefundenem datensatz punkte vergeben können.

    mein problem: wie füge ich MEHERE datensätze auf einmal mit den werten aus den checkboxen/dem menü in die tabelle "vote" ein?

    ein ds wär kein problem, mein problem ist es eben mehrere auf einmal einzufügen...auch umfangreiche suchenhaben mich nicht weitergebracht

    für jede hilfe wäre ich sehr dankbar!

    lg
    carola

  • #2
    meinst du sowas:
    PHP Code:
    INSERT INTO tabelle (foobarVALUES ('a','b'),('c','d'),(... 
    Kissolino.com

    Comment


    • #3
      hallo wurzel, danke erstmal für die rasche antwort

      mein ansatz war, dass beim einfügen alle werte durchlaufen und dann in die tabelle eingefügt werden.

      hab dann in einem anderen forum das gefunden:

      if ($_POST["Submit"] == "Purchase") // when Purchase button is pressed
      {
      //Create array
      $sql = "select * from cd";
      $result = mysql_query($sql);
      while($row = mysql_fetch_row($result))
      {
      $myArray[$row[2]] = $row[3] ;
      }
      //now we expand it
      while(list($ite,$qty) = each($myarray))
      {
      //Inserts records into USERORDER table
      mysql_query("INSERT INTO vote (ItemID, punkte) VALUES ('$ite', '$qty')");
      }
      }

      $query_record = sprintf("select * from cd");
      $result = mysql_query($query_record, $db);

      ?>


      hier wird dann ein ds nach dem anderen wie von mir gewünscht eingefügt.
      soweit so gut, aber ich will ja die werte in $row[3] durch meine checkboxen/mein menü ersetzen.

      ist das möglich? falls ich da jetzt völlig falsch unterwegs bin, bitte nicht köpfen...

      Comment


      • #4
        hmm...
        - du generierst ein formular mit checkoxen aus der datenbank
        => <input ... name="checkbox[ItemId]" value="punkt">

        - print_r($_POST) sollte beim verarbeitenden script zeigen, was aus dem form ankommt

        und so könntest du es eintragen
        PHP Code:
        foreach($_POST['checkbox'] as $k => $val)
        {
           
        $ins[] = '("'.$k.'","'.$v.'")';
        }
        $sql 'INSERT INTO vote (ItemID, punkte) VALUES'implode(','$ins).' ';
        mysql_query($sql); 

        btw: bitte nutz die php-tags beim posten von code
        Kissolino.com

        Comment


        • #5
          hallo und falls es nach so langer zeit noch jemand lesen sollte...ich verstehe leider an deinem beispiel manches nicht und hab selbst das folgende fabriziert:

          daten werden in einem array vom formular gesendet und mit foreach in die datenbank eingelesen:

          PHP Code:
          foreach ($_POST['ItemID'] as  $test) { 
              
          $sql "INSERT INTO vote1 (ItemID, punkte) VALUES ($test$test2)"
              
          mysql_query ($sql) or die(mysql_error()); 

          funktioniert mit EINEM array ($test) ja wunderbar, aber ich will ja auch $test2 in die db schreiben....

          bitte um hilfe - steh da ziemlich an!

          lg
          carola

          Comment


          • #6
            - wo kommt denn test2 her, wo wird das definiert?
            - setz mal vor dem foreach folgendes ein:
            PHP Code:
            echo '<pre>';
            print_r($_POST['ItemID']);
            exit; 
            und poste mal die ausgabe
            Kissolino.com

            Comment


            • #7
              guten morgen!

              danke für die antwort!


              ausgabe deines befehls (sind die korrekten ausgaben der ItemID´s):

              Array
              (
              [0] => 1
              [1] => 2
              [2] => 4
              [3] => 5
              [4] => 6
              [5] => 7
              [6] => 8
              [7] => 9
              [8] => 10
              [9] => 11
              [10] => 13
              )

              $test und $test2 kommen als array aus der tabelle und funktionieren beide :


              PHP Code:
               <?
                foreach($_POST['ItemID'] as $test)
                echo $test2,"<br>";
                ?>

              // ---- und:

                <?
                foreach($_POST['select'] as $test2)
                echo $test2,"<br>";
                ?>
              die arrays werden also beide durchlaufen. das einzige problem:
              ich kann nicht beide auf einmal mit insert in die db einfügen. entweder füge ich mit nur für alle ds die korrekte ItemID ein (wie unten im php), oder eben die punkte. wie funktionierts mit beiden auf einmal?

              PHP Code:
              foreach ($_POST['ItemID'] as  $test) { 
                  
              $sql "INSERT INTO vote1 (ItemID, punkte) VALUES ($test$test2)"

              liebe grüße

              Comment


              • #8
                mach mal die gleiche ausgabe für $_POST['select'] bitte
                Ich denke, also bin ich. - Einige sind trotzdem...

                Comment


                • #9
                  ok - das gibt die werte des menüs aus, die gewählt wurden:

                  Array
                  (
                  [0] => 2
                  [1] => 3
                  [2] => 2
                  [3] => 2
                  [4] => 2
                  [5] => 2
                  [6] => 1
                  [7] => 3
                  [8] => 2
                  [9] => 2
                  [10] => 1
                  )

                  menü in vote.php (alles andere findet dann ja in der seite statt, an die es gesendet wird-auswertung.php):

                  <select name="select[]">
                  <option value="1">1</option>
                  <option value="2">2</option>
                  <option value="3">3</option>
                  </select>

                  es kommt also eh alles in auswertung.php an?!? habs mir ja testweise auch schon so ausgegeben:
                  PHP Code:
                   <?
                    foreach($_POST['ItemID'] as $test)
                    echo $test,"<br>";
                    ?>
                     <?
                    foreach($_POST['select'] as $test2)
                    echo $test2,"<br>";
                    ?>

                  Comment


                  • #10
                    PHP Code:
                    foreach($_POST['ItemID'] as $item_key => $item_value)
                    {
                      
                    $sql 'INSERT INTO vote1 (ItemID, punkte) VALUES ('.item_value.', '.$_POST['select'][$item_key].')';
                      echo 
                    $sql.'<br />';
                      
                    mysql_query($sql) or die(mysql_error());

                    so?
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Comment


                    • #11
                      ausser einem kleinen schreibfehler, hätte meins auch laufen sollen:
                      PHP Code:
                      foreach($_POST['ItemId'] as $k => $val)
                      {
                      //   $ins[] = '("'.$k.'","'.$v.'")'; alt
                         
                      $ins[] = '("'.$k.'","'.$val.'")';
                      }
                      $sql 'INSERT INTO vote (ItemID, punkte) VALUES'implode(','$ins).' ';
                      mysql_query($sql); 
                      Kissolino.com

                      Comment


                      • #12
                        also es funktioniert jetzt - vielen dank!!!!

                        die variante von wurzel hat wahrscheinlich bei mir nicht funktioniert, weil ich da zu viel vom rundherum noch nicht kapiert habe.
                        aber ich lerne ja...werde deinen vorschlag auch noch testen.

                        nun die zusammenfassung, falls es mal jemand benötigt:

                        mehrere ds sollen für eine voting funktion auf einmal in eine db eingefügt werden:

                        ds werden ausgegeben und mit einem menü bewertet. menü und ItemID werden jeweils als array an auswertung.php gesendet:

                        <select name="select[]">
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        </select>

                        <input type="hidden" name="ItemID[]" value="<?php echo $row["ItemID"]; ?>">


                        hier werden die ds dann in die db eingefügt:

                        PHP Code:
                        foreach($_POST['ItemID'] as $item_key => $item_value)

                        {

                          
                        $sql 'INSERT INTO vote1 (ItemID, punkte) VALUES ('.$item_value.', '.$_POST['select'][$item_key].')';


                          
                        mysql_query($sql) or die(mysql_error());

                        }

                        Comment


                        • #13
                          leider ist noch ein problem aufgetaucht:

                          wie kann ich nun einen dritten wert (eine session ID) in die db eintragen?

                          mit:
                          $sql = 'INSERT INTO vote1 (ItemID, punkte, artist) VALUES ('.$item_value.', '.$_POST['select'][$item_key].','.$sessionid.')';

                          bekomme ich die fehlermeldung:
                          Unknown column '7aae60072af34f57dfd6972d6d44e008' in 'field list'

                          Comment


                          • #14
                            problem erledigt

                            nun funktionierts:

                            $sql = 'INSERT INTO vote1 (ItemID, punkte, sessionID) VALUES ('.$item_value.', '.$_POST['select'][$item_key].',"'.$sessionId.'")';

                            Comment

                            Working...
                            X