URL: https://www.overclockers.at/coding-stuff/datenbank_amp_php_denkhilfe_131060/page_1 - zur Vollversion wechseln!
Also Problemstellung:
Alle von euch werden sicher so clanseiten kennen, dass wenn man auf members klickt, kommen mal die squads und wenn man dann auf einen bestimmten spieler klickt bekommt man die einzelen infos mit foto usw..
Ok, bis jetzt noch kein Problem. I versuch sowas für einen Handballverein zu erstellen, nur leider folgendes Problem:
Es kann sein, dass ein Spieler in mehreren "Squads" gleichzeitig ist, allerdings wie realisier ich des am besten?
Mein Lösungsvorschlag:
In der Tabelle des Spielers ein Feld mit einem Ensprechenden Wert.
zb für Männer ein 'A'.
für Frauen ein 'B'.
Auch wenns unlogisch is, angenommen ein Spieler spielt bei beiden, dann würde dort 'AB' drinnen stehen.
Nur jetz muss ich des ja mit substr() oder so irgendwie herausfiltern welcher buchstabe drinnen steht, damit ja dann nur die spieler korrekt ausgegeben werden, die im squad vorhanden sind..
Allerdings wie durchsuche ich dann ein bestimmtest Feld nach einem Zeichen? Geht des überhaupt?
Oder denk ich vieel zu kompliziert? Gibts ja sicher einen Lösungsweg i hoff ihr könnts mir da helfen
(big) tia
Daschl
viiiel zu kompliziert. du brauchst eine intersection table zwischen "squad" und "spieler", die nur einträge über die id vom spieler und die id der squad enthält
für jede zuteilung von spieler zu squad einen eintrag.
dann per join aus der DB kitzeln
select * from squads sq
join intersectiontable it on sq.oid = it.squad.oid
join spieler s on s.oid = it.spieler oid
-> hast alle squads mit den passenden spielern.
wie rettich schon sagte, viel zu kompliziert
besser ist das:
3 tabellen.
tabelle 1: spieler
tabelle 2: spieler_squads
tabelle 3: name_squads
tabelle 2 enthält: id, spieler_id, squad_id
tabelle 3 enthält: id, name
das würd dann z.b. so aussehen
tabelle1:
id=1
name=Hans
position=honk
tabelle2:
id=(wurscht)
spieler_id=1
squad_id=2
tabelle3:
id=1
name=frauen
id=2
name=männer
soda und dann das ganze noch mit (left)join zusammenhexeln.
mfg
mhm weil du des so schreibst is mir noch eine idee gekommen:
wieso ned einfach, wenn einer hinzugefügt wurde, die spieler-id ( die ja auch uniqe is, also primschlüssel ), ned einfach in die tabelle squads dazu eintragen und dann die einfach wieder auslesen?
des mit intersection muss ich mir noch erarbeiten, des is bahnhof atm für mich
Zitat von moidaschlwieso ned einfach, wenn einer hinzugefügt wurde, die spieler-id ( die ja auch uniqe is, also primschlüssel ), ned einfach in die tabelle squads dazu eintragen und dann die einfach wieder auslesen?
stimmt, funkt ned recht scheid
edit:
hat wer eine ahnung, wo ich des am gscheitesten nachlesen kann mit der Join syntax? find nur
http://dev.mysql.com/doc/mysql/de/JOIN.html
und kann des da ned gscheit rauslesen.. im php q-net is auch nix darüber
thx
pff oke solved, big thx leutz
der vollständigkeit halber der source:
Code: PHP$sql = "SELECT p.Name FROM players p, players_teams pt WHERE pt.Team_ID = '1';"; $result = mysql_query($sql) OR die(mysql_error()); if(mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { echo $row['Name']; } }
OKE also i hab doch was verhaut, und i check genau _nix_ mehr
also
Code: PHP$sql = "SELECT p.Name FROM players p, players_teams pt WHERE pt.Team_ID = '1';"; $result = mysql_query($sql) OR die(mysql_error()); if(mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { echo $row['Name']; } }
weil du einen full-join machst (ich glaub so heisst das...) dh. mysql gibt die jede mögliche kombination aus den 2 gegebenen tables mit den werten, die du per where ausgewählt hast. dein query müsste so irgendwie in der art aussehn...
Code:SELECT p.Name FROM players p LEFT JOIN players_teams pt ON p.Player_ID=pt.Player_ID WHERE pt.Team_ID = '1'
funkt! big thx, jetz hab ichs auch gschnallt
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025