[PHP]alles van tabellen weergeven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
He ik ben pas net begonnen met php en ik vroeg me af of het mogelijk is om alle kolomen van een tabel weer te geven. Ik weet wel dat het kan om alle tabellen van een database weer te geven.

Assume there are no rules and it's one big free for all


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:51

Janoz

Moderator Devschuur®

!litemod

Kijk eens in de SQL manual van de door jou gebruikte DB. Hierin staat vast wel hoe je de kolomen op kunt vragen van je tabel. Op dat moment heb je de kolom namen. Verder kun je met SELECT * alles opvragen uit een tabel en dit simpel met php uitlezen. Maar ik wil je afraden om dit te gebruiken. Waneer je in je applicatie niet weet welke kolomen je query terug zou kunnen geven is er iets flink mis met je ontwerp!!

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 08:58

thomaske

» » » » » »

MySQL Functions

en dan even zoeken naar mysql_list_fields()

edit:

even aangenomen dat je gebruik maakt van MySQL :)

[ Voor 27% gewijzigd door thomaske op 24-12-2002 14:00 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

SELECT * ?

Of bedoel je de meta-data? Zo ja zoek dan eens op meta-data in de manual van MySQL

(edit: das 3x hetzelfde antwoord in een minuut ;))

[ Voor 22% gewijzigd door Bosmonster op 24-12-2002 14:00 ]


Acties:
  • 0 Henk 'm!

  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Ik weet dat ik alles kan opvragen met Select * maat dat bedoelde ik niet. Ik wil de echt alleen de namen van de kolomen krijgen.

Maar ik denk dat ik nu wel verder kan zoeken op google. Bedankt voor de reply's

Assume there are no rules and it's one big free for all


Acties:
  • 0 Henk 'm!

  • Boogie
  • Registratie: Januari 2001
  • Laatst online: 06-11-2024
Je bedoelt ZOIETS?

Acties:
  • 0 Henk 'm!

  • Boogie
  • Registratie: Januari 2001
  • Laatst online: 06-11-2024
En voor de volledigheid de code er ook maar even bij:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<html>
<head>
    <title> De Database ontleed met PHP: </title>
</head>
<body>
<?php
// verander ALLEEN onderstaande 4 regels voor een andere database;
$host = "localhost";
$user = "";
$pass = "";
$dbase = "";

//connect en selecteer DB;

$databaseconnectie = mysql_pconnect($host, $user, $pass);
    mysql_select_db($dbase, $databaseconnectie);

//Tel tabellen;

$result_handle = mysql_list_tables ($dbase,$databaseconnectie)
    or die ("mysql_list_tables () failed with this error message: '"
    .mysql_error () ."'");

$number_tables = mysql_num_rows ($result_handle);

echo "Database <b>$dbase</b> bevat $number_tables tabel(len):";
echo "<br> per <b>tabel</b> wordt per kolom respectievelijk <i>het type</i>, 
de veldlengte, <b> de_kolomnaam</b> gegeven.<br><br>";

//Noem tabellen;
for ($index=0; $index < $number_tables; ++$index) {
        $tnaam = mysql_result ($result_handle, $index, 0); 
        $query = mysql_list_fields ($dbase, mysql_result ($result_handle, $index, 0))
            or die ("mysql_list_fields () failed with this error message:'"
        .mysql_error() . "'");
//Tel kolommen en aantal regels;
        echo"<table width=\"100%\" border=\"0\">"; 
        $number_fields = mysql_num_fields ($query);
        $test = "SELECT * FROM $tnaam";
        $result = @ mysql_query ($test);
        $aantal = mysql_num_rows($result);
        echo "<tr><td>","Tabel <b>$tnaam</b> bevat 
$number_fields kolom(men), met $aantal regel(s):<br></td></tr>";
        echo" </table><br><table width=\"100\" border=\"2\">";
//Noem types,lengte en kolommen;
        for ($index2=0; $index2 < $number_fields; ++$index2){
                $dtype = mysql_field_type($query, $index2);
                $knaam = mysql_field_name($query, $index2);
                $lengte = mysql_field_len($query, $index2);
                echo "<tr><td><i>$dtype</i></td>";
                echo "<td>$lengte</td>";
                echo "<td><b>$knaam</b></td></tr>";
        } 
    echo"</table><br>";
    }
?>
(c) MvdB
</body>
</html>

[ Voor 39% gewijzigd door Boogie op 24-12-2002 15:04 . Reden: Lay-out verbeterd en script verduidelijkt, helaas ook een bug ge"introduceerd. dus doorom nog eens aangepast. ]


Acties:
  • 0 Henk 'm!

  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Boogie schreef op 24 december 2002 @ 14:40:
En voor de volledigheid de code er ook maar even bij:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<html>
<head>
    <title> De Database ontleed met PHP: </title>
</head>
<body>
<?php
// verander ALLEEN onderstaande 4 regels voor een andere database;
$host = "localhost";
$user = "";
$pass = "";
$dbase = "";

//connect en selecteer DB;

$databaseconnectie = mysql_pconnect($host, $user, $pass);
    mysql_select_db($dbase, $databaseconnectie);

//Tel tabellen;

$result_handle = mysql_list_tables ($dbase,$databaseconnectie)
    or die ("mysql_list_tables () failed with this error message: '"
    .mysql_error () ."'");

$number_tables = mysql_num_rows ($result_handle);

echo "Database <b>$dbase</b> bevat $number_tables tabel(len):";
echo "<br> per <b>tabel</b> wordt per kolom respectievelijk <i>het type</i>, 
de veldlengte, <b> de_kolomnaam</b> gegeven.<br><br>";

//Noem tabellen;
for ($index=0; $index < $number_tables; ++$index) {
        $tnaam = mysql_result ($result_handle, $index, 0); 
        $query = mysql_list_fields ($dbase, mysql_result ($result_handle, $index, 0))
            or die ("mysql_list_fields () failed with this error message:'"
        .mysql_error() . "'");
//Tel kolommen en aantal regels;
        echo"<table width="100%" border="0">"; 
        $number_fields = mysql_num_fields ($query);
        $test = "SELECT * FROM $tnaam";
        $result = @ mysql_query ($test);
        $aantal = mysql_num_rows($result);
        echo "<tr><td>","Tabel <b>$tnaam</b> bevat 
$number_fields kolom(men), met $aantal regel(s):<br></td></tr>";
        echo" </table><br><table width="100" border="2">";
//Noem types,lengte en kolommen;
        for ($index2=0; $index2 < $number_fields; ++$index2){
                $dtype = mysql_field_type($query, $index2);
                $knaam = mysql_field_name($query, $index2);
                $lengte = mysql_field_len($query, $index2);
                echo "<tr><td><i>$dtype</i></td>";
                echo "<td>$lengte</td>";
                echo "<td><b>$knaam</b></td></tr>";
        } 
    echo"</table><br>";
    }
?>
(c) MvdB
</body>
</html>
Ja dat bedoel ik!!!!!!!!!!! _/-\o_ _/-\o_ _/-\o_ _/-\o_
_/-\o_ _/-\o_ _/-\o_ _/-\o_ _/-\o_ _/-\o_ _/-\o_ _/-\o_

Assume there are no rules and it's one big free for all


Acties:
  • 0 Henk 'm!

  • Boogie
  • Registratie: Januari 2001
  • Laatst online: 06-11-2024
Wel de huidige nemen!! die jij gequote hebt, bevat nog wat fouten!!

(de aller eerste was wel goed, maar veel minder mooi)

Graag gedaan. Was precies waar ik tegenaan liep met mijn eerste php project. Toen heb ik dit script gemaakt, en in de loop der tijden verbeterd. Ik post hem hier en daar regelmatig, want ik ben er nog steeds trots op ;)

Acties:
  • 0 Henk 'm!

  • Alpha-sphere
  • Registratie: Januari 2001
  • Laatst online: 14-12-2021
Boogie schreef op 24 december 2002 @ 15:13:
Wel de huidige nemen!! die jij gequote hebt, bevat nog wat fouten!!

(de aller eerste was wel goed, maar veel minder mooi)

Graag gedaan. Was precies waar ik tegenaan liep met mijn eerste php project. Toen heb ik dit script gemaakt, en in de loop der tijden verbeterd. Ik post hem hier en daar regelmatig, want ik ben er nog steeds trots op ;)
Ja ik heb die fouten gemerkt ja maar was niet zo heel erg moeilijk om ze eruit te halen. Het werkt in ieder geval wel mooi. Dat het er niet zo super uitziet maak niet echt uit. Nogmaals bedankt _/-\o_ _/-\o_

Assume there are no rules and it's one big free for all


Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
2
3
4
5
echo "<td>$lengte</td>";
echo "<td>".$lengte."</td>";

// mysql_query() print geen foutmeldingen dus die @ kan weg
$result = @ mysql_query ($test);


Op een paar schoonheids foutjes (^^) is het een mooi scriptje ;).
Pagina: 1