Hallo allemaal, ik heb het volgende vraagstuk:

Ik wil graag alle rows en fields uit een tabel in een MySQL database afdraaien, nu weet ik dat ik kan doen:

$query = "SELECT * FROM tabelnaam"
$ophalen = mysql_query($query);
while ($alles = mysql_fetch_array($ophalen)) {

// Maar nu moet ik hier dus voor alle fields echo $alles['fieldname'] invullen, dus in mijn geval zo'n 20 echo's voor elke tabel.

}
Nu had ik bedacht dat ik misschien zoiets kon doen:

$query = "SELECT * FROM tabelnaam"
$ophalen = mysql_query($query);
$alles = mysql_fetch_array($ophalen, MYSQL_BOTH);
for ($r=0; $r < mysql_num_rows($ophalen); $r++) {
for ($g = 0; $g < mysql_num_fields($ophalen); $g++) {
echo $alles[$r][$g];
}
}
Maar dit lijkt niet te werken, terwijl ik dacht dat ik met MYSQL_BOTH ook de velden met een numerieke waarde aan kon roepen.
Toen had ik nog een andere manier bedacht:

$query = "SELECT * FROM tabelnaam"
$ophalen = mysql_query($query);
$alles = mysql_fetch_array($ophalen);
$tt = 0;
$xx = 0;
while ($xx < mysql_num_rows($ophalen)) {
while ($tt < mysql_num_fields($ophalen)) {
$datas = mysql_fetch_field($ophalen, $tt);
$dinges = $datas['name'];
echo $CVLocArray[$dinges['name']];
$tt++;
}
$xx++;
$tt = 0;
}
Hier was echter het probleem dat $datas een object is en niet zomaar een string kan worden naar $dinges.

Misschien heeft één van jullie een slimme oplossing om deze loop uit te voeren, zodat ik dus niet iedere fieldname apart hoef in te voeren en als ik dus een field toevoeg aan mijn db ik mijn code niet aan hoef te passen.
(Ik besef me natuurlijk dat al die echo's geen mooie output geven, maar voor het overzicht heb ik de tabelelementen maar even weggelaten.)

Bij voorbaat dank!
Dit doe je met een foreach()-loop. Alleen raad ik je het gebruik van [php]mysql_fetch_array[/php] wel af - gebruik liever [phpmysql_fetch_assoc[/php].

In jouw voorbeeld zou het dus dit zijn:
<?php
// Query voor het ophalen van de resultaten
$query = "
SELECT
    *
FROM
    tabelnaam
";
$sql = mysql_query($query);
if ($sql === false)
{
	// Query is mislukt - geef een melding
	echo 'Fout met de query...';
}
else
{
	while ($record = mysql_fetch_assoc($sql))
	{
		// Doorloop ieder record dat je terugkrijgt
		foreach ($record as $naam => $waarde)
		{
			// Voor iedere kolomnaam een echo met de naam van de kolomnaam en de waarde ervan
			echo $naam . ': ' . $waarde . '<br />';
		}
	}
}
?>
OK dan, dankje! Ga het proberen.

[size=xsmall]Toevoeging op 02/03/2012 13:08:21:[/size]

Helemaal goed!
Moest alleen een kleine aanpassing maken om fieldname en fieldvalue onder elkaar te krijgen in een variant waar ik maaar 1 row wou laten zien, maar het is helemaal gelukt, wat mij betreft kan het topic gesloten worden.

Reageren