Antworten auf deine Fragen:
Neues Thema erstellen

[PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

G

_gizmo

Guest

Hallo an alle,

ich habe für unseren Sportverein eine kleine Spieler-Datenbank
erstellt, in der verschiedene Daten gesammelt werden.

Diese möchte ich innerhalb einer "Tabelle" ausgeben nur habe
ich keine Ahnung wie ich es am saubersten hin bekomme.

Nun zum Layout:

Code:
 Mannschaft A[INDENT] Sturm:

<Daten von Spieler 1> | <Daten von Spieler 2>
<Daten von Spieler 3> | <Daten von Spieler 4>

Mittelfeld:

<Daten von Spieler 1> | <Daten von Spieler 2>
<Daten von Spieler 3> | <Daten von Spieler 4>

usw...
[/INDENT]Mannschaft B[INDENT] Sturm:
  
 <Daten von Spieler 1> | <Daten von Spieler 2>
 <Daten von Spieler 2> | <Daten von Spieler 4>
  
 Mittelfeld:
  
 <Daten von Spieler 1> | <Daten von Spieler 2>
 <Daten von Spieler 2> | <Daten von Spieler 4>
  
usw...

[/INDENT]
Wie kann ich es umsetzen das erst nach Mannschaften gefiltert wird,
dann nach den Positionen und diese Daten in zwei vielleicht auch drei Spalten ausgegeben werden???

Danke =)

Gruß
Peter
 

macmerlin1976

Aktives Mitglied

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

Naja filtern machst Du ja schon in der SQL Abfrage mit "GROUP BY" oder nicht?
 
G

_gizmo

Guest

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

Kann ich mit Hilfe von GROUP BY auch die Verschachtelung hinbekommen?
Oder muss für jede Mannschaft eine eigene Abfrage gebastelt werden?
 

macmerlin1976

Aktives Mitglied

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

Das könntest Du ja auch mit ner Schleife machen.
Sonst habe ich das hier gerade gefunden:

mysql> SELECT year, country, product, SUM(profit)
-> FROM sales
-> GROUP BY year, country, product WITH ROLLUP;

Also kannst Du auch nach mehreren Bereichen gruppieren. Und dann nachher mit ner If Abfrage wieder zerlegen.

Übrigens Google ist bei sowas dein Freund. Einfach mal eingeben!
 
G

_gizmo

Guest

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

Danke für die schnellen Antworten macmerlin1976 :)

Das werde ich heute Abend mal in ruhe testen.

Ich hatte halt bis jetzt immer eine Abfrage pro Position,
an die GROUP BY Funktion hatte ich einfach nicht gedacht/wusste ich nicht.

Aber mein eigentliches Hauptproblem besteht darin eine Schleife zu basteln
um zwei Datensätze nebeneinander darzustellen.

Zu meiner Entschuldigung sei zu erwähnen das ich das erste mal richtig Kontakt mit PHP und MySQL habe. :D

PS:
gegoogelt habe ich auch schon nach meinen Fragen,
aber ich finde nie genau das was ich suche...
 
G

_gizmo

Guest

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

Wie man aber ne SQL Abfrage mit PHP ausgibt weißt Du - oder?
Ob ich ganz genau weiß was ich da mache, kann ich nicht beurteilen :D

Aber für meine Zwecke funktioniert es denke ich mal schon ganz gut.
Allerdings habe ich den Tip mit GROUP BY noch nicht probiert...

Hier ein teil meines bisherigen Codes:
PHP:
$result=mysql_query("SELECT name,vorname,hobbies,spitzname FROM spielerdatenbank WHERE position LIKE 'Sturm';");

$i=0;
echo "<table border=0 width=300 align=center>";
    echo "<tr>";
    echo "<td colspan='2'><hr></td>";
    echo "</tr>";
    while ($row=mysql_fetch_array($result))
     {
      echo "<tr>";
         echo "<td width=150><b>".$row['name']."</b></td>";
         echo "<td width=150><b>".$row['vorname']."</b></td>";
        echo "</tr>";
        echo "<tr>";
         echo "<td colspan='2'>&nbsp;</td>";
        echo "</tr>";            
        echo "<tr>";
         echo "<td>Spitzname</td>";
         echo "<td><hr width=40></td>";
        echo "</tr>";
        echo "<tr>";
         echo "<td colspan='2' align='center'>".$row['spitzname']."</td>";
        echo "</tr>";
        echo "<tr>";
         echo "<td>Hobbies</td>";
         echo "<td><hr width=40></td>";
        echo "</tr>";
        echo "<tr>";
         echo "<td colspan='2' align='center'>".$row['hobbies']."</td>";
        echo "</tr>";
        echo "<tr>";
         echo "<td colspan='2'><hr></td>";
        echo "</tr>";
        $i++;
    }
echo "</table>";
Ich habe nur keine Ahnung wie ich das Ganze in zwei oder drei Spalten ausgeben soll??? Es sind ja nicht immer die gleiche Anzahl an Datensätzen.

PS:
Bitte nicht hauen für meinen Programmierstil :)
Bin aber für jeden Verbesserungsvorschlag dankbar...
 
Zuletzt bearbeitet von einem Moderator:

macmerlin1976

Aktives Mitglied

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

Sieht doch gar nicht so schlecht aus.
4. Zeile mit echo soll bestimmt /tr rein oder?

Dann mußt Du noch ne Switch-Abfrage einbauen wo Du die Namen der Mannschaften bez. der Position abfragst und dann dem entsprechend neue Headlines ausgeben.

Ist für mich auch irgendwie schwer zu erklären da ich erst seit nem halben Jahr Datenbanken mache.

Aber ich hoffe Du verstehst was ich meine.
Sonst schreib mir nochmal ne Mail.

Vielleicht schaffe ich heute noch rein zu gucken - sonst aber morgen.
 

cebito

undefined

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

Wofür ist $i gut? Datensätze zählen? Du könntest die Variable benutzen:

PHP:
if ($i%2 == 0){ 
   //mach dies
}else{
   //mach das
}
 

saila

Moderatorle

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

Hi,

zu deiner Eingangsfrage zur Ausgabe der Spielerdaten inkl. der Mannschaftsdaten:

Du hast die spieler-Tabelle ja schon erstellt. In dieser Tabelle kommt noch ein Feld mit der (z.B) Bezeichnungs "mannschaft"

Dazu gehört eine Tabelle in der DB mit den Mannschaften. Wie diese aussieht oder auszusehen hat, überlasse ich dir.
Wichtig ist dabei allerdings, dass ein Feld einen eindeutigen Schlüssel (key) besitzt. Am besten lässt sich dies immer über auto_increment (ID) und diesen als Primärer Index erzielen.

Sagen wir, der Spieler 1 soll zur Mannschaft 1 gehören und der Spieler 2 zur Mannschaft 4.

Das würde bedeuten, dass in der Spieler-Tabelle im Feld "mannschaft" der Spieler 1 den Wert 1 stehen hat und der Spieler 2 im Feld "mannschaft" den Wert 4.

Wenn du nun ein Select-Query bauen möchtest um die Daten zusammen zu bringe, gelingt dir dies über ein SELECT mit einem LEFT JOIN auf die Tabelle Mannschaften.

Das könnte z.B. so aussehen:
PHP:
<?php 
$query = 'SELECT 
                a.spieler_id, 
                a.spitzname, 
                b.mannschaft_name 
          FROM
              spielertabelle a
              LEFT JOIN mannschaft AS b ON b.mannschaft_id = a.mannschaft
          GROUP BY
              a.spieler_id';

$result = mysql_query($query);
?>

Soweit als Gedankenansatz. Warum zwei Tabellen - weil das zum einen die normalisierung von Datenbanktabellen und Datenbezug erfordert. Sprich - Spielerdaten und Mannschaftsdaten sind somit getrennt und können um ein vielfaches besser zur Datenlieferung genutzt werden.
 
R

remy-otoshi

Guest

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

Moin zusammen,

noch ein paar Tipps (befolge den von Saila mit der Normalisierung unbedingt!):
Mache den ganzen Abfragekram vorweg und speichere die Daten aus der Datenbank in einer Variablen. Anschließend erst die Ausgabe (mir stösst das mysql_fetch_array($result) in der while-Schleife etwas auf). Halte möglichst konsequent den operativen Teil vom ausgebenden Teil getrennt: Das fördert die Übersichtlichkeit und die Wartung enorm.

Praxistipp dazu: Ich habe mir ein paar kleine Funktionen geschrieben, in den ich häufig vorkommende Abfragearten (Tabelle ausgeben, Zeile ausgeben, Spaltennamen ausgeben, ...) gespeichert habe. Dann stelle ich mir lediglich den Abfrageausddruck zusammen (z .B. $qry = "SELECT ...") und rufe dann die Funktion auf (z.B. $ergebnis = auflistenSpaltennamen ($qry); )

Ab dem Zeitpunkt, in dem die Ausgabe per Tabelle als Formatierungsmöglichkeit genutzt wird und nicht zur alleinigen Darstellung strikter tabellarischer Daten dient, sollte man sich überlegen, ob eine Formatierung per css nicht flexibler, wartungsfreundlicher und übersichtlicher ist.

Viele Grüße, remy
 
G

_gizmo

Guest

AW: [PHP + MySQL] Daten in einer "dynamischen" Tabelle ausgeben

@
Habe mal deinen vorschalg mit GROUP BY probiert, jedoch kommt immer nur ein Datensatz pro Position heraus.
Liegt es an meiner Tabelle? Würde es funktionieren wenn ich es so machen würde wie "saila" es geschrieben hat?

@saila:
Ich muss leider gestehen, das ich die Daten Eingabe sehr redundant gemacht habe.
meine damit, das in jedem Datensatz die Positionen (Sturm/mittelfeld/usw.) komplett ausgeschrieben drinne habe.
Das Dadurch die Datenflucht irgendwann ins unermessliche gerät ist mir bewusst.
Dazu bin ich noch zu unbeholfen was php und mySQL angeht.

Vieles was ich im Eingabeformular verwendet habe ist total hardcoded z.B. die Optionsfelder usw.
Das Problem ist das ich absolut nicht weiß wie :)

@remy-otoshi:
Darf ich ganz offen sein? Was du geschrieben hast ist mir ein wenig zu hoch.
Meinst du ich sollte alle Daten erst in einem riesigem Array sammeln und dann die Daten wieder zerpflücken oder was?
Und Abfragen in einzelne Funktionen auslagere????

und die Sache mit der CSS Formatierung würde ich auch gene machen,
jedoch habe ich das prinzip von den DIV-Tags noch nicht ganz verstanden.
Bin ja froh das ich mit HtML einigermaßen vorankomme.


PS: Bin nicht so oft in Foren aktiv und habe deswegen keine Ahnung ob ich das alles hier so richtig mache
und auch alles der Netiquette entspricht... Hatte in anderen Foren nie oder nur eine Antwort erhalten.
Ich bin mit der Masse an Antworten fast schon überfordert :)
 
Zuletzt bearbeitet von einem Moderator:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.640
Beiträge
1.538.506
Mitglieder
67.560
Neuestes Mitglied
azmostbethaot
Oben