WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Tabelle erstellen? » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Tabelle erstellen?
von Philipp Gérard
Also:

1. Du musst die Punkte für jede Mannschaft ausrechnen, um sie dann danach zu sortieren.

1: 
2: 
3: 
4: 
5: 
6:
$result = mysql_query("SELECT count(*) FROM $tbl WHERE ergebnis = '1' AND spieler = 'x');
$count  = mysql_result($result,0,0);
$result = mysql_query("SELECT count(*) FROM $tbl WHERE ergebnis = '2' AND spieler = 'x');
$count2  = mysql_result($result,0,0);

$punkte = ($count * 3) + $count2;


das gibt dir alle gewonnenen spiele von manschaft x. Das Ergebnis $count * 3 + noch so ein Query für die unentschiedenen * 1 (oder gar nicht * ) sind die Punkte. Das Biest in eine Schleife für alle Manschaften und schon hast du alle Punkte. Die würde ich jetzt am besten in eine Tabelle schreiben, die die ManschaftsID und die Punkte & Tore/Gegentore speichert. Dann kannst du es mit ORDER BY punkte, tore am leichtesten sortieren.

edit: das ist zwar aufwendig, funktioniert aber. intelligentere lösungen? mags geben, aber nicht um 23:00
von FrediL
zu früh gefreut! das funktioniert leider nicht! verstehe jetzt auch nicht mehr so ganz, wie das gehen soll.

ich soll mit sum(punkte) die punkte addieren. nur diese stehen doch garnicht in der db.
wie soll ich das jetzt machen?
von FrediL
ach, ich glaube ich versteh immer mehr (hoffe ich zumindest) -> da das ja alles in einer sql-abfrage erledigt wird, könnte ich ja die daten direkt per order by punkte ausgeben?!?!
von FrediL
ah, die db-anfragen für jede mannschaft erübrigen sich dank dem sum(). ok, das habe ich jetzt kapiert. aber wie sortiere ich?
von FrediL
könntest du mir b) noch ein bisschen genauer erklären?

wenn ich das richtig verstehe, dann baue ich für jede mannschaft eine datenbankverbindung auf (geht das nicht einfacher?) und lese die punkte für diese mannschaft aus. diese summiere ich dann. somit habe ich die punkte, die jede mannschaft bislang erspielt hat. nur wie sortiere ich dann?
von Philipp Gérard
a) foo ist nur ein platzhalter - vielleicht brauchste mehr felder usw.
b) stimmt, kannst du weglassen.

1:
SUM(punkte)
von FrediL
ok, dass klingt ja ganz nett und stimmt sogar fast mit dem überein, was ich so gebastelt habe.
da bleiben aber immer noch ein paar fragen :-/

für was steht das "foo" in tabelle 1 und was soll in diese spalte foo eingetragen werden?

ist der ort nicht unnötig in tabelle 2, da autom. bei der heimmannschaft (spieler) gespielt wird?

wie berechne ich denn aus diesen angaben die tabelle? -> ich meine ich rechne die punkte zusammen, ok. aber wie sortiere ich das ganze dann? und muss ich um die punkte zu berechnen für jede mannschaft eine datenbankabfrage starten, oder geht das einfacher?

vielen dank
von Philipp Gérard
Hab das ganze nur überflogen.

Du willst also eine Tabelle erstellen, in der das Ligaranking angezeigt wird, welches sich aus der Punktezahl und - sofern diese gleich ist - aus der Tordifferenz ergibt. Wie in der Bundesliga also. Kein Problem, aber schon eins mit deiner Tabelle

Bau dir eine Tabelle in der du die Clubs speicherst

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8:
CREATE TABLE `foo_clubs` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `stadt` varchar(255) NOT NULL default '',
  `kontakt` varchar(255) NOT NULL default '',
  `foo` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;


Sowie eine, in der du die Spiele speicherst:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11:
CREATE TABLE `foo_spiele` (
  `id` int(11) NOT NULL auto_increment,
  `spieltag` int(11) NOT NULL default '0',
  `spieler` int(11) NOT NULL default '0',
  `gegner` int(11) NOT NULL default '0',
  `ort` int(11) NOT NULL default '0',
  `ergebnis` int(3) NOT NULL default '0',
  `tore_s` int(11) NOT NULL default '0',
  `tore_g` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;


Die erste muss ich wohl nicht erklären, die zweite wohl schon

"spieler" ist die ID des Clubs aus der ersten Tabelle.
"spieltag" ist der Spieltag.
"gegner" die ID des anderen Clubs aus der ersten TB.
"ort" ist die ID des Clubs, bei dem gezockt wird.
"ergebnis" ist entweder 1 (Sieg spieler), 2 (Unentschieden) oder 3 (Sieg Gegner). Daraus kannst du bequem die Punkte berechnen.
"tore_s" und "tore_g" sind entsprechend die Toranzahl in diesem Spiel für die jew. ID. Daraus kannst du die Tordifferenz errechnen.

Aus diesen beiden Tabellen baust du dir dann eine Ergebnistabelle. Zudem könntest du zusätzlich zu jedem Spiel eine Statistik anbieten und Grafiken erstellen, die Dokumentieren, wie viele Punkte/Tore/Gegentore jede Manschaft an welchem Tag hatte.

Viel Erfolg!
von languitar
also wenn du was absolut kompetentes haben willst solltest du dich besser an Philipp oder so wenden. Die sidn da etwas besser informiert als ich ;)
von FrediL
ok, macht nix. wäre nett, wenn du mir mal bei gelegenheit den generellen aufbau erklärst. sprich die schritte die ich machen muss, damit die fertige tabelle rauskommt. scripten will ich nämlich selber!!!
von languitar
Also dazu musst du natürlich einige Berechnungen durchführen. die würde ich mit PHP machen. aber ich hab jetzt leider keine Zeit groß was zu basteln, weil ich gleich unterricht habe.

Sorry
von FrediL
so wie immer. nur dass ich halt mir die db-tabelle ersparen will, in der die fertig berechnete tabelle gespeichert ist:

SG-Vollmerz Tabelle
von languitar
Diese Sortierung hat irgendwie Tradition und ist dadurch auch einfach zu verarbeiten. Bestimmte Spalten auslesen finde ich einfacher, als Werte aus Zeilen zusammen zu picken.

Wie soll den dein Ergebniss aussehen?
von FrediL
gut, also gerade andersrum, wie sie jetzt ist. denn derzeit habe ich für jede mannschaft eine zeile und wie du schon gesagt hast, für jeden spieltag die entsprechenden spalten.

gut, wenn ich diese db-tabelle so erstellt habe, wie bekomme ich dann aus diesen daten die fußball-tabelle? muss ich die daten auslesen und in ein array zusammenrechnen und wie sortiere ich die daten dann?
von languitar
Ich würde sagen, dass du die Tabelle so aufbauen solltest, ist jetzt aber auch nicht lange überlegt:

Spieltag | Manschaft | Tore_gefallen | Punkte...

Ansonsten müsstest du ja für jeden Spieltag eine neue Tabellenspalte anlegen.
von FrediL
wieso? meine frage ist ja hauptsächlich erst einmal, ob es sinnvoll ist, alle daten so abzuspeichern und anschließend daraus die tabelle zu berechnen. denn die datenbank in dieser form brauch ich noch, um die ergebnisse für jeden spieltag anzuzeigen.

also wenn ihr bessere vorschläge habt, wie soll ich die db-tabellen aufbauen?

ich muss eine ergebnisübersicht pro spieltag, ergebnisübersicht in abhängigkeit der mannschaft und eine tabelle erstellen.
von languitar
Auch wenn das sicherlich irgendwie zu machen wäre, ist das meiner Meinung nach eine Fehlkonstruktion deiner Tabelle.
von FrediL
mh, ich glaub ihr versteht mich nicht so ganz. das auslesen und anzeigen usw. ist ja alles kein problem.

das problem ist, dass ich aus diesen daten eine tabelle berechnen will. an erster stelle soll der angezeigt werden, der die meisten punkte hat (Spieltag1_Punkte+Spieltag2_Punkte+Spieltag3_Punkte+...). Nur wie kann ich das machen? Denn in der DB sind ja nur die einzel erzielten Punkte gespeichert.
von pizzataxi
Tipp: Der SQL-String den Du an die DB schicken musst, sollte ungefähr so aussehen denke ich...
1: 
2: 
3:
"SELECT Mannschafts_ID, Spieltag1_Tore_ges, Spieltag1_Tore_gef,
Spieltag1_Tore_Dif, Spieltag1_Punkte,  ... 
FROM $tabellenname ORDER BY Spieltag1_Punkte, Spieltag1_Tore_Dif, Spieltag1_Tore_ges"


Das Abfrageergebnis erzielst Du so:
1:
$result=mysql_query($sql_string, $userverfizierung);


Jetzt musst Du die Ergebnisse nur noch für den Nutzer sichtbar machen:
Erstelle mit HTML Code eine Tabelle, in der Du alle relevanten Daten für jede Mannschaft wie Tore, Punkte, etc. darstellen kannst. Um diese Tabelle legst Du eine for-schleife... sieht so ungefähr aus:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19:
<?php
for($x=0;$x<mysql_num_rows($result);$x++)
{
			  			
$Mannschafts_ID=mysql_result($result,$x,"Mannschafts_ID");  
$Spieltag1_Tore_ges=mysql_result($result,$x,"Spieltag1_Tore_ges");

			  
echo "<table>
<tr>
<td>$Mannschafts_ID</td>
</tr>
<tr>
<td>$Spieltag1_Tore_ges</td>
</tr>
...
</table>";
}
?>


Es besteht kein Anspruch auf inhaltliche und syntaktische Richtigkeit!
Alle weiteren Daten die in die Tabelle sollen, müssen noch implementiert werden. Soll nur ein Denkanstoss sein...
von michaelh
Natürlich für die Spielergebnisse. Eine Tabelle reicht aber auch schon.
von FrediL
ich glaube ich muss das morgen nochmal genauer erklären. selbstverständlich arbeite ich mit einer mysql-db. oder meinst du eine zweite für die fußball-tabelle?
von michaelh
Benutz eine Datenbank (MySQL). Das geht viel besser.
von FrediL
ich will ja nix fertiges!!! dann habe ich ja garkeinen spaß daran. aber ich weiß jetzt halt nicht so genau wie ich anfangen soll. und einleitungen und bücher habe ich schon ein paar durch. nur mit den arrays das klappt noch nicht so.

vielen dank im voraus
fredil
von languitar
Hab gerade keine Zeit (und Lust) dir da ne fertige Lösung zu geben, außerdem wäre das ja zu einfach. ;) Aber das ist recht simpel. Besorg dir mal mit Google irgendwie ne schrottige Einführung in MySQL und bastel mal etwas...
von FrediL
Hallo!

Ich brauche für eine Fußball-Fanpage eine Tabelle. Dazu speicher ich alle Daten der gesamten Saison in einer Datenbank. Dabei werden die Daten nach folgendem Verfahren gespeichert:

Mannschafts_ID | Spieltag1_Tore_ges | Spieltag1_Tore_gef | Spieltag1_Punkte | ...

Wie kann ich diese Daten jetzt auslesen, um daraus eine Tabelle zu gestalten?

Ich vermute mal, dass man dabei mit ARRAYs arbeiten muss. Nur wie genau? Und wie sortiere ich diese nach Punkten, Tore Differenz und zuletzt nach geschossenen Toren?

Vielen Dank im Voraus
FrediL

PS.: Oder ist es besser eine extra Datenbank-Tabelle anzulegen, in der die fertig berechnete Tabelle immer gespeichert wird? Das funktioniert auch schon. Ich will mir aber diese Tabelle sparen und die dazugehörigen Wartungsarbeiten!!!!

Nach oben