Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrfacheingaben in MySQL speichern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Mehrfacheingaben in MySQL speichern

    Hallöchen. Ich hab ein klitzekleines Problem.
    Ich hab eine MySQL Tabelle die "member" heißt in der sind
    id | name | count
    gespeichert
    es sind 25 mitglieder darin
    So jetzt sollen alle 25 Mitglieder erst einmal ausgegeben werden.

    PHP-Code:
    echo'
    <table style="width:100%">
    <tr>
    <td>Name:</td>
    <td>Counter:</td>
    <td>&nbsp;</td>
    </tr>
    <form action="admin.php?seite=counter&action=send" method="post">'
    ;
    $abfrage mysql_query("SELECT * FROM member");
    while (
    $row mysql_fetch_array($abfrage)) {
    $name $row['name'];
    echo
    '<tr>';
    echo
    "<td>".$row['name']."</td>";
    echo
    "<td>".$row['count']."</td>";
    echo
    '<td><input type="checkbox" name="count"></td>
    </tr>'
    ;
    }
    echo
    '
    <tr>
    <td colspan="3"><input type="submit" value="Absenden"></td>
    </tr>
    </form>
    </table>'

    Wenn jetzt bei dem jeweiligen User (Da Tabelle) die Checkbox gecheckt ist und unten auf dem Submit geklickt wird soll bei allen Usern wo die Checkbox gecheckt ist zu dem aktuellen Counterstand + 1 hinzugefügt werden.
    Leider hat das bisher nicht geklappt wenn ich das mache wird immer nur der letzte Name geupdatet.
    Wie mach ich das jetzt dass alle Mitglieder gleichzeitig geupdatet werden?

    Ich hab irgendwo mal was von einer foreach schleife gehört und auch schon gegoogelt allerdings blick ich das da nicht.
    Kann mir das einer erklären?


  • #2
    Poste doch mal bitte den code, den du benutzt um den counter hoch zu zählen.

    Du kannst deine checkboxen ja schon in ein array schreiben und den Wert des jeweiligen Datensatz zuordnen:

    <input type="checkbox" name="count[]" value="$row['name']">

    Dann würd ich deinem submit button einen namen zuweisen:

    <input type="submit" value="Absenden" name="submit">

    Und bei aufruf der Seite nachdem submit gewählt wurde fragst du ab welche angekreutz waren:

    $submit = $_POST['submit'];
    if(isset($submit))
    {
    foreach($count as $wert)
    {
    $sql = "SELECT * FROM member WHERE name = $wert";
    $abf = mysql_query($sql);
    $row = mysql_fetch_array($abf);
    $zahl = $row[1]++;
    $counter = "UPDATE member SET count = '$zahl' WHERE name = '$row[0]'";
    $update = mysql_query($counter);
    }
    }

    Ich glaub so könnte es klappen aber poste bitte deinen code.

    Kommentar


    • #3
      Zitat von Green_of_Dutch Beitrag anzeigen
      Poste doch mal bitte den code, den du benutzt um den counter hoch zu zählen.
      Gibts noch keinen hab mich getäuscht das gleiche Problem hatte ich auch schon mit <select> dass ich gleich mehrfache selects absende und diese geupdatet werden. Und da wurde auch nur der Letzte Wert geupdatet statt alle...

      Kommentar


      • #4
        Zitat von Zerdux Beitrag anzeigen
        Gibts noch keinen hab mich getäuscht das gleiche Problem hatte ich auch schon mit <select> dass ich gleich mehrfache selects absende und diese geupdatet werden. Und da wurde auch nur der Letzte Wert geupdatet statt alle...
        Naja, is ja auch klar, da die Variable von der Schleife immer wieder überschrieben wird. Deswegen schreiben wir das ja in ein array.

        Kommentar


        • #5
          Du hast bereits die passende Antwort bekommen.

          Kommentar


          • #6
            Danke erst mal für die schnellen Antworten...
            Allerdings ist das Rätsel damit immer noch nicht gelöst:

            Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\admin.php on line 212

            Zeile 212 ist: foreach($count as $wert)

            hmn...

            Kommentar


            • #7
              Ja mit einfach nur copy und paste ist es auch nicht getan -.-

              Kommentar


              • #8
                So, jetzt ist der Error weg scheint als hätte
                $count = $_POST['count'];
                gefehlt....
                jetzt wird in der MySQL aber kein einziges mitglied geupdatet egal ob angekreuzt oder nicht... und ich weiß dass mit c & p nicht alles getan ist. blöd nur dass die angaben oben schon für mein script angepasst waren oder sind.

                Kommentar


                • #9
                  Jetzt wirst du wahrscheinlich ein Array voller $row['name'] haben... mach doch auf der Ergebnisseite einfach mal var_dump($_POST); und schau dir damit an was dein Formular dir liefert

                  Kommentar


                  • #10
                    oder klammer den sql kram kurz aus:
                    /*
                    $sql = "SELECT * FROM member WHERE name = $wert";
                    $abf = mysql_query($sql);
                    $row = mysql_fetch_array($abf);
                    $zahl = $row[1]++;
                    $counter = "UPDATE member SET count = '$zahl' WHERE name = '$row[0]'";
                    $update = mysql_query($counter);
                    */

                    und an der Stelle schreibste:
                    echo $wert."<br>";

                    Kommentar


                    • #11
                      Zitat von Zerdux Beitrag anzeigen
                      und ich weiß dass mit c & p nicht alles getan ist. blöd nur dass die angaben oben schon für mein script angepasst waren oder sind.
                      Das heißt - den bisherigen Code hast du dir auch schon von jemand anderem zusammenbasteln lassen, eigenes Verständnis davon immer noch nahezu null?

                      Dann solltest du dich erst mal ein bisschen mit Grundlagen beschäftigen, sonst kommst du nicht weit. http://www.php.de/php-einsteiger/489...nsammlung.html


                      Und der vorgeschlagene UPDATE-Code ist auch Murks.
                      Abgesehen davon, dass
                      $zahl = $row[1]++;
                      versucht, den Inhalt der spalte name um eins zu erhöhen;
                      - erst auslesen, im Script um eins erhöhen und dann wieder in die Datenbank schreiben, ist nicht nur unsinnig, weil viel zu kompliziert, sondern auch noch fehleranfällig, weil nicht atomar.

                      Das geht mit genau einem UPDATE-Statement,
                      Code:
                      UPDATE tabelle SET spalte = spalte + 1 WHERE ...
                      (Für die Auswahl des Datensatzes sollte natürlich die ID verwendet werden, und nicht der name.)

                      Und wenn du das für mehrere Datensätze gleichzeitig machen willst, dann brauchst du auch nicht x UPDATE-Statements in einer Schleife abfeuern - sondern da reicht eins, welches per WHERE-Klausel die betroffenen Datensätze auswählt, Stichwort IN-Operator.

                      Wird dir jetzt vermutlich alles nicht viel sagen - aber genau deshalb ja auch der Hinweis, dass du dich mit Grundlagen beschäftigen sollst/musst.

                      Kommentar


                      • #12
                        Mit der ersten ausgabe kommt der Text hier:

                        PHP-Code:
                        array(2) { ["count"]=>  array(1) { [0]=>  string(4"deni" } ["submit"]=>  string(8"Absenden" 
                        (Wenn ein Harken in der Checkbox bei User "deni" ist)

                        Und

                        PHP-Code:
                        array(1) { ["submit"]=>  string(8"Absenden" 
                        (Wenn kein Harken in der Checkbox ist)
                        Übrigens ist der Error wieder da das POST alleine hat doch nichts gebracht so wie's ausschaut hatte es vorhin nur übersehen weil es nicht innerhalb des Styles war und die Schriftfarbe schwarz ist genauso wie der Hintergrund.

                        Kommentar


                        • #13
                          Zitat von ChrisB Beitrag anzeigen
                          Das heißt - den bisherigen Code hast du dir auch schon von jemand anderem zusammenbasteln lassen, eigenes Verständnis davon immer noch nahezu null?

                          Dann solltest du dich erst mal ein bisschen mit Grundlagen beschäftigen, sonst kommst du nicht weit. http://www.php.de/php-einsteiger/489...nsammlung.html


                          Und der vorgeschlagene UPDATE-Code ist auch Murks.
                          Abgesehen davon, dass
                          $zahl = $row[1]++;
                          versucht, den Inhalt der spalte name um eins zu erhöhen;
                          - erst auslesen, im Script um eins erhöhen und dann wieder in die Datenbank schreiben, ist nicht nur unsinnig, weil viel zu kompliziert, sondern auch noch fehleranfällig, weil nicht atomar.

                          Das geht mit genau einem UPDATE-Statement,
                          Code:
                          UPDATE tabelle SET spalte = spalte + 1 WHERE ...
                          (Für die Auswahl des Datensatzes sollte natürlich die ID verwendet werden, und nicht der name.)

                          Und wenn du das für mehrere Datensätze gleichzeitig machen willst, dann brauchst du auch nicht x UPDATE-Statements in einer Schleife abfeuern - sondern da reicht eins, welches per WHERE-Klausel die betroffenen Datensätze auswählt, Stichwort IN-Operator.

                          Wird dir jetzt vermutlich alles nicht viel sagen - aber genau deshalb ja auch der Hinweis, dass du dich mit Grundlagen beschäftigen sollst/musst.
                          Falsch, ich hab mir das ganze selber zusammengecodet nur der Nachposter(in) hat ja einen Code geschickt und der war zu meinem Problem angepasst.
                          Die Funktion mit UPDATE kannte ich schon aber in der <form> mit method="post" zu versenden und die passende Update-Funktion dazu hat bisher immer nur den letzten wert gespeichert (wie ich schon mal gesagt hab) nur damals eben mit <select> statt mit checkbox.

                          Hm. Was den Rest betrifft kann ich nicht viel dazu sagen denn Google hat nur genauso viel ausgespuckt wie du gerade geschrieben hast. Für Anfänger total verwirrende und ungenaue Sätze in denen man nicht Versteht was das eine mit dem anderen zutun hat. Jetzt weiß ich nähmlich genauso wenig wie vorher ob ich jetzt mit foreach arbeiten soll oder wie es weiter gehen soll.

                          Kronkrete Beispiele werden in Google nähmlich nicht gezeigt.

                          Kommentar


                          • #14
                            gelöscht

                            Kommentar


                            • #15
                              Zitat von Zerdux Beitrag anzeigen
                              Falsch, ich hab mir das ganze selber zusammengecodet nur der Nachposter(in) hat ja einen Code geschickt und der war zu meinem Problem angepasst.
                              Gut - das ändert aber nichts daran, dass der Code wenig durchdacht aussieht.

                              Die Funktion mit UPDATE kannte ich schon aber in der <form> mit method="post" zu versenden und die passende Update-Funktion dazu hat bisher immer nur den letzten wert gespeichert (wie ich schon mal gesagt hab)
                              Was du dagegen unternehmen sollst, wurde dir auch schon gesagt.

                              Hm. Was den Rest betrifft kann ich nicht viel dazu sagen denn Google hat nur genauso viel ausgespuckt wie du gerade geschrieben hast. Für Anfänger total verwirrende und ungenaue Sätze in denen man nicht Versteht was das eine mit dem anderen zutun hat.
                              So ist das, wenn dir das Grundlagenwissen fehlt - dann kannst du wirklich nicht folgen, wenn dir fachliche Ratschläge gegeben werden.

                              Deshalb ist es an der Zeit, dass du dich intensiver mit den Grundlagen beschäftigst.

                              Kronkrete Beispiele werden in Google nähmlich nicht gezeigt.
                              Ja, böses Google aber auch.

                              Beispiele sind Beispiele, weil sie nicht dein akutes, konkretes Problem lösen - das ist nicht ihr Sinn und Zweck.
                              Ihr Sinn und Zweck ist es, dir einzelne Techniken und Vorgehensweisen zu zeigen, deren Funktion und Wirkungsweise klar zu machen.

                              Aus mehreren solchen Einzelteilen dann das zusammenzusetzen, was dein Problem löst - das ist deine Aufgabe als Programmierer.

                              Kommentar

                              Lädt...
                              X