Tip für erstellung einer tabelle

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

  • Tip für erstellung einer tabelle

    Hi...

    ich bin gerade dabei ein Tipspiel für die Bundesliga zu entwerfen.
    Ich möchte das natürlich mit Datenbank machen.
    ich möchte die einzelnen Vereine ,User und Ausgänge der Spiele in Datenbank eintragen.
    Dadurch, dass man dann die ergebnisse Tippt, und dann der Admin die richtigen Ausgänge der Spiele einträgt soll eine Punkteverteilung erfolgen. bei Usern als auch Bundesligatabelle.

    Jetzt bräuchte ich einen tip von Euch: Wie würdet Ihr das am besten organisieren mit der Tabelle in der Datenbank? mit der Vergabe der einzelnen Variablen?

    Bitte gibt mir mal eien tip!

    Danke

  • #2
    Brauchst du hilfe bei der Tabelle oder bei der Datenbank??

    Kommentar


    • #3
      ich denke, er braucht ne inspiration, wie er die felder anlegt. also welche felder er wohin

      wie man ne db anlegt ist wohl eher nicht das problem

      Kommentar


      • #4
        GENAU!

        müsste eher wissen wie ich das verwirkliche...

        Kommentar


        • #5
          Wenn wir das wüssten, könnten wir das ja selber machen *lol*

          Naja, ich verstehe dafür zu wenig von Fußball...

          Kommentar


          • #6
            lustig lustig...

            Kommentar


            • #7
              hiermit ist erst mal das Grundlegenste erledigt; ich hoffe ich habe mich bei der Sortierung nicht vertan:
              Code:
              create table teams(
                teamid bigint unsigned auto_increment primary key,
                teamname varchar(20),
                ort varchar(30),
                stadion varchar(50)
              );
              
              create table spiele(
                spielid bigint unsigned auto_increment primary key,
                spieltag tinyint unsigned,
                team1 bigint unsigned, # teams.idteam, sorgt auch für Spielort)
                team2 bigint unsigned, # teams.idteam
                halbzeit1 tinyint unsigned, # Tore nach 1. Halbzeit
                halbzeit2 tinyint unsigned,
                ende1 tinyint unsigned, # Tore nach 2. Halbzeit
                ende2 tinyint unsigned,
                index (spieltag),
                index (team1),
                index (team2)
              );
              
              create table spieltage(
                spieltag tinyint unsigned auto_increment primary key,
                datum date
              );
              
              Ligatabelle ermitteln:
              select teamname,
                  count(spielid) as spiele,
                  sum(if (team1=teamid,
                    if(ende1>ende2, 3, if(ende2>ende1,0,1)),
                    if(ende1>ende2, 0, if(ende2>ende1,3,1))
                  )) as punkte,
                  sum(if (team1=teamid, ende1, ende2)) as fuer,
                  sum(if (team1=teamid, ende2, ende1)) as gegen,
                  sum(if (team1=teamid, ende1-ende2, ende2-ende1)) as tordiff
                from teams t
                left join spiele on teamid=team1 or teamid=team2
                group by teamid
                order by punkte desc, spiele asc, tordiff desc, fuer desc
              Zuletzt geändert von Titus; 02.08.2002, 17:27.
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                cool..danke erstmal..

                das sieht ja aus wie wenn du sowas schon mal programmiert hättest.

                falls ja.. könntest du mir auch was sagen zur Berechnung der punkte der user!?

                Kommentar


                • #9
                  Bisher noch nicht gemacht - hab ich mir so aus den Fingern gesogen. Ich bin einfach nur gut. Aber weil´s eine Premiere war, hab ich prompt in die Punkteberechnung einen Fehler eingebaut.
                  Hier ist die Korrektur der entsprechenden Zeilen:
                  Code:
                      sum(if (team1=teamid,
                        if(ende1>ende2, 3, if(ende2>ende1,0,1)),
                      if(team2=teamid,
                        if(ende1>ende2, 0, if(ende2>ende1,3,1)),
                        0
                      ))) as punkte,
                  Erklärung: im join werden die Spiele gesaugt, bei denen das Team als erste oder zweite Mannschaft mitspielt. Für jedes gewonnene Spiel gibt es drei Punkte, für ein Unentschieden einen ... dafür muss natürlich geprüft werden, ob das Team als team1 (zu Hause) oder als team2 (auswärts) gespielt hat, denn sonst wäre nicht klar, wessen Torzahl zu welcher Mannschaft gehört.

                  Hat das Team noch kein Spiel gehabt, dann bekam es bei der ersten Version trotzdem einen Punkt, da dann ein Pseudo-Datensatz mit ende1=ende2=0 und team1=team2=0 gelesen wird; mit der zweiten if-Abfrage (team2=teamid) wird dieser Punkt verhindert.


                  Übrigens ist die Spieltag-Tabelle Blödsinn, da die Spieltage meist übers ganze Wochenende verteilt sind. Lass 'spieltage' weg und pack statt dessen ein Datum in die spiele-Tabelle.


                  Wenn du das ganze noch detaillierter haben willst (z.B. mit Torjägerstatistik etc.), oder für mehrere Saisons, dann musst du dir das entsprechend anpassen. Viel Spaß dabei!
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar


                  • #10
                    ok ich habe jetzt folgende Tabellen:

                    1. <b><u>Teams:</b></u> mit Teamname, Team_id, Team_flagge
                    2. <b><u>User:</b></u> mit Username, user_id, punkte_gesamt, punkte_spt01...spt34
                    3. <b><u>Tipps:</b></u> mit Tipp_id, Heim. Gast, Tip_heim, Tip_gast

                    wenn ich jetzt ein formular aufrufen möchte, das mir denn ausgibt
                    am 22.08.2002 spielt Bayern(ID) gegen HSV(ID) - Ergebnis war 3:2 (Heim:Gast) ihr Tip: 2:2 (Tip_heim:Tip_gast)

                    wie mache ich das?

                    ich habe Probs 4 Tabellen zu vereinen und dann auch noch Einträge in die Datenbank vorzunehmen - in verschiedene Tabellen...

                    Bitte um Hilfe!

                    Kommentar


                    • #11
                      Mein Tipp: nimm eine zusätzliche Tabelle Spiele (siehe oben), in der du die tatsächlichen Ergebnisse erfasst.
                      Die 34 Felder für die einzelnen Tipps lass weg. Da ohnehin für jeden Mit-Tipper und jedes Spiel ein Tipp existiert, empfiehlt es sich, das in die Tipp-Tabelle einzubauen.

                      In der Tabelle Tipps wird nur die user_id, die spiel_id und der getippte Endstand (Tipp_heim, Tipp_gast) sowie die mit dem Tipp erzielte Punktzahl gespeichert.

                      Die Summe der Tipps für einen User gibt es dann mit "select sum(punkte) from Tipps where user_id=$user_id"


                      Die für deine Ausgabe für den Besucher mir der user_id=$user_id nötigen Felder erhältst du so:

                      select m1.Team_name, m2.Team_name, s.Heim, s.Gast, t.Heim_Tipp, t.Gast_Tipp,
                      date_format(s.Datum, '%d.%m.%Y') as Ausgabedatum
                      from Tipps t
                      left join Spiele s on s.spiel_id=t.spiel_id
                      left join Teams m1 on m1.team_id=s.Heim
                      left join Teams m2 on m2.team_id=s.Gast
                      where t.user_id=$user_id
                      order by s.Datum


                      Allgemein zu solchen Queries: Überleg dir, welche Felder aus welchen Tabellen du brauchst (select), und wie die genau miteinander zusammen hängen (join).
                      Das where sorgt dann dafür, das du nur die Datensätze bekommst, die du auch brauchst.

                      Die Kürzel (t, s, m1, m2) werden benutzt, um Tipparbeit zu sparen.

                      In diesem Beispiel wird in erster Linie der Tipp gebraucht, und zwar der von dem User mit der passenden $user_id.
                      Im Tipp ist über spiel_id das Spiel vermerkt, zu dem der Tipp gehört, in der Spieltabelle stehen die team_ids der beiden Mannchschaften; und aus der Team-Tabelle wird der Name der Mannschaften ermittelt.
                      mein Sport: mein Frühstück: meine Arbeit:

                      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                      Kommentar


                      • #12
                        ja stimmt... das reicht ja wenn ich dannbei der Tabelle tipp einfach die Zahlen tipp_heim und tipp_gast mit ende1 und ende2 vergeliche und dann entscheide wieviel Punkte vergeben werden, diese dann in punkte eintrage.

                        Wenn ich dann wissen will wieviel Punkte ein User am einem Spieltag erreicht hat, mache ich einfach ne Abfrage mit "where spieltag=5" z.B.

                        oder?

                        Kommentar


                        • #13
                          Ich habe jetzt die Tabelle spiele...möchte alle Spiele auflisten.
                          macht kein Problem. aber bei Team1 und Team 2 stehen eben nur die "ID'S" - ich möchte nun in der Tabelle die Teamnamen mittels dieser ID aus der Tabelle Teams rausnehemn ... iwe mache ich das?

                          PHP-Code:
                          $result = mysql_query("select * from $table"); 

                            if ($num = mysql_num_rows($result)) { 
                              // Ausgabe der Datensätze, wenn vorhanden 
                              for($i=0;$i < $num; $i++) { 
                                $spiele_id = mysql_result($result,$i,"spiele_id"); 
                                $spieltag = mysql_result($result,$i,"spieltag"); 
                                $team1 = mysql_result($result,$i,"team1"); 
                                $team2 = mysql_result($result,$i,"team2"); 
                                $ende1 = mysql_result($result,$i,"ende1"); 
                                $ende2 = mysql_result($result,$i,"ende2"); 
                                $team1=$team_id_1;
                          echo "
                                <table align=\"center\" width=\"80%\"
                             cellspacing=\"0\" cellpadding=\"2\" border=\"1\"
                             bordercolor=\"#cccccc\">
                          <td width=6%>$spiele_id</td>
                          <td width=10%>$spieltag</td>
                          <td width=20%>
                           <? 
                          include 'config.php';
                          $conn_id = mysql_connect($host,$user,$password); 
                          mysql_select_db($database,$conn_id); 
                          mysql_select_db ($database); 
                          $result = mysql_query('select * from teams
                            where team_id =$team_id_1'); 
                          $team_name = mysql_result($result,0,'team_name'); 
                          echo $team_name;?></td>
                          <td width=20%>$team2</td>
                          <td width=7%>$ende1</td>
                          <td width=7%>$ende2</td>

                          Kommentar


                          • #14
                            Liest Du mit dem geposteten Quellcode nicht schon die Teamnamen aus, oder klappt das nicht?
                            Wenn es nicht klappt, dann ersetz mal
                            PHP-Code:
                            $result_=_mysql_query('select * from teams
                              where team_id =$team_id_1'
                            ); 
                            durch
                            PHP-Code:
                            $result_=_mysql_query('select * from teams
                              where team_id =$team_id_1'
                            )
                              or die(
                            mysql_error()); 
                            Wenn es woanders scheitert, dann beschreib Dein Problem mal ganz genau.

                            cu tj99de
                            Of all things I've lost
                            I miss my mind the most

                            Kommentar


                            • #15
                              Ich muss wohl hochtibetanisch sprechen ... T77 schau dir mal mein Posting von gestern abend an ... da steht, wie du an den Team-Namen kommst.


                              zu deiner Mail:
                              wgc_spieltage weglassen und datum date in die spiele-tabelle rein!

                              >create table wgc_tipp(
                              > user_id bigint unsigned auto_increment primary key,
                              > spiel_id ,
                              > tipp_heim ,
                              > tipp_gast ,
                              > punkte
                              >-------------------------
                              >wobei ich nicht weiß wie bei wgc_tipp die dazugehörigen int heißen!
                              >
                              sieht ganz gut aus
                              aber: user_id ist in der tipp-tabelle kein primary key!
                              user_id, spiel_id = bigint unsigned auto_increment
                              tipp_heim, tipp_gast, punkte = tinyint unsigned
                              eventuell noch , primary key(user_id,spiel_id) dazu
                              mein Sport: mein Frühstück: meine Arbeit:

                              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                              Kommentar

                              Lädt...
                              X