Beste experts

Ik ben bezig met iets wat simpel zou moeten zijn maar ik krijg het niet voor elkaar.
Ik doe het volgende:

$sql = "select naam, beroep from table";
$res = mysql_query($sql) or trigger_error();
while($gegevens = mysql_fetch_array($res)){

// hier moet wat komen

}

de bedoeling is dat ik een array krijg met daarin de volgende gegevens:
naam=> test beroep=>blaat
naam=> hallo beroep= weet ik niet
enz..

Graag jullie advies
$sql = "select naam, beroep from table";
$res = mysql_query($sql) or trigger_error();
$array = array();
while($gegevens = mysql_fetch_array($res)){

$array[] = array('naam' => $gegevens['naam'], 'beroep'=> $gegevens['beroep']);

}

Bedoel je dat soms?
Hoi Klaas,

Ik neem even aan dat je db connectie ok is. En selectie van een database ook.

Wat ik zou doen:
1. Heb je zelf de query los in PhpMyadmin uitgeprobeerd. 'Table' is dacht ik een gereserveerd keyword. wellicht dat dat problemen oplevert...

2. Error melding gebruik ik zelf zo (weet niet of het een verschil uitmaakt...):

mysql_query("select naam, beroep from table", $link);
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";



Suc6!

[size=xsmall]Toevoeging op 24/08/2010 23:17:33:[/size]

En mocht je wel 1 regel data uit je tabel kunnen ophalen, dan klopt je code wel.
Per keer haal je 1 regel op, net zolang tot je door je resultaten heen bent.


De array zul je (zoals Nico aangeeft in voorbeeld) zelf moeten aanmaken.

gr,

rico
Volgens mij kan het ook zo:
<?php
$sql = "select naam, beroep from table";
$res = mysql_query($sql) or trigger_error();
$array = array();
while($gegevens = mysql_fetch_array($res))
{
$array[] = $gegevens;
}
?>
Bedoel je niet zoiets..?
<?
$sql = "SELECT naam, beroep FROM table";
$res = mysql_query($sql) or trigger_error();
while($gegevens = mysql_fetch_assoc($res)){

// hier kan je wat neerzetten.
// $gegevens['naam'] geeft de naam weer ezv.

echo $gegevens['naam'].'<br>';

}
?>

Met die echo word een lijstje nu weergegeven met alle namen in de tabel (vanwege de while).
Stel, Je tabel is:
Naam | beroep
-------------
Ro   | brandweer
Bib  | busschauffeur
Resa | putjesschepper


geeft het dit weer:
Ro
Bib
Resa


Slordig:
select en from is netter in hoofdletters (SELECT FROM).

Wil je niet alle namen tonen, maar een selectie, Probeer een WHERE erin te zetten, Of een LIMIT ;)

Ik hoop je geholpen te kunnen hebben,
Ro
Ik bedoel dat ik een compleet nieuwe array krijg met daarin alle gegevens die ik heb opgehaald. Deze heb ik later in het script weer nodig namelijk. Ik zie het antwoord nog niet volgens mij
In de while loop kun je toch gewoon:

<?php

while ($row = mysql_fetch_array($res))
{
$naam[$row['id']] = $row['naam'];
$beroep[$row['id']] = $row['beroep'];
}

// terug kijken

foreach ($naam as $key => $value)
{
echo '<p>
<b>ID van record:</b> ' . $key . '<br />
<b>Naam:</b> ' . $naam[$key] . ' of ' . $value . '<br />
<b>Beroep:</b> ' . $beroep[$key] . '</p>';
}

?>
Klaasjan Boven op 26/08/2010 00:45:30

Ik bedoel dat ik een compleet nieuwe array krijg met daarin alle gegevens die ik heb opgehaald. Deze heb ik later in het script weer nodig namelijk. Ik zie het antwoord nog niet volgens mij

Alle oplossingen hierboven (behalve die van Bas) zorgen ervoor dat je $gegevens array alles bevat, dat kan je er gewoon weer heel simpel uithalen via
<?php
foreach($gegevens as $persoon) {
echo 'Naam: ' . $persoon['naam'];
echo 'Beroep' . $persoon['beroep'];
}
?>

Wat wil je met deze array gaan doen?

Ik gebruik altijd het volgende:

<?php
function sql_exec($query)
{
	$results = mysql_query($query) or die (mysql_error());
	return $results;
}

function sql_fetch($query)
{
	$results = sql_exec($query);

	if(mysql_num_rows($results) > 0) // Check if there are results
	{
		$i = -1; // Set start array '-1'

		while($row = mysql_fetch_array($results))
		{
			$i++;
			$fetch[$i] = $row;
			foreach($fetch[$i] as $key => $value)
			{
				$fetch[$i][$key] = stripslashes($value);
			}
		}

		return $fetch;
	}
	else // No results -> Return FALSE
	{
		return FALSE;
	}
}
?>


Een voorbeeldje in gebruik:

<?php
$namen = $DB->fetch("
	SELECT
		naam,
		beroep
	FROM
		table
");

if($namen)
{
	for$i = 0; $i < count($namen); $i++)
	{
		?>
		Naam: <?php echo $namen[$i]['naam']; ?><br />
		Beroep: <?php echo $namen[$i]['beroep']; ?><br /><br />
		<?php
	}
}
?>

Je $namen array ziet er dan zo uit:

Array
(
    [0] => Array
        (
            [0] => 'Jens'
            [naam] => 'Jens'
            [1] => 'Student'
            [beroep] => 'Student'
        )

    [1] => Array
        (
            [0] => 'Joske'
            [naam] => 'Joske'
            [1] => 'Bakker'
            [beroep] => 'Bakker'
        )

    [2] => Array
        (
            [0] => 'Steven'
            [naam] => 'Steven'
            [1] => 'Slager'
            [beroep] => 'Slager'
        )

)


Ik weet niet of je hier iets mee bent, maar ik denk van wel:)
Die array $namen kan je dan blijven gebruiken over heel de pagina.

Met vriendelijke groeten,
Jens
fetch_assoc deed de truc ipv fetch_array (deze leverde nog een extra array er omheen)

Reageren