Betrifft PHP&MYSQL --> Dynamische Tabelle & Daten rauslesen geschlossen 

Status
Für weitere Antworten geschlossen.

dAsTyLeR

Registered +
Registriert
Aug. 2005
Beiträge
54
Hey Leutzz.. alles fit??

Ich habe ein kleines Problem. Ich muss (von der Schule aus) ein Projekt machen. Meines besteht darin, eine Datenbank für einen Verein (Musikverein) zu aufzuziehen und über PHP darauf zuzugreifen. Das hat auch alles funktioniert. Hier ein kleines Beispiel (aus meinem script):

Code:
 /* Verbindung aufbauen, auswählen einer Datenbank */
$mysqlhost='localhost';
$mysqluser='root';
$mysqlpwd='';
$connection=mysql_connect($mysqlhost,$mysqluser,$mysqlpwd); 
$mysqldb="Vereinsverwaltung";
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

/* ausführen einer SQL Anfrage */
$mitglied_sql = "SELECT * FROM Mitglied";
$mitglied_query = mysql_query($mitglied_sql) or die("Anfrage nicht erfolgreich");
$anzahlzeilen = mysql_num_rows($mitglied_query);

echo "Anzahl der Datensätze: ".$anzahlzeilen;
?>
[TABLE]

[TR]

[td]ID[/td]
[td]Name[/td]
[td]Vorname[/td]
[td]Strasse[/td]
[td]Plz[/td]
[td]Ort[/td]
[td]Geburtstag[/td]
[td]Eintrittsjahr[/td]
[td]Suerpfler[/td]
[td]Passiv[/td]
[td]Jahresbeitrag[/td]
[td]Bezahlt[/td]
[td]Zahldatum[/td]
[/TR]

 while ($mit = mysql_fetch_array($mitglied_query)){
?>
[TR]









[td] {
echo("Nein");
}
else
{
echo("Ja");
}
?>[/td]
[td] {
echo("Nein");
}
else
{
echo("Ja");
}
?>[/td]

[td] {
echo("Nein");
}
else
{
echo("Ja");
}
?>[/td]

[/TR]

 }
?>
[/TABLE]

Die Ausgabe entsprach auch meinen Vorstellungen. Das problem ist, das ich nun eine Dynamische Tabelle erstellen mag, da ja die Abfrage (was ich ausgegeben haben will z.B. nur name und eintrittsjahr) immer unterschiedlich ist. Dann hab ich mal gegoogelt und bin auf folgenden script gekommen, den ich dann auch angewendet habe (und es hat funktioniert):

Code:
 /* ausführen einer SQL Anfrage */
$mitglied_sql = "SELECT M_ID AS Mitgliedsnummer, M_Name AS Nachname, M_VName AS Vorname FROM Mitglied"; 
$mitglied_query = mysql_query($mitglied_sql) or die("Anfrage nicht erfolgreich");
/* Ausgabe der Ergebnisse in HTML */
echo "
[TABLE]
\n";
while ($line = mysql_fetch_array($mitglied_query, MYSQL_ASSOC)) {
echo "\t
[TR]
\n";
foreach ($line as $col_value) {
echo "\t\t[td]$col_value[/td]\n";
}
echo "\t
[/TR]
\n";
}
echo "
[/TABLE]
\n";

/* Freigeben des Resultsets */
mysql_free_result($mitglied_query);
?>

Damit bin ich auch (mehr oder weniger) zufrieden. Das einzige Problem vor dem ich stehe ist, das ich die Attribute (Die Spaltennamen) nicht dynamisch (automatisch) ausgeben lassen kann. Dieser script liefert und den inhalt der Tabellen, aber keinen "kopf". Ich könnte zwar das "von hand" eingeben (html --> statisch) allerdings ist die abfrage ja jedesmal anders und dann würds nicht mehr passen..

Nun meine Frage :) : Gibt es einen Befehl das man die Attribute dynamisch auslesen und ausgebenlassen kann (und wenn ja, wie ist der??) ?? habe das "ganze Internet" gegoogelt, aber ich find nix :(

wäre echt sau geil wenn mir jemand da helfen könnte, da ich bald zwischenabgabe habe (in 2 wochen) und diesen schritt (& diverse kleinigkeiten dazu :) ) bis dahin haben muss :)

mfg sTyLeR ;)

PS: Ich muss noch dazu sagen, das ich mich nur mittelmäßig auskenne, also wäre ich um eine "teilweise" ausfühliche erklärung/hilfe echt mords dankbar ;)
 
Hi,
du hast doch alles, was du wissen musst. Ein assoziatives Array und eine foreach-Schleife mit der du die Namen der Schlüssel des Arrays ausgeben kannst.
Nochmal zur Erinnerung:
Du verwendest
Code:
foreach (array_expression as $value) Anweisung
ich würde dir raten
Code:
foreach (array_expression as $key => $value) Anweisung

Dann kannst du einfach echo $key." hat den Wert ".$value; Und hast Bsp. "Schlüsselname hat den Wert Arraywert"

Hoffe, das hilft dir
Gruß
Broken Sword
 
Hey.. vielen vielen dank für die antwort ;)

Also, ich habe es nun folgendermaßen angewendet:

Code:
/* Verbindung aufbauen, auswählen einer Datenbank */
$mysqlhost='localhost';
$mysqluser='root';
$mysqlpwd='';
$connection=mysql_connect($mysqlhost,$mysqluser,$mysqlpwd); 
$mysqldb="Vereinsverwaltung";
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen."); 

/* ausführen einer SQL Anfrage */
$mitglied_sql = "SELECT * FROM Mitglied"; 
$mitglied_query = mysql_query($mitglied_sql) or die("Anfrage nicht erfolgreich");

/* Ausgabe der Ergebnisse in HTML*/
echo "
[TABLE]
\n";

while ($line = mysql_fetch_array($mitglied_query, MYSQL_ASSOC))
{
echo "\t
[TR]
\n";

foreach ($line as $keey => $col_value)
{
echo "\t\t[td]$keey[/td]\n";
$ifabfrage=($keey!= "M_ID" && $keey!="M_Plz" && $keey!="M_Eintrittsjahr");
if($ifabfrage)
{
if(is_numeric($col_value)==1)
{ 
if($col_value==0)
{
echo "\t\t[td] Nein [/td]\n";
}
else
{
echo "\t\t[td] Ja [/td]\n";
}
}
else
{
echo "\t\t[td]$col_value[/td]\n";
}
}
else
{
echo "\t\t[td]$col_value[/td]\n";
}
}
echo "\t
[/TR]
\n";
}
echo "
[/TABLE]
\n";

/* Freigeben des Resultsets */
mysql_free_result($mitglied_query);
?>

Nun, konnte ich anhand der attributnamen die ID, PLZ Und das Eintrittsjahr von den einträgen "Ja/Nein" (soll ja "boolean" sein) ausschließen.

Allerdings wenn ich die ausgabe nun mache, ist sie nicht ganz meinen erwartungen entsprechend. Sie sieht ungefäir so aus:

Attributname1 | Inhalt1 von 1 | Attributname2 | Inhalt1 von 2
Attributname1 | Inhalt2 von 1 | Attributname2 | Inhalt2 von 2
Attributname1 | Inhalt3 von 1 | Attributname2 | Inhalt3 von 2
................... | ................. | ................... | .................

und so weiter... wie bekomme ich des hin, das die attribut namen nur einmal ausgegeben werden, und zwar über die spalte von dem inhalt? habe mehrere varianten ausprobiert, aber ging nicht :(

vielen dank im voraus...

mfg sTyLeR ;)

------------------------------------------------------------------------------------------------------------

Alles klar ;) v ielen dank.. es hat sich erledigt ;) habe nun ein neues prob, das post ich aber in nem teuen thread, vielleicht antworten dann ein paar leute mehr ;)

mfg sTyLeR ;)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten