SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.02.2005, 10:14:37
klaus-maus klaus-maus ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 65
Ausgabe verknüpfter Tabellen

Hi,
Folgendes Problem: ich möchte für meinen Fussballverein (Kreisklasse oder so) die Homepage etwas aufmöbeln und da soll u.a. auch ein Spielplan mit rein. Jetzt könnte ich zwar alles in eine Tabelle schreiben:
Datum | Zeit | Heimmannschaft | Gastmannschaft
Besser ist wohl, zwei Tabellen zu nutzen:
Datum | zeit | manns_1_ID | manns_2_ID
Da brauche ich die Mannschaften nur 1x zu erfassen. Eingabe klappt auch, die ID's der Mannschaften sind korrekt in der Spielplantabelle eingetragen; nur bei der Ausgabe haperts - das bekomme ich nicht gebacken; wäre nett, wenn mir jemand helfen würde:

$termin_SQL="SELECT * FROM $table3,$table4,$table5 WHERE $table3.team_ID=$table4.team_ID AND $table3.sp_ort1_ID=$table5.ort_ID";

hier fehlt noch die $table3.sp_ort2_ID=$table5.ort_ID

table3 ist der Spielplan, in table4 sind die Spielklassen (Männer, Junioren, Jugend usw. ) erfasst, table 5 ist für die Mannschaften von Gross Kleinau bis Klein Kleckersdorf.
Eine Mannschaft lässt sich anzeigen, wie bekomme ich die Zweite angezeigt?

Ausgabe sieht so aus:

while($sp_termin=mysql_fetch_array($termin_result)){

<td><?php echo $sp_termin['sp_zeit'] ?></td>
<td><?php echo $sp_termin['team_name'] ?></td>
<td><?php echo $sp_termin['ort_bez'] ?></td>
<td><?php echo $sp_termin['ort_bez'] ?></td> ->>> Problem !!!


Die Sielplantabelle (table3) sieht so aus:

sp_ID
sp_date
sp_zeit
team_ID
sp_ort1_ID
sp_ort2_ID

Die Mannschaftstabelle (table5):

ort_ID
ort_bez


Gruss Klaus
Mit Zitat antworten
  #2  
Alt 17.02.2005, 12:48:56
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
AW: Ausgabe verknüpfter Tabellen

Hi,

versuch mal folgendes SQL:

SELECT t3.*,...
FROM $table3 AS t3 INNER JOIN $table4 AS t4 ON t3.team_ID = t4.team_ID
INNER JOIN $table5 AS t5 ON t3.sp_ort1_ID=t5.ort_ID

(was steht eigentlich in $table4?? Unten erwähnst Du nur 2 Tabellen)

Des weiteren ist ein SELECT * immer schlecht. Zähle hier besser die wirklich benötigten Felder auf.
Grund: Du kannst so nicht sicherstellen, in welcher Reihenfolge die Felder kommen. Des weiteren ist die Gefahr, daß nach einer Tabellenänderung (z.B. Erweiterung um ein weiteres Feld), Deine auf dieses Statement aufbauenden Skripte nicht mehr laufen, zig-fach größer.

HTH,

Andy
Mit Zitat antworten
  #3  
Alt 17.02.2005, 13:45:29
klaus-maus klaus-maus ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 65
AW: Ausgabe verknüpfter Tabellen

Zitat:
Zitat von diver-network

(was steht eigentlich in $table4?? Unten erwähnst Du nur 2 Tabellen)

D

Hi Any,
danke für die Antwort.

Mir fehlt aber noch die Ausgabe des 2. Partners: wie bekomme ich den über die while-Schleife angezeigt? Das ist mein eientliches problem an der Stelle.
Hast Du da einen Tipp?

P.S. Nachfrage: wenn ich statt SELECT * die Felder angebe, ist dann die Reihenfolge der Angabe im SELECT gleichbedeutend mit der Ausgabe, d.h., kann ich so schon eine "Sortierung" vornehmen?

in table4 sind die Spielklassen (Männer, Junioren, Jugend usw. bis Bambini) erfasst

team_ID
team_name

Gruß Klaus

Geändert von klaus-maus (17.02.2005 um 14:05:32 Uhr)
Mit Zitat antworten
  #4  
Alt 18.02.2005, 09:44:24
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
AW: Ausgabe verknüpfter Tabellen

Hi Klaus,

sorry für die späte Antwort, hatte gestern Nachmittag eine Besprechung.
Zitat:
P.S. Nachfrage: wenn ich statt SELECT * die Felder angebe, ist dann die Reihenfolge der Angabe im SELECT gleichbedeutend mit der Ausgabe, d.h., kann ich so schon eine "Sortierung" vornehmen?
Je nachdem, was Du mit "Sortierung" meinst lautet die Antwort "ja" bzw. "nein" ;-)

Meinst Du eine Sortierung im Sinne von, z.B., einer alphabetischen Ausgabe der Vereinsnamen lautet die Antwort ganz klar NEIN. Hier mußt Du das SQL- Statement um ein ORDER BY (eventuell in Verbindung mit GROUP BY, wenn Du z.B. alle Spiele von Manschaft A als erstes, dann die Spiele von Mannschaft B als zweites ausgeben willst) ergänzen.

Meinst Du eine Sortierung im Sinne von "ich möchte zuerst den Mannschaftsnamen, dann den Ortsnamen und dann den Trainernamen bekommen" lautet die Antwort JA.

Je nachdem, wie Du die Ergebnisse des SELECTs in php- Variablen überführst ist dies relevant bzw. egal. Bei Deiner Methode mit mysql_fetch_array() ist dies egal, bei der von mir meistens angewandten Methode mit mysql_fetch_row() ist dies sehr wichtig.

Zu Deinem Problem: Wenn ich es richtig gesehen habe gibst Du zweimal die gleiche Ortsbezeichnung aus.
Ansonsten sieht der Code für die Ausgabe korrekt aus.

Bzgl. Deiner Tabelle table3 (bei mir: spiele) würde ich Dir empfehlen, diese folgendermaßen zu ändern:
spielid (primary key, autoincrement)
mannsch1 (id der ersten Mannschaft)
mannsch2 (id der zweiten Mannschaft)
klassenid (Spielklasse)
spielortid (kann, muß aber nicht gefüllt sein, wenn Spielort = Heimatort der ersten Mannschaft)
spieldatum (und Uhrzeit)
resultat (oder aufgeteilt auf torem1,torem2 (Tore der Mannschaft 1,..))

table4 (klassen) enthält die Spielklassen
table5 (vereine) die Vereinsnamen, verknüpft mit table4 über die klassenid, mit table6 über die ortsid
table6 (orte) enthält die Ortsnamen


So, wie Du es mit zwei Orts-ids gemacht hast kommst Du nur dann an die zweite Mannschaft, wenn es in deren Ort nur genau einen Verein gibt.

SELECT v1.vereinsname,o1.ortsname,v2.vereinsname,o2.ortsname,03.ortsname AS spielort,k.spielklasse,...
FROM vereine AS v1 INNER JOIN orte AS o1 ON v1.ortsid = o1.ortsid // Mannschaft 1 mit Heimatort
INNER JOIN spiele AS s1 ON v1.vereinsid = s1.mannsch1
INNER JOIN orte AS o3 ON s1.spielortid = o3.ortsid // Spielort
INNER JOIN vereine AS v2 ON s1.mannsch2 = v2.vereinsid // jetzt bekomme ich die gegnerische Mannschaft
INNER JOIN orte AS o2 ON v2.ortsid = o2.ortsid // Heimatort der zweiten Mannschaft
INNER JOIN klassen AS k ON s1.klassenid = k.klassenid
WHERE spieldatum = [was auch immer]
AND k.spielklasse LIKE 'kreisklasse a'
AND ...

HTH,

Andy

P.S.: Benenne Deine Tabellen immer dem Inhalt entsprechend. Generische Tabellennamen wie table1 etc. sind immer schwer zu handeln, wenn es an die SQLs geht.
Mit Zitat antworten
  #5  
Alt 20.02.2005, 17:03:31
klaus-maus klaus-maus ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 65
AW: Ausgabe verknüpfter Tabellen

Hallo Andy,
der Tipp mit mysql_rows war der entscheidende - jetzt hab ichs! Vielen Dank.

Gruss Klaus.

P.S. Bei Deinem SELECT - Beisp. blicke ich allerdings noch immer nicht ganz durch | -].
Mit Zitat antworten
  #6  
Alt 21.02.2005, 12:49:15
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
AW: Ausgabe verknüpfter Tabellen

Hi Klaus,

ist doch ganz einfach ;-)

Zitat:
SELECT v1.vereinsname,o1.ortsname,v2.vereinsname,o2.ortsname,03.ortsname AS spielort,k.spielklasse,...
Hier gibst Du an, welche Spalten aus welchen Tabellen angezeigt werden sollen.
Zitat:
FROM vereine AS v1 INNER JOIN orte AS o1 ON v1.ortsid = o1.ortsid // Mannschaft 1 mit Heimatort
Nehme die Tabelle "vereine" als Ausgangspunkt und suche den Himatort dieser (ersten) Mannschaft aus der Tabelle "orte". Die beiden Tabellen sind über das Feld ortsid verknüpft, da in der Tabelle vereine eine Spalte "ortsid" steht, die mit einer entsprechenden id aus der Tabelle "orte" übereinstimmt.
Zitat:
INNER JOIN spiele AS s1 ON v1.vereinsid = s1.mannsch1
Suche jetzt die Spiele, an der die Mannschaft 1 teilgenommen hat bzw. teilnehmen wird.
Zitat:
INNER JOIN orte AS o3 ON s1.spielortid = o3.ortsid // Spielort
Suche jetzt den Spielort zu diesen Spielen
Zitat:
INNER JOIN vereine AS v2 ON s1.mannsch2 = v2.vereinsid // jetzt bekomme ich die gegnerische Mannschaft
Suche jetzt die gegnerische Mannschaft zu den Spielen.
Zitat:
INNER JOIN orte AS o2 ON v2.ortsid = o2.ortsid // Heimatort der zweiten Mannschaft
Nachdem der Name der zweiten Mannschaft bekannt ist suche deren Heimatort aus der Tabelle "orte"
Zitat:
INNER JOIN klassen AS k ON s1.klassenid = k.klassenid
Suche zuletzt die Spielklasse, in der das Spiel stattfinden soll(te).
Zitat:
WHERE spieldatum = [was auch immer]
AND k.spielklasse LIKE 'kreisklasse a'
Nähere Eingrenzungen zu dem Spiel, z.B. Spieldatum (ACHTUNG: im SQL sollte es heißen: s1.spielklasse) oder Spielklasse.

Les' in einschlägigen SQL- Dokus mal etwas über n:m- Beziehungen sowie Zwischentabellen (hier: Tabelle "spiele") nach.
Des weiteren solltest Du Dir die Syntax des SQL Befehls (INNER) JOIN noch mal ansehen.
Ein INNER JOIN ist im Prinzip nichts anderes als das, was Du mit SELECT t1,*,t2.* FROM t1,t2 WHERE t1.id = t2.id gemacht hast. Allerdings um ein vielfaches performanter, da hier nicht die ganze Tabelle durchsucht werden muß.
HTH, falls nicht beschreib Dein Problem etwas genauer und ich versuche, Dir besser zu helfen ;-)

Andy
Mit Zitat antworten
  #7  
Alt 21.02.2005, 13:10:20
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
AW: Ausgabe verknüpfter Tabellen

Zitat:
Zitat von diver-network
ist doch ganz einfach
'einfach' ist immer relativ zum wissenstand zusehen :-)
__________________
Gruß |Coding

---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #8  
Alt 21.02.2005, 15:00:25
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
AW: Ausgabe verknüpfter Tabellen

@Coding:

Ich hätte meinen Smiley doch noch größer machen sollen ;-)

Gruß,

Andy
Mit Zitat antworten
  #9  
Alt 28.02.2005, 11:09:35
klaus-maus klaus-maus ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 65
AW: Ausgabe verknüpfter Tabellen

Hi,
die Erläuterung des Beispiels war super - habe ich kapiert. Danke.
Mir war in dem "komplizierten" Ausdruck am Anfang die Bedeutung der Aliase vor dem FROM und das ON unklar. Glaube nun, verstanden zu haben.

In unterschiedlichen Tuts u. Beispielen wird das ja auch unterschiedlich beschrieben, für Anfänger nicht immer einfach zu durchschauen...

Gruss Klaus.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
bestimmte html ausgabe joker PHP Grundlagen 2 15.11.2004 21:37:56
Ausgabe in Tabellen Hanf24 MySQLi/PDO/(MySQL) 1 06.08.2004 21:54:59
Ausgabe eines echo befehls? Funjoy PHP Grundlagen 2 15.07.2003 13:35:34
Db abfragen von 2 tabellen GrafvonHenneber PHP Grundlagen 6 22.01.2003 15:37:48
Mehrere Tabellen in DB sortieren DiJae PHP Grundlagen 4 23.09.2002 10:58:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:07:21 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt