Databashantering‎ > ‎php‎ > ‎

lättanvänd funktion för att generera tabeller från SQL-frågor

Ibland vill man snabbt överblick över resultatet av en SQL-fråga.
För att göra detta så smidigt som möjligt kan man bygga en funktion för att göra detta som kan anropas där man vill visa en tabell över resultatet av en SQL-fråga.
Egendefinierade funktioner brukar läggas i separata php-filer ungefär som dbconnect.php.
Följande funktion skrivs i filen functions.php:

<?php
function print_table($query$id="") {
    //Exekverar SQL-frågan
    
$result mysql_query($query);

    
//räknar antalet fält
    
$count mysql_num_fields($result);

    
//om ett id har matats in, sätt det i tabellhuvudet
    
if(!empty($id)){
        echo 
"<table id=\"$id\">\n";
    }else{
        echo 
"<table>\n";
    }
    
    echo 
"\t<tr>\n"
    
//skriver ut rubiker till kolumnerna
    
for ($i 0$i $count$i++){
        echo 
"\t\t<th>".mysql_field_name($result$i)."</th>\n";
    }
    echo 
"\t</tr>\n"

    
//skriver ut de varje rad från frågan
    
while ($row mysql_fetch_assoc($result)) {
        echo 
"\t<tr>\n";
        foreach(
$row as $value){
            echo 
"\t\t<td>$value</td>\n";
        }
        echo 
"\t</tr>\n";
    }
    echo 
"</table>\n"
;
}

?>


Som du säkert ser så är denna funktion beroende av att det finns en existerande databaskoppling etablerad (dvs att dbconnect.php är inkluderad före funktionen anropas).
Som exempel testar vi att använda funktionen på sidan test.php:

<?php
include('dbconnect.php'); //håller databasanslutningen
include('functions.php'); //håller print_table()

//skriver ut en tabell med alla bilar, ger tabellen id: bilar
print_table("SELECT reg, marke, arsmodell FROM bilar""bilar");

//skriver ut alla personer där förnamnet börjar på Kn
print_table("SELECT * FROM personer WHERE fnamn LIKE 'Kn%'");
?>

Resultatet blir så här:

reg marke arsmodell
ABC123 Saab 2003
DEF123 Volvo 2002
GHI123 Mazda 2001
JKL123 Audi 2001
MNO123 BMW 1998
PQR123 Ford 2001
STU123 Volvo 1987
VYX123 Volkswagen 1988
ABC456 Volkswagen 2003
DEF456 Toyota 1998
GKR725 BMW 1994
id fnamn enamn fodelsedatum
3 Knatte Anka 1937-10-17
6 Knase Anka 1964-08-02

Comments