php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.06.2008, 16:01  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] dynamische Tabelle aus MySQL-Abfrage

Hallo,

ich möchte gerne eine Funktion schreiben, die mir aus einer beliebigen MySQL-Abfrage eine dynamische Tabelle mit Überschriften generiert.

Dazu habe ich bisher folgendes:
PHP-Code:
function generateTable($sql){
    
$result mysql_query($sql);
    
$row mysql_fetch_assoc($result);
    
    
//Ausgabe Tabellenheader
    
echo'<table align="left" cellspacing="0" cellpadding="3" id="anmlist"><thead><tr class="listborder">';
    
    
// Ausgabe Tabellenüberschriften
    
foreach (array_keys($row) as $key) {
        echo
"<th class=\"listborder\">$key</th>";
    }
    
    echo
'</tr></thead><tbody><tr>';
    
    
// Ausgabe Tabelleninhalt
    
while ($row mysql_fetch_assoc($result)) {
        foreach (
$row as $value) {
            echo
"<td class=\"listborder\">$value</td>";
        }
        echo
'</tr>';
    }
    echo
'</tbody></table>';

Das funktioniert vom Prinzip her auch, aber leider unterschlägt es mir dabei den ersten Datensatz.

Wahrscheinlich muss ich innerhalb der while-Schleife testen, ob es sich um den ersten Datensatz handelt, und dann zusätzlich mit array_keys() die Spaltentitel ausgeben, aber leider komm ich gerade nicht drauf, wie ich das machen könnte.

Weiss jemand Rat?

Danke,
maeck
maeck ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.06.2008, 16:25  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

ich würde die Schleife so aufziehen:
PHP-Code:

    $result 
mysql_query($sql);
    while(
$row mysql_fetch_assoc($result)) {

   
    } 
Die Feldnamen kriegt man ja mit field_list (genaue Syntax weiß ich grade nicht)

Geändert von Wolla (28.06.2008 um 16:29 Uhr).
Wolla ist offline  
Alt 28.06.2008, 16:30  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Hallo Wolla,
danke für deine Rückmeldung, aber so habe ich die Schleife ja aufgezogen

Ich habe dann nur darüber noch ein foreach gemacht, weil ich nicht weiß, wie ich innerhalb der while-schleife abfragen kann, ob ich mich im ersten Datensatz des Arrays befinde, um dann vor der Ausgabe der Werte, erst noch mit array_keys() die Spaltentitel auszugeben.
maeck ist offline  
Alt 28.06.2008, 17:55  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Einfacher mit einer do-while Schleife.
PHP-Code:
<?php
function generateTable($dbconnection$sql){
  
$result mysql_query($sql$dbconnection);
  if (!
$result) {
    throw new 
Exception('sinnvoller Text, sinnvolle Exception-Klasse');
  }
  
$row mysql_fetch_array($resultMYSQL_ASSOC);
  if (
$row) {
    echo 
'
      <table align="left" cellspacing="0" cellpadding="3" id="anmlist">
        <thead>
          <tr class="listborder">
            <td>'
join('</td><td>'array_map('htmlentities'array_keys($row))), '</td>
          </tr>
        </thead>
    '
;
    do {
      echo 
'<tr><td>'join('</td><td>'array_map('htmlentities'$row)), "</td></tr>\n";
    } while (
$row mysql_fetch_array($resultMYSQL_ASSOC));
  echo
'</tbody></table>';
  }


$db mysql_connect(...) or die(mysql_error());
mysql_select_db(..., $db) or die(mysql_error());
generateTable($db'SELECT ...');
David ist offline  
Alt 28.06.2008, 18:15  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

@David: Du bist ja echt genial, dass du dir so viel Mühe für mich gemacht hast, herzlichen Dank!!

Auf die Idee das ganze mit do...while-Schleife und join zu machen bin ich nicht gekommen. Danke auch für das Hinweisen auf die Exceptionbehandlung - die ich leider meistens vergesse

Vielen Dank nochmal ... es läuft genau so wie ich wollte.

Schönes Wochenende,
maeck
maeck ist offline  
Alt 01.07.2008, 06:16  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Vielleicht beschraenkst du dich mal auf ein Forum ..
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 01.07.2008, 23:15  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Vielleicht beschraenkst du dich mal auf ein Forum ..
Hallo Chriz,
wenn du damit meinen Eintrag bei phpfriend.de meinst: Ich habe dort leider keine Antwort auf meine Frage bekommen und musste dringend dieses Script fertig bekommen. Hier habe ich Hilfe bekommen und habe dann auf phpfriend sogar Bescheid gegeben, dass es gelöst ist

Was ist so schlimm daran, wenn man mehrere Foren benutzt?
Gibt es eine Regel die besagt, dass ich nur ein PHP-Forum benutzen darf?

Gruß maeck
maeck ist offline  
Alt 01.07.2008, 23:23  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ist eine Frage des Respekts den Usern gegenüber. Zumindest einen Link auf das andere Forum solltest Du bei Crosspoistings hinterlassen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 01.07.2008, 23:30  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch77-new Beitrag anzeigen
Ist eine Frage des Respekts den Usern gegenüber.
Was hat das mit Respekt zu tun?? Ich habe doch keinen respektlos behandelt
z.B. Ich frage einen Bekannten mir bei einem Problem zu helfen, er hat aber keine Zeit oder keine Ahnung davon. Dann frage ich einen anderen, der mir helfen kann. Muss ich dann dem letzten sagen, dass ich vorher schon einen anderen gefragt habe, weil ich ihn sonst respektlos behandeln würde?

Noch was anderes: Was hätte es gebracht, wenn ich hier einen Link zu phpfriend hinterlassen hätte? Dann hätte jemand, der mir helfen wollte, erst auf den Link geklickt und sich dort zwei Seiten durchlesen müssen, bevor er mir antwortet.
Was bringt ihm und mir das?

Versteht mich nicht falsch ... ich will es wirklich verstehen, aber mir erschließt es sich leider nicht.
Aber für den Fall, dass ich durch mein Verhalten jemanden hier respektlos behandelt habe, dann tut mir das wirklich leid.

Schöne Grüße,
maeck
maeck ist offline  
Alt 01.07.2008, 23:35  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Respekt im Sinne von: User in zwei Foren beantworten ohne voneinander zu wissen Deine Fragen und verschwenden vielleicht Ihre Zeit damit, bereits gefundene Lösungen erneut zu erarbeiten.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
[Erledigt] Daten aus einer Tabelle mit Form Select weiter geben ch4in PHP Tipps 2008 12 06.06.2008 21:42
Frage: richtige SQL Abfrage von einer MySQL Spalte die SET werte besitzt Seb PHP Tipps 2008 2 29.05.2008 11:36
[Erledigt] Php Mysql ausgabe in Tabelle / Gruppentrennung xitam PHP Tipps 2008 3 28.05.2008 22:03
[Erledigt] MySQL Tabelle lässt sich nicht updaten ch4in PHP Tipps 2008 4 28.05.2008 15:28
Abfrage einer Tabelle aus mysql Munsi1 PHP Tipps 2008 12 18.04.2008 11:44
Abfrage auf fehlende ID in einer Tabelle maeck Datenbanken 2 04.07.2007 19:44
[Erledigt] Dynamische Ausgabe von Mysql Abfragen PHP-Fortgeschrittene 1 21.10.2005 10:53
[Erledigt] MySQL Abfrage über mehrere Tabellen [Erledigt] Datenbanken 2 14.10.2005 13:37
[Erledigt] Problem mit mySQL Datenbanken 7 27.09.2005 12:06
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
einfache mysql abfrage und mysql update haut nicht ganz hin djrace PHP Tipps 2005-2 6 12.08.2005 15:28
[Erledigt] MYSQL Abfrage (mit Optimierter Datenbank) -&gt; PhP Datenbanken 2 02.03.2005 18:50
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php dynamische tabelle aus mysql-abfrage, tabellenüberschrift mysql, php dynamische tabelle, dynamische mysql abfrage php, dynamische tabelle für abfrage, mysql dynamische abfrage, php mysql tabellenüberschrift

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum