Toon posts:

[PHP/MYSQL] Gegevens dynamisch uit database

Pagina: 1
Acties:
  • 51 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Ik ben bezig om een website te maken in php met behulp van mysql. Ik wil een dynamische overzicht maken voor een willekeurige tabel.

Ik heb de volgende code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$tabel = $_GET["tabel"];
$kolomnamen = mysql_query("SHOW COLUMNS FROM $tabel") or die("mysql error");
$numColumns = mysql_num_rows($kolomnamen);
$aantal = 0;
while ($aantal < $numColumns){
   $naam = mysql_fetch_row($kolomnamen);
   $col[$naam[0]] = $naam[0];
   $aantal++;
}
echo("<table class=\"overzicht\">");
while (list($sleutel, $waarde) = each($col)){
    echo ("<th class=\"overzicht\"><b>" . $waarde. "</b></th>");
} 
if ($ulevel == 1){
    echo ("<th class=\"overzicht\"><b>beheer</b></th>");
}

Met dit stukje code kijk ik welke kolomnamen de database heeft en haal die uit een array en zet die in een tabel. Dit werkt perfect echter wil ik nu ook dynamisch de gegevens van de tabel uitlezen.

Dit doe ik als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
$veldnamen = mysql_query("SELECT * FROM $tabel") or die("mysql error");
$aantal = 0;
while ($aantal < $numColumns){
   $naamveld = mysql_fetch_array($veldnamen);
   $veld[$naamveld[0]] = $naamveld[0];
   $aantal++;
}
echo("");
while (list($voor, $achter) = each($veld)){
    echo ("<tr><td>" . $achter. "</td></tr>");
}

Deze code werkt opzich ook wel maar het probleem is dat ik alleen de gegevens van de eerste kolom te zien krijg.

Voorbeeld

Kolom 1 | kolom 2 | kolom 3 | kolom 4
--------------------------------------------------------
bla
bla
bla

Kan iemand mij vertellen hoe ik alle gegevens uit de kolommen kan selecteren en kan plaasten in mijn tabel. Ik heb op internet gezocht maar tot nu toe zonder resultaat.

Verwijderd

Met het volgende stukje code moet je denk ik wel verder kunnen komen.


while ($naamveld = mysql_fetch_array($veldnamen)
{
print "<tr>";
print "<td>".$naamveld[0]."</td>";
print "<td>".$naamveld[1]."</td>";
print "</tr>";
}

Ik hoop je hiermee te hebben geholpen.

[ Voor 1% gewijzigd door Verwijderd op 20-10-2006 12:30 . Reden: een paar " en ; vergeten ]


Verwijderd

Topicstarter
Op dit moment heb ik de code als volgt aangepast
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$veldnamen = mysql_query("SELECT * FROM $tabel") or die("mysql error");
$aantal = 0;
while ($aantal < $numColumns){
   $naamveld = mysql_fetch_row($veldnamen);
    $veld[$naamveld[$v]] = $naamveld[$v];
    echo "<tr>";
    foreach($naamveld as $test => $v) {
        echo "<td>". $v."</td>";
    }
    echo "</tr>";
    $aantal++;
}
?>


Ik krijg nu het volgende:

Kolom 1 | kolom 2 | kolom 3 | kolom 4
--------------------------------------------------------
bla bla2 bla3 bla 4
bla bla2 bla3 bla 4
bla bla2 bla3 bla 4

En dit is zoals ik het wil hebben.

Alleen ik krijg de volgende foutmelding te zien:

Warning: Invalid argument supplied for foreach() in c:\domains\test\cms\includes\overzicht.inc.php on line 8

Wie zou mij kunnen vertellen wat hier fout gaat.

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 23:36

Gonadan

Admin Beeld & Geluid, Harde Waren
Dat zou betekenen dat $naamveld geen array is.
Dus dan moet de mysql_fetch_row een keer gefaald zijn.

Edit:
Goed dat je het regelnummer hebt aangepast aan het codeblok.
Ik zat al te zoeken naar 25 ;)

[ Voor 33% gewijzigd door Gonadan op 20-10-2006 12:38 ]

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

De vragen die je hier stelt kun je allemaal prima zelf oplossen door de documentatie (in dit geval van mysql_fetch_row) te lezen en door simpelweg zelf even te debuggen. Daarover hebben we ook een stukje in onze FAQ staan: Programming FAQ - Debuggen: hoe doe ik dat? Ik stel voor dat je wat meer tijd in onze FAQ en de PHP manual gaat doorbrengen, want het niveau in dit topic is bedroevend laag, iets waar je al vaker op gewezen bent.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.