Insert Problem

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

  • Insert Problem

    Hallo zusammen,

    nachdem ich leider lange nichts mehr mit PHP gemacht habe, ist es ziemlich mühsam sich wieder einzuarbeiten . Ich hab folgende Schleife, die soweit ich mich richtig erinnern kann, mal funktioniert hat:
    PHP-Code:
    <?
    include('config.php');

    while (list($key, $value) = each ($_POST['tipp_m1'])) {
        list($key1, $value1) = each ($_POST['tipp_m2']);
            if (strlen(trim($value))) {
            $sql = sprintf("Insert Into `tipps` (`spielID`, `tore_m1`, `tore_m2`, `spieler`) Values ('%s','%s','%s','%s')", 
    mysql_real_escape_string($key), 
    mysql_real_escape_string($value), 
    mysql_real_escape_string($value1), 
    mysql_real_escape_string($_SESSION['bname']));

            }

        }
                if (mysql_query($sql)) {
                echo "Die Tipps wurden erfolgreich gespeichert.";
            } else {
                echo "Die Tipps konnten nicht gespeichert werden. Versuchen Sie es später erneut.";
            }
    ?>
    Sie bekommt die Daten aus folgendem Formular:
    PHP-Code:
    $sql sprintf("SELECT 
                `spiele`.`spielID` AS spielID, 
                `spiele`.`spieltag` AS spieltag, 
                `spiele`.`mannschaft_1` AS mannschaft_1,
                `spiele`.`mannschaft_2` AS mannschaft_2,
                `spiele`.`spielort` AS spielort,
                date_format(`spiele`.`datum`,'%%d.%%m.%%Y') AS `datum`,
                date_format(`spiele`.`datum`,'%%H:%%i Uhr') AS `uhrzeit`,
                `spieler`.`bname`
              FROM 
                `spiele`
              LEFT JOIN 
                `tipps` ON `spiele`.`spielID` = `tipps`.`spielID`
              LEFT JOIN 
                `spieler` ON `tipps`.`spieler` = `spieler`.`bname`
              WHERE `spiele`.`datum` >= NOW()
              AND`spieler`.`bname` IS NULL
              AND `spiele`.`spieltag` = '%s'
              AND `spiele`.`tore_m1` = ''
              AND `spiele`.`tore_m2` = ''"
    ,
              
    mysql_real_escape_string($_GET['gruppe']));


    $query mysql_query($sql) or Die (mysql_error());  

    echo 
    "<h3>Spieltag ".$_GET['gruppe']."</h3>";
    echo 
    "<form method='POST' action='index1.php?a=register_tipp'> \n";
    echo 
    "<table border='1'> \n";
    echo 
    "<tr> \n";
    echo 
    "<td><b>Datum</b></td> \n";
    echo 
    "<td colspan='3'><b>Begegnung</b></td> \n";
    echo 
    "<td colspan='3'><b>Tipp</b></td> \n";
    echo 
    "<td><b>Anstoss</b></td> \n";
    echo 
    "</tr> \n";
    while (
    $spiel mysql_fetch_assoc($query)) {
        echo 
    "<tr> \n";
        echo 
    "<td>".$spiel['datum']."</td> \n";
        echo 
    "<td>".$spiel['mannschaft_1']."</td> \n";
        echo 
    "<td> : </td> \n";
        echo 
    "<td>".$spiel['mannschaft_2']."</td> \n";
        echo 
    "<td><input type='text' name='tipp_m1[".$spiel['spielID']."]' maxlength='2' style='width:20px;'></td> \n";
        echo 
    "<td> : </td> \n";
        echo 
    "<td><input type='text' name='tipp_m2[".$spiel['spielID']."]' maxlength='2' style='width:20px;'></td> \n";
        echo 
    "<td>".$spiel['uhrzeit']."</td> \n";
        echo 
    "</tr> \n";
    }
    echo 
    "<tr> \n";
    echo 
    "<td colspan='9'><input type='submit' value='Tipp eintragen'></td> \n";
    echo 
    "</tr> \n";
    echo 
    "<tr> \n";
    echo 
    "<td colspan='9'><input type='hidden' name='spielerID' value='".$_SESSION['spielerID']."'></td> \n";
    echo 
    "</tr> \n";
    echo 
    "</table> \n";
    echo 
    "</form> \n";} 
    Nun das Problem. Es wird immer nur der letzte Datensatz, sprich der letzte Tipp in die DB geschrieben. Woran könnte es liegen?

    Schönen Abend noch
    Chris

  • #2
    Ähm, weil du nur die letzte Query mittels mysql_query() absendest?

    Rück den Quelltext vernünftig ein, dann fällt sowas schneller auf!

    Kommentar


    • #3
      sry, bin evtl. zu müde aber was meinst du genau? Naja, bin dann auch pennen.
      Gn8

      Kommentar


      • #4
        Postest ne Frage, und lässt sie über Nacht lösen?

        $sql wird x mal überschrieben. In der while-Schleife. Erst nachdem diese durchlaufen wurde, führst du mysql_query() aus und sendest (ausschließlich!) die Letzte Query ($sql) an die Datenbank.

        Wundert dich also nicht wirklich, dass nur der letzte Eintrag erfolgt, oder?

        Kommentar


        • #5
          danke. wollte die Frage nicht über nacht lösen lassen, nur muss ich morgen um 6 wieder arbeiten.

          Kommentar


          • #6
            Ein Wink mit dem Zaunpfahl...

            Dein x-faches insert lässt sich auch in einem einzigen erledigen durch
            insert into blubb (.......) VALUES (.....),(.....),(.....);
            was schneller sein sollte

            abgesehen davon kannst du deine überflüssigen echo
            auch durch Blöcke von <? ?> als auch <?= übersichtlicher gestalten....

            oder noch besser verwende eine Template Engine um den ganzen Formatierungsquatsch gleich aus der Logik zu verbannen
            [color=blue]MfG Payne_of_Death[/color]

            [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
            [color=red]Merke:[/color]
            [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

            Murphy`s Importanst LAWS
            Jede Lösung bringt nur neue Probleme
            Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
            In jedem kleinen Problem steckt ein großes, das gern raus moechte.

            Kommentar


            • #7
              oder noch besser verwende eine Template Engine um den ganzen Formatierungsquatsch gleich aus der Logik zu verbannen
              Streich den Teil mit der Template Engine:

              "Oder noch besser: Verbanne den ganzen Formatierungsquatsch gleich aus der Logik."

              Kommentar

              Lädt...
              X