Vraag over arrays
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
$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?
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!
Toevoeging op 24/08/2010 23:17:33:
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
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "select naam, beroep from table";
$res = mysql_query($sql) or trigger_error();
$array = array();
while($gegevens = mysql_fetch_array($res))
{
$array[] = $gegevens;
}
?>
$sql = "select naam, beroep from table";
$res = mysql_query($sql) or trigger_error();
$array = array();
while($gegevens = mysql_fetch_array($res))
{
$array[] = $gegevens;
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?
$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>';
}
?>
$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:
geeft het dit weer:
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
Gewijzigd op 25/08/2010 01:41:25 door Maestro Roboroads
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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>';
}
?>
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>';
}
?>
Gewijzigd op 26/08/2010 01:41:39 door B a s
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
Code (php)
Wat wil je met deze array gaan doen?
Code (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
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
<?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;
}
}
?>
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:
Code (php)
Je $namen array ziet er dan zo uit:
Code (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
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
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'
)
)
(
[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
Gewijzigd op 26/08/2010 10:26:35 door Jens V
fetch_assoc deed de truc ipv fetch_array (deze leverde nog een extra array er omheen)