Archiv verlassen und diese Seite im Standarddesign anzeigen : Tip für erstellung einer tabelle
Mistert77 01-08-2002, 14:50 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
Schneggo 01-08-2002, 15:16 Brauchst du hilfe bei der Tabelle oder bei der Datenbank??
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
Mistert77 01-08-2002, 22:03 GENAU!
müsste eher wissen wie ich das verwirkliche...
Wenn wir das wüssten, könnten wir das ja selber machen *lol* :D
Naja, ich verstehe dafür zu wenig von Fußball...
Mistert77 02-08-2002, 00:23 lustig lustig...
hiermit ist erst mal das Grundlegenste erledigt; ich hoffe ich habe mich bei der Sortierung nicht vertan: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:rocks:
Mistert77 02-08-2002, 23:51 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!?
Bisher noch nicht gemacht - hab ich mir so aus den Fingern gesogen. Ich bin einfach nur gut. :D Aber weil´s eine Premiere war, hab ich prompt in die Punkteberechnung einen Fehler eingebaut.
Hier ist die Korrektur der entsprechenden Zeilen:
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!
Mistert77 05-08-2002, 18:39 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!
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.
Mistert77 06-08-2002, 01:57 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?
Mistert77 06-08-2002, 12:11 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?
$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>
Liest Du mit dem geposteten Quellcode nicht schon die Teamnamen aus, oder klappt das nicht?
Wenn es nicht klappt, dann ersetz mal
$result_=_mysql_query('select * from teams
where team_id =$team_id_1');
durch
$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
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
Mistert77 06-08-2002, 17:14 @Titus: vielleicht liegt es daran, dass ich bei deinem Skript nicht so durchgeblickt habe!...
hmm ... naja, wenn die Erklärung oben nicht ausreicht, dann sag bescheid was du nicht verstehst.
Sonst weiß ich nicht, wie ich noch weiterhelfen soll :(
Mistert77 07-08-2002, 07:25 ich habe mir eine administrationsoberfläche gebaut wo ich spiele eintragen kann und bearbeiten kann.
ich bekomme es aber nicht hin, dass bei der Auflistung meiner Spiele die ID's der Mannschaften ersetzt werden durch ihre Namen aus der anderen Tabelle!
Lies meinen Beitrag von vorgestern nochmal aufmerksam durch, dann wirst du es hinbekommen.
Mistert77 07-08-2002, 10:49 bitte hilf mir!!! ich habe echt einen Hänger!
hab schon 2 Nächte rumprobiert!... ohne Erfolg...
select s.*, m1.teamname as Heimname, m2.teamname as Gastname from spiel s
left join Teams m1 on m1.team_id=s.Heim
left join Teams m2 on m2.team_id=s.Gast
wobei Heim und Gast die IDs der beiden Teams sind
und die Query Heimname und Gastname zurückliefert
Mistert77 07-08-2002, 11:14 danke für die prompte Hilfe...
es macht einfach nicht klick!
wie bau ich das jetzt ein?
und was sind jetzt die variablen und was die Tabellennamen?
Mistert77 07-08-2002, 15:59 ok ok... ich habs endlich verstanden... nachdem ich mir studenlang das sql manual durchgelesen habe....
aber es funktioniert trotzdem nicht.
es werden weiterhin NUR dieID's angezeigt!
Vielleicht bringt es dich der Query näher, wenn du sie mal dem phpMyAdmin zum Fraß vorwirfst.
Wie versuchst du denn, den Namen anzuzeigen?
Mistert77 08-08-2002, 09:05 Danke für deine Hilfe Titus... hat endlich geklappt!
war ein schwerer Fall ich weiß!
aber das mit dem joinen und so kannte ich noch nicht...
Mistert77 08-08-2002, 12:13 ok das klappt jetzt mit dem Abrufen...
ich möchte jetzt gern für jeden User eine Tippseite erstellen.
Hierzu sollen auch verschiedene Daten aus den 4 Tabellen aufgerufen werden und dann bei verändern in die Datenbank eingetragen werden können.
aus Tabelle team brauch ich wieder team_id, team_name aus Tabelle spiele brauch ich spiel_id, spieltag, team1, team2, erg1, erg2 und aus Tabelle tipp brauch ich tipp_id, user_id, tipp_heim, tipp_gast.
geht das, dass ich die Seite für jeden Spieltag automatisch aufbauen lasse auch mit textfield zum Eintragen in die Datenbank?
Wäre super wenn mir hier nochmal einer helfen würde.
Thx for the help!
Mistert77 09-08-2002, 14:27 Hi
hier hab ich mal meine Tabellen:
table games
---------------------------------------------------------------------
|game_id|game_day|date|team1|team2|result1|result2|
|--------------------------------------------------------------------|
| 1 | 1 | 2002-08-10 | 1 | 11 | 2 | 3 |
| 2 | 1 | 2002-08-12 | 3 | 9 | 1 | 0 |
| 3 | 2 | 2002-08-15 | 8 | 2 | 4 | 2 |
|--------------------------------------------------------------------
table teams
---------------------
|team_id | team_name|
|--------------------
| 1 | FCK |
| 2 | BVB |
| 3 | HSV |
|--------------------
table tip
-----------------------------------------------------------
|tip_id|user_id|game_id|tip_team1|tip_team2|points|
|-----------------------------------------------------------
| 1 | 1 | 2 | 1 | 1 | 2 |
| 2 | 5 | 3 | 3 | 4 | 1 |
| 3 | 8 | 5 | 8 | 2 | 4 |
|-----------------------------------------------------------
table user
---------------------
|user_id | user_name |
|--------------------
| 1 | Joe |
| 2 | John |
| 3 | Alex |
|--------------------
Jetzt möchte ich gerne eine Seite aufrufen, auf der Daten aus verschiedenen Tabellen aufgerufen werden:
Spiel_id, spieltag, Datum, result1 und result2 aus tab games
Teamname aus tab Teams aber mit der ID aus games
wenn möglich sollten diese Daten auch veränderbar sein.
auf einer anderen Seite möchte ich (nachdem sich user per name und pw eingeloggt haben) dass user die möglichkeit haben Tipps zu den einzelnen Spielen abzugeben.
Also auch aufruf von Spieltag, Datum, Begenung, und tip_team1 und tip_team2.
ich weiss nicht wie ich das so verknüpfen kann, dass alles so aufgerufen wird wie ich es will bzw upgedatet wird..
Wäre super wenn mir einer helfen könnte!
THX..CU
Mistert77 10-08-2002, 21:06 bitte um Hilfe!
Mistert77 14-08-2002, 14:08 habs endlich hinbekommen..
ich bräuchte nur nochmal ne kleine Hilfestellung beim code fürs eintragen der Tipps in die Datenbank.
ich rufe bei der Tippseite ja auch die Tipps der user in einem testfeld auf. Aber beim Eintragen ist das nicht so einfach.
Wie kann ich es programmieren, dass entschieden wird ob "update" oder "insert into" genommen wird?
mein code im Moment sieht so aus:
mysql_query("update wgc_tipp set tipp_heim = '$tipp_heim', tipp_gast = '$tipp_gast'
where spiele_id = '$spiele_id' AND user_id = '$id'");
aber da ja nicht alle user schon jeweils eine Zeile besitzen für die Tipps, muss vorm updaten ja erstmal insert into geschehen...
???:dontknow:
entweder so:
if (mysql_num_rows(mysql_query("select * from wgc_tipp where spiele_id = '$spiele_id' AND user_id = '$id'")))
mysql_query("update ...");
else
mysql_query("insert ...");oder (wenn auf spiele_id und user_id ein unique index liegt) so:
if (!mysql_query("insert ..."))
mysql_query("update ..."))
Mistert77 15-08-2002, 22:36 ich habs so gemacht
$conn_id = mysql_connect($host,$user,$password);
mysql_select_db($database,$conn_id);
if (mysql_num_rows(mysql_query("select * from wgc_tipp where spiele_id = '$spiele_id' AND user_id = '$id'")))
mysql_query("update wgc_tipp set tipp_heim = '$tipp_heim', tipp_gast = '$tipp_gast'
where spiele_id = '$spiele_id' AND user_id = '$id'");
else
mysql_query("INSERT INTO wgc_tipp (tipp_heim,tipp_gast)VALUES ('$tipp_heim','$tipp_gast')where spiele_id = '$spiele_id' AND user_id = '$id' ;
klappt aber nicht
CHnuschti 16-08-2002, 21:41 Ganz am Schluss heisst es bei dir:
'$id' ;
sollte aber heissen:
'$id');
Klammer vergessen?
mfg
Das update muss so aussehen:
INSERT INTO wgc_tipp (tipp_heim, tipp_gast, spiele_id, user_id)
VALUES ('$tipp_heim', '$tipp_gast', '$spiele_id', '$id')
ohne WHERE-Klausel !!
Mistert77 18-08-2002, 19:02 habs jetzt so gemacht...klappt aber trotzdem nicht...
$conn_id = mysql_connect($host,$user,$password);
mysql_select_db($database,$conn_id);
if (mysql_num_rows(mysql_query("select * from wgc_tipp where spiele_id = '$spiele_id' AND user_id = '$id'")))
{mysql_query("update wgc_tipp set tipp_heim = '$tipp_heim', tipp_gast = '$tipp_gast'
where spiele_id = '$spiele_id' AND user_id = '$id'");}
else
{mysql_query("INSERT INTO wgc_tipp (tipp_heim,tipp_gast,spiele_id,user_id)VALUES ('$tipp_heim','$tipp_gast','$spiele_id','$id'))" ;}
CHnuschti 18-08-2002, 19:31 $a1=$host;
$a2=$user;
$a3=$password;
$a4=$database;
$db = mysql_connect($a1, $a2, $a3);
$sqlaa = "select * from wgc_tipp where spiele_id = '$spiele_id' AND user_id = '$id'";
$rea = mysql_db_query($a4, $sqlaa);
$nua = mysql_num_rows($rea);
if ($nua>0)
{
$sqlab = "update wgc_tipp set tipp_heim = '$tipp_heim', tipp_gast = '$tipp_gast' where spiele_id = '$spiele_id' AND user_id = '$id'";
mysql_db_query($a4, $sqlab);
}
else
{
$sqlac = "INSERT INTO wgc_tipp (tipp_heim,tipp_gast,spiele_id,user_id) VALUES ('$tipp_heim','$tipp_gast','$spiele_id','$id')";
mysql_db_query($a4, $sqlac);
}
mysql_close($db);
Mistert77 18-08-2002, 21:03 es werden keine Änderungen gespeichert...shit!
CHnuschti 18-08-2002, 22:04 Hast du geprüft, ob deine Spaltennamen richtig sind?
Wenn z.B. die Spalte tip_gast anstatt tipp_gast heisst, dann wird die gesamte Anweisung $sqlax nicht ausgeführt, das hatte ich auch schon mal.
Ansonsten probier mal die sytnax
where spiele_id like '$spiele_id'
anstatt
where spiele_id = '$spiele_id'
Das hatte ich auch schon mal, dass es daran lag dass es nicht ging.
Und ansonsten baue "Prüfungen" ein, z.B.
echo "nua ist " . $nua;
echo "tipp_heim ist " . $tipp_heim;
um zu überprüfen, ob deine Variablen überhaupt gesetzt sind bzw. ob überhaupt ein Resultat gefunden wird.
Baue in den {}-Klammern ein echo ein
echo "bin drin";
um festzustellen, ob du überhaupt reinkommst.
usw. usf. Etwas Fantasie, wenn ich bitten darf ;)
mfg
benutz mal die Funktion do_query (http://www.php-resource.de/forum/showthread.php?threadid=1600) statt mysql_query, die liefert etwas mehr Informationen als "Es funktioniert nicht."
Mistert77 19-08-2002, 14:28 ich bekomms nicht hin und finde auch keinen Fehler...
im Anhang hier hab ich mal die 3 Dateien, auf denen es klappen soll!
Übersicht (http://www.kramer-digital.de/muellert/bl/spiele_tipp.txt)
Übersicht für Änderungen (http://www.kramer-digital.de/muellert/bl/spiele_tipp_update.txt)
Eintrag in DB (http://www.kramer-digital.de/muellert/bl/spiele_tipp_update_db.txt)
Könnt ja mal reinschauen... und gegebenenfalls Kommentar abgeben
Danke
OT:
Immer noch nicht fertig? Die Bundesliga hat doch schon angefangen...
Ich hab meins fertig ...
aber T77 wird nichts lernen, wenn ich es ihm schenke!
;)
Scripte von anderen machen auch keinen Sinn. Beim anpassen braucht man sonst viel zu lange um sie zu verstehn. Und der Lerneffekt ist natürlich auch nicht zu vergessen!
Mistert77 20-08-2002, 08:20 danke jungs... aber meins steht ja kurz davor fertig zu werden... mir fehlt einfach nur dieser eine Punkt ...mit dem Eintragen in die DB... dann hab ichs auch!...
wäre nett wenn ihr mir aber vielleicht helfen könntet das letzte Problem auch noch zu lösen... bzw ne Hilfeastellung zu geben.
:confused:
Mistert77 20-08-2002, 12:04 ich habe Fehler entdeckt in meinem Skript...weiß aber nicht wie ich sie beheben kann.
1. in der Datei spiele_tipp.txt in dem selct wird die user_id nicht berücksichtigt. -> alle User die sich einloggen bekommen den selben Tipp angezeigt.
2. bei spiele_tipp_update.txt habe ich in der while Schleife jeweils 2 Textfelder drin mit dem Namen tipp_heim und tipp_gast - die sind nicht eindeutig definiertzu spiele_id und user_id... folglich kann auch nichts in die db eingetragen werden....
kann mir jemand helfen?
Mistert77 21-08-2002, 17:21 Hi...
ich müsste hier irgendwie noch reinbekommen, dass er auch zusätzlich ausser spiele_iddie user_id aus der Tabelle wgc_tipp mit einbringt
left join wgc_tipp t1 on t1.spiele_id=s.spiele_id
left join wgc_tipp t2 on t2.spiele_id
Mistert77 22-08-2002, 15:57 @ Titus:
Komm jetzt sei doch nicht so... du hast mich zumindest auch bis hierher gebracht... kannst du mir noch mal eine Hilfe bei den Queries geben?
Original geschrieben von Mistert77
Hi...
ich müsste hier irgendwie noch reinbekommen, dass er auch zusätzlich ausser spiele_iddie user_id aus der Tabelle wgc_tipp mit einbringt
left join wgc_tipp t1 on t1.spiele_id=s.spiele_id
left join wgc_tipp t2 on t2.spiele_id left join wgc_tipp t1 on t1.spiele_id=s.spiele_id
and t1.user_id=$user_idwenn ich dich richtig verstanden hab
die sind nicht eindeutig definiertzu spiele_id und user_idwieso denn nicht?
Mistert77 23-08-2002, 20:27 hat sich erledigt... ich habs anders gemacht:
hab das select auseinander gerissen und die Teamnamen mit Hilfe von Arrays eingelesen und dann später nochmal ne einfache Abfrage der Tipp tabelle gemacht!
...mir wurde geholfen...
Mistert77 25-08-2002, 00:46 könnt ihr mir noch eins sagen?!
wie mach ich das am besten, dass man ab einem bestimmten Zeitounkt nicht mehr tippen kann?
Soll ich vielleicht bei der Tabelle Spiele noch eine Spalte einfügen
mit der darf Zeit?
das ist wohl das einfachste ... die passende where-Klausel dazu:
darfzeit<now()
Mistert77 25-08-2002, 14:23 einen timestamp hab ich generell im Kopf der Seite drin..
aber wie definiere ich das Zeitfeld (darf-feld)?
deadline datetime not null
Mistert77 26-08-2002, 00:12 mmm versteh ich nicht!
tschuldige, ich hatte mich beim Datentyp vertan - der heißt natürlich datetime und nicht timedate!
http://www.mysql.de/documentation/mysql/bychapter/manual.de_Reference.html#DATETIME
Mistert77 27-08-2002, 10:41 Hi... hab versucht eine Übersichtsseite zu coden......komm aber mit den while Schleifen nicht klar...
hab den code nochmal hier (http://www.kramer-digital.de/muellert/bl/uebersicht.htm) upgedatet
und so soll es aussehen - klick (http://www.kramer-digital.de/muellert/bl/uebersicht_tipps.gif)
und so
klick (http://www.kramer-digital.de/muellert/bl/uebersicht2.gif) sieht es zur Zeit aus.
wenn Ihr mir hier nochmal helfen könntet!?
dann musst du die Query eben nach den Tippern sortieren ...
Titel- und Ergebnis-zeile:
select spiel_id,
t1.shortcut as heimname, t2.shortcut as gastname,
t1.flagge as flagge1, t2.flagge as flagge2
ende1 as heimtor,ende2 as gasttor
from wgc_spiele s
left join wgc_teams t1 on t1.teamid=s.team1
left join wgc_teams t2 on t2.teamid=s.team2
where spieltag=$spieltag order by s.spiel_id
in der Schleife solltest du dir alle spiel_ids merken für den Fall dass jemand für ein Spiel keinen Tipp abgegeben hat.
alle(!) weiteren Zeilen:
select name, spiel_id, tipp_heim, tipp_gast
from wgc_tipp t
left join wg_casa_user u on u.user_id=t.user_id
order by name, t.spiel_id
Wenn sich der Name ändert, fängst du einfach eine neue Zeile an.
Mistert77 28-08-2002, 12:40 hört sich gut an..
Danke @ Titus...
ich hab meinen code im moment soso - klick (http://www.kramer-digital.de/muellert/bl/uebersicht2.htm)
bringt aber ne Fehlermeldung... ich schätze ich hab da wiedermal eien Fehler mit der while Schleife...
:confused: :(
Mistert77 30-08-2002, 04:57 kann mir bitte jemand helfen mit der Schleife?
Mistert77 02-09-2002, 10:07 das mit den joins is ja ne super sache...
aber ich bekomme einfach keine Ausgabe hin, weil ich nicht weiss wie ich den code schreiben soll:confused:
nach der ersten Query kommt erst mal die Header-Zeile ... soweit ist dein Code korrekt; allerdings solltest du den fetch auch der Query anpassen:
$spiel_ids = array();
while(list($spiele_id, $team1, $team2,
$flagge1, $flagge2, $ende1, $ende2)
= mysql_fetch_row($res))
{
echo (...);
// und wie gesagt: die spielids merken
$spiel_ids[] = $spiele_id;
} // Ende der while-Schleife
Das abschließende echo '</tr>'; weglassen, das wird beim ersten Durchlauf der zweiten Schleife erledigt!
Die zweite Schleife wird so gebaut:
$merkname = '-1'; // Dummy-Name
while (list($name,$spiele_id,$tipp_heim,$tipp_gast)
= mysql_fetch_row($res2))
{
// Name geändert?
if ($merkname!=$name)
{
echo "\n</tr><tr>\n <th>", htmlentities($name), '</th>'; // neue Zeile
$merkname = $name; // neuen Namen merken
$i = 0; // Spielzähler zurücksetzen
}
// evtl. leere Spalten einfügen (falls kein Tipp)
while ($i<count($spiel_ids) && $spiel_ids[$i++]!=$spiele_id)
echo "\n <td>- : -</td>";
echo "\n <td>$tipp_heim : $tipp_gast</td>";
}
echo "\n</tr>";
Mistert77 02-09-2002, 13:27 @ TITUS:
SEHR VIELEN DANK !!! :rocks:
es klappt! :teach:
Mistert77 09-09-2002, 13:43 Original geschrieben von Titus
nach der ersten Query kommt erst mal die Header-Zeile ... soweit ist dein Code korrekt; allerdings solltest du den fetch auch der Query anpassen:
$spiel_ids = array();
while(list($spiele_id, $team1, $team2,
$flagge1, $flagge2, $ende1, $ende2)
= mysql_fetch_row($res))
{
echo (...);
// und wie gesagt: die spielids merken
$spiel_ids[] = $spiele_id;
} // Ende der while-Schleife
Das abschließende echo '</tr>'; weglassen, das wird beim ersten Durchlauf der zweiten Schleife erledigt!
Die zweite Schleife wird so gebaut:
$merkname = '-1'; // Dummy-Name
while (list($name,$spiele_id,$tipp_heim,$tipp_gast)
= mysql_fetch_row($res2))
{
// Name geändert?
if ($merkname!=$name)
{
echo "\n</tr><tr>\n <th>", htmlentities($name), '</th>'; // neue Zeile
$merkname = $name; // neuen Namen merken
$i = 0; // Spielzähler zurücksetzen
}
// evtl. leere Spalten einfügen (falls kein Tipp)
while ($i<count($spiel_ids) && $spiel_ids[$i++]!=$spiele_id)
echo "\n <td>- : -</td>";
echo "\n <td>$tipp_heim : $tipp_gast</td>";
}
echo "\n</tr>";
jetzt ist natürlich noch ein weiterer Fehler aufgekommen...
das mit der Übersichtsseite klappte so lange wie man nur einen Spieltag in die DB eingetragen hatte!
nachdem jetzt aber mehrere Spieltage eingetragen wurden, sind jetzt in der Übersichtsseite alle getipptwen ergebnisse drin... ohne Unterscheidung per Spieltag!?:mad:
Mistert77 13-09-2002, 17:31 Original geschrieben von Titus
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
das funzt aber leider nicht... Verbesserungen für mich!?
Mistert77 23-09-2002, 10:28 Bitte noch einmal um Hilfe bei der Übersichtsseite (zweitletzter Beitrag) oder bei der Ermittlung der BL-Tabelle...
Danke
Hallöle...
bin neu hier wie man sehen kann, aber das forum ist meine letzte anlaufstelle für meine frage. hab bis jetzt niemanden finden können der mir helfen konnte. also, nun zu meiner frage bzw zu meinen prob.
ich betreibe die webseite von unsrem fußballverein. nun, ich brauch ein skript zum erstellen einer fußballtabelle. aber viel einfacher als das was man kennt. ich würde es ja selber schreiben, in delphi hätte ich damit auch keine probleme, aber mit php kenn ich mich net aus. hab mir bis jetzt mein php zeugs aus anderen skripten zusammengebaut.
also, wie ich mir das vorstelle:
ich sollte in nem formular die mannschaften eingeben können.
die schlussendliche tabelle braucht nur 2 spalten, eine mit mannschaft und eine mit den punkten. ich brauch also nur noch hinter jeder mannschaft dann einen button wo ich entweder "+3" oder "+1" drücken kann. danach sollten dann die mannschaften einfach nach punkten sotiert werden.
also eigentlich kein problem, nur wenn man keine ahnung hat wie, dann schon...
vielleicht kann mir ja hier jmd helfen.
Gruß
Pöbler
PS: hab PHP, Mysql, CGI also alle vorrausetzungen sind da....ok, ASP hab ich doch net, man kann net alles haben...
|
-
- |