php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-09-2006, 15:19
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard Sortierte Ausgabe

Hi, habe leider ein echtes Problem, wo ich eigentlich schon dachte eine
Lösung gefunden zu haben. Also ich habe eine DB aus der einige Tabellen
sortiert ausgelesen werden sollen. Die Tabelle sieht so aus:

tblLiga
LigaID
TeamName

Nun möchte ich auf einer Seite jeweils folgende Ausgabe haben:

Liga A
Team a
Team b
Team c

Liga B
Team e
Team f

Liga C
Team m
Team x

usw.

Ich hatte das erst so gelöst:


PHP-Code:
if( $tmp != $LigaID)
{
    
Überschrift ausgeben
    $tmp 
$LigaID;
}
  
Teams ausgeben 
Hat auch gut funktioniert, bis ich als nächstes nun eine Funktion zum nachträglichen ändern und hinzufügen von weiteren Teams einrichten wollte.

Dann steht da also später nochmal die gleiche LigaID mit einem weiteren Team, da es aber zwischendrinn einen wechsel der ID gegeben hat, erscheint nochmal die Überschrift und das neue Team darunter, dabei muss es ja zur entsprechenden, vorherigen Ausgabe zugeordnet werden.

Wie kann man das lösen? Ich finde da momentan keinen Ansatz.

Vielen Dank im Voraus.

Sorry, hatte gar kein else drinn, also nur so wie oben...

Geändert von Luka (14-09-2006 um 15:29 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 14-09-2006, 15:23
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

GROUP BY und ORDER BY kombiniert vllt ?
à la GROUP BY ligaID ORDER BY teamname ASC
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #3 (permalink)  
Alt 14-09-2006, 15:27
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe ich schon probiert, aber wenn ich GROUP BY ligaID eingebe, dann habe nur 2 angezeigt bekommen, also jeweils ein Team per LigaID.

Danke dennoch.
Mit Zitat antworten
  #4 (permalink)  
Alt 14-09-2006, 20:20
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

idee:
Code:
letzteLiga = -1 // oder sonst irgend ein wert, der nie vorkommen wird.

für jeden datensatz (sortiert nach liga)
{
   wenn (datensatz.liga != letzteLiga)
      ausgabe ("Liga #") // überschrift

   ausgabe (datensatz.teamname)

   letzteLiga := datensatz.liga
}
na?
Mit Zitat antworten
  #5 (permalink)  
Alt 14-09-2006, 22:41
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@penizillin

Im Prinzip ist es ja genau das, was ich bereits habe. Das funktioniert aber nur so lange, wie ich nicht irgendwann weitere Teams hinzufüge, dann sieht die Ausgabe so aus:

Liga A
Team A
Team B

Liga B
Team E
Team F

Liga A
Team C

Liga C
...


Ich verzweifle noch daran, wie muss die Lösung denn nur aussehen??
Mit Zitat antworten
  #6 (permalink)  
Alt 14-09-2006, 22:44
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Luka
Das funktioniert aber nur so lange, wie ich nicht irgendwann weitere Teams hinzufüge
Dann stimmt deine eingangs gemachte Aussage
Zitat:
Also ich habe eine DB aus der einige Tabellen sortiert ausgelesen werden sollen.
also entweder nicht - oder du sortierst nach einem unsinnigen Kriterium.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 14-09-2006, 22:52
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Doch die stimmt eigentlich schon. Ich habe die anderen Tabellen über Joins verbunden, aber ich glaube nicht das die im Moment wichtig sind.

Mir geht es einfach nur darum zusammengehörige Daten zusammen darzustellen, egal wo sie in der Tabelle stehen. Jeder zusammengehörige Abschnitt hat dann halt seine eigene Überschrift. Das klappt aber wie gesagt nicht.
Mit Zitat antworten
  #8 (permalink)  
Alt 14-09-2006, 23:33
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Luka
Doch die stimmt eigentlich schon.
Dann müssten die Einträge ja nach Kategorien sortiert rauskommen, wenn du sie einfach so in einer Schleife ausgibst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 14-09-2006, 23:46
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, habe jetzt folgendes verwendet:

... GROUP BY tblLeagueTeams.SeasonLeagueID

Nun gebe ich das in einer normalen while Schleife aus und bekomme tatsachlich bei 2 unterschiedlichen Ligen in der DB nur 2 mal die Überschrift angezeigt. Leider bekomme ich aber auch jeweils nur 1 Team pro Liga angezeigt.

Was könnte denn da noch verkehrt sein?
Mit Zitat antworten
  #10 (permalink)  
Alt 14-09-2006, 23:53
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

genau das macht GROUP BY - es gruppiert nach dem vorgegebenen kriterium - so erhältst du so viele verschiedene datensätze wie verschiedene kriterien existieren.

ich habe überhaupt nicht verstanden, was an deiner (und meiner) lösung nicht funktioniert.
Mit Zitat antworten
  #11 (permalink)  
Alt 15-09-2006, 00:02
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das Problem ist die Ausgabe.

Überschrift: Liga A
Team A
Team B

Überschrift: Liga B
Team E
Team F

Überschrift: Liga A
Team C

Überschrift: Liga C

das kommt raus, wenn ich die If Geschichte mit einbaue. Die DB Tabelle sieht so aus:

ID LigaID LigaName LeagueTeam
1 10 Liga A Team A
2 10 Liga A Team B
3 12 Liga B Team E
4 12 Liga B Team F

so nun habe ich gemerkt, dass ein Team fehlt für Liga A, also wird das eingefügt.

5 10 Liga A Team C

Wenn ich nun sage zeige die Überschrift an und lese aus bis sich Liga ID ändert, dann zeige die nächste Überschrift an, dann kommt es natürlich zu dem Fehler, dass die Liga A Überschrift unten für den neuen Eintrag (Team C) erneut angezeigt wird.

Ich hoffe jetzt ist es verständlicher. Also habe ich jetzt Group By LigaID verwendet, bekomme aber wie gesagt nur jeweils 1 Team pro Liga ID angezeigt.

Wo könnte der Fehler denn nun wieder liegen?
Mit Zitat antworten
  #12 (permalink)  
Alt 15-09-2006, 00:20
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Ich hoffe jetzt ist es verständlicher. Also habe ich jetzt Group By LigaID verwendet, bekomme aber wie gesagt nur jeweils 1 Team pro Liga ID angezeigt.

Wo könnte der Fehler denn nun wieder liegen?
habe ich gerade eben erklärt und mache es nicht nochmal, bis du das manual diesbezüglich konsultiert hast.
Zitat:
[...]dann kommt es natürlich zu dem Fehler, dass die Liga A Überschrift unten für den neuen Eintrag (Team C) erneut angezeigt wird.
das liegt bloß daran, dass du nicht nach der liga-id sortierst, sondern nach irgend etwas anderem.
Mit Zitat antworten
  #13 (permalink)  
Alt 15-09-2006, 00:30
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Du redest die ganze Zeit davon, dass du die Datensätze sortiert hättest - aber ganz offensichtlich hast du das nicht getan, oder nicht sinnvoll.

Und vergiss GROUP BY, das ist in dem Fall völliger Unsinn.
Hast du überhaupt schon begriffen, dass GROUP BY nicht zum Sortieren dient? Sortieren macht man mit ORDER BY.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #14 (permalink)  
Alt 15-09-2006, 00:36
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Order by sortiert Datensätze nach bestimmten Kriterien

Group By fasst Datensätze einer "Kategorie" zusammen

oder liege ich da falsch?

Ich habe ja auch eher daran gedacht, dass ich beim SQL wenig machen kann und das Geheimnis in der Ausgabe selber liegt. Deswegen ja auch dieser Ansatz:

PHP-Code:
if( $tmp != $LigaID)
{
    
Überschrift ausgeben
    $tmp 
$LigaID;
}
  
Teams ausgeben 
Der aber nur soweit geht, bis man irgendwann ein weiteres team einfügt.
Mit Zitat antworten
  #15 (permalink)  
Alt 15-09-2006, 00:40
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sortiere nach liga-id.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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