Scriptaufbau

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

  • Scriptaufbau

    Hallo zusammen,

    ich habe folgendes Problem:

    Für mein Tippspiel werden für jede Gruppe aus einer DB die Spiele zu der jeweiligen Gruppe rausgesucht. Allerdings habe ich dabei das Problem, das ein Spieler ein Spiel schon getippt haben kann.

    Deswegen wollte ich bevor der Select für die Spiele gemacht wird überprüfen, ob der aktuelle Spieler schon Tipps aus dieser Gruppe gespeichert hat.

    Dabei habe ich jetzt das Problem, wie stelle ich es an, das ich gewisse Spiele nicht mehr beim Select beachte?

    Bisher habe ich das so, um evtl. zu verdeutlichen, wie ich das meine:

    PHP-Code:
    <?
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    include('config.php');
    $sql = sprintf("Select `spielID`, `gruppe`, `mannschaft_1`, 
    `mannschaft_2`, `spielort`, `datum`, `uhrzeit` From `spiele` 
    Where `gruppe` = '%s' AND `tore_m1` = '' AND `tore_m2` = ''", 
    mysql_real_escape_string($_GET['gruppe']));
    $query = mysql_query($sql) or Die (mysql_error());


    echo "<h3>Gruppe ".$_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']." Uhr</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";
    ?>
    So, dabei werden jetzt alle Paarungen für z.B. Gruppe A ausgegeben. Wenn der Spieler jetzt schon z.B. die Paarung mit der ID 1 getippt hat, soll diese entweder nicht mehr erscheinen oder anstatt des <input> Feldes einfach nur eine Ausgabe des Tipps erscheinen.

    Dafür hatte ich jetzt folgenden Ansatz:

    PHP-Code:
    while ($spiel mysql_fetch_assoc($query)) {
        
    $db "Select `spielID` From `tipps` Where `spielID` = '".$spiel['spielID']."' AND `spieler` = '".$_SESSION['bname']."'";
        
    $query mysql_query($db);
        
    $result mysql_fetch_assoc($query);
        echo 
    $result['spielID']."<br />";

    Hier bei bekomme ich die ID des Spiels ausgegeben, welches der Spieler bereits in der Gruppe getippt hat.

    Im Prinzip müsste man jetzt alle weiteren ID's ausgeben, bis auf die, die bereits getippt sind. Nur weis ich nicht, wie ich das anstellen soll. Ich hoffe ihr versteht was ich meine

    Gruß
    Christoph

  • #2
    http://www.php-resource.de/forum/sho...threadid=28292

    *move* to SQL

    Kommentar


    • #3
      In wie fern meinst du jetzt, das Join's mir helfen?

      BTW: Hoffe auf ähnlich gute Zusammenarbeit wie gestern

      Kommentar


      • #4
        Naja, in dem du die dinge ausschließt, die schon in einer anderen Tabelle (als Tipps) gespeichert sind.

        Evtl. hilft dir auch ein Sub-Select.

        OffTopic:
        Ich hoffe auf ein bisschen mehr selbstständigkeit als gestern. Und klinke mich deshalb direkt wieder aus.

        Kommentar


        • #5
          könnte man es so machen?

          PHP-Code:
          $sql sprintf("SELECT 
                      `spielID`, 
                      `gruppe`, 
                      `mannschaft_1`,
                      `mannschaft_2`,
                      `spielort`,
                      `datum`,
                      `uhrzeit`
                    FROM 
                      `spiele`
                    LEFT JOIN 
                      `tipps` ON spiele.spielID = tipps.spielID
                    WHERE tipps.spieler = '"
          .$_SESSION['bname']."'
                    AND spiele.gruppe = '%s'
                    AND spiele.tore_m1 = ''
                    AND spiele.tore_m2 = ''"
          ,
                    
          mysql_real_escape_string($_GET['gruppe'])); 
          scheint nicht zu klappen, bekomme folgende Meldung:

          Column 'spielID' in field list is ambiguous
          Nur welche SpielID meint er?
          Zuletzt geändert von nevermind; 06.06.2008, 17:47.

          Kommentar


          • #6
            Nur welche SpielID meint er?
            Na, die im SELECT natürlich.

            BTW. Wieder mal gepostet, bevor du getestet hast, gell?

            Kommentar


            • #7
              Original geschrieben von TobiaZ

              BTW. Wieder mal gepostet, bevor du getestet hast, gell?
              sorry

              Wie kann ich diesen Fehler denn beheben? ambiguous heißt ja soviel wie doppeldeutig oder so. Wenn ich aber spiele.spielID schreibe bekomme ich den Fehler:

              Unknown column 'spiele.spielID' in 'field list'

              Kommentar


              • #8
                Wenn ich aber spiele.spielID schreibe bekomme ich den Fehler
                So wäre das eigentlich syntaktisch richtig. Aber ich vermute, dass du es nicht so geschrieben hast.

                das wären jetzt aber Grundlagen.

                Kommentar


                • #9
                  falls du es mir nicht glaubst:

                  PHP-Code:
                  $sql sprintf("SELECT 
                              `spiele.spielID`, 
                              `spiele.gruppe`, 
                              `spiele.mannschaft_1`,
                              `spiele.mannschaft_2`,
                              `spiele.spielort`,
                              `spiele.datum`,
                              `spiele.uhrzeit`
                            FROM 
                              `spiele`
                            LEFT JOIN 
                              `tipps` ON spiele.spielID = tipps.spielID
                            WHERE tipps.spieler != '"
                  .$_SESSION['bname']."'
                            AND spiele.gruppe = '%s'
                            AND spiele.tore_m1 = ''
                            AND spiele.tore_m2 = ''"
                  ,
                            
                  mysql_real_escape_string($_GET['gruppe'])); 
                  mit Fehler:

                  Unknown column 'spiele.spielID' in 'field list'
                  Ach übrigens, kann man eigentlich tipps.spieler != '".$_SESSION['bname']."' schreiben und hätte es dann auch den effekt, das nur die angezeigt werden, wo noch nicht getippt wurde?

                  Kommentar


                  • #10
                    `spiele`.`spielID`

                    Kommentar


                    • #11
                      cool, danke das klappt schonmal. allerdings klappt das tipps.spieler != '".$_SESSION['bname']."' wohl nicht. naja, mal gucken wie ich das anders machen kann das alle ausgegeben werden wo noch nicht getippt wurde.

                      Danke nochmal

                      Kommentar


                      • #12
                        habs jetzt übrigens so:

                        PHP-Code:
                        $sql sprintf("SELECT 
                                    `spiele`.`spielID` AS spielID, 
                                    `spiele`.`gruppe` AS gruppe, 
                                    `spiele`.`mannschaft_1` AS mannschaft_1,
                                    `spiele`.`mannschaft_2` AS mannschaft_2,
                                    `spiele`.`spielort` AS spielort,
                                    `spiele`.`datum` AS datum,
                                    `spiele`.`uhrzeit` AS uhrzeit,
                                    `spieler`.`bname`
                                  FROM 
                                    `spiele`
                                  LEFT JOIN 
                                    `tipps` ON `spiele`.`spielID` = `tipps`.`spielID`
                                  LEFT JOIN 
                                    `spieler` ON `tipps`.`spieler` = `spieler`.`bname`
                                  WHERE `spieler`.`bname` IS NULL
                                  AND `spiele`.`gruppe` = '%s'
                                  AND `spiele`.`tore_m1` = ''
                                  AND `spiele`.`tore_m2` = ''"
                        ,
                                  
                        mysql_real_escape_string($_GET['gruppe'])); 
                        Das klappt dann auch wie gewünscht

                        Kommentar

                        Lädt...
                        X