Vraag over arrays

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Klaasjan Boven

Klaasjan Boven

24/08/2010 23:02:32
Quote Anchor link
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
 
PHP hulp

PHP hulp

19/04/2024 11:04:33
 
Nicoow Unknown

Nicoow Unknown

24/08/2010 23:07:31
Quote Anchor link
$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?
 
Ric swave

ric swave

24/08/2010 23:13:21
Quote Anchor link
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!

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
 
- SanThe -

- SanThe -

25/08/2010 00:32:58
Quote Anchor link
Volgens mij kan het ook zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

?>
 
Maestro Roboroads

Maestro Roboroads

25/08/2010 01:39:57
Quote Anchor link
Bedoel je niet zoiets..?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';

}

?>


Met die echo word een lijstje nu weergegeven met alle namen in de tabel (vanwege de while).
Stel, Je tabel is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Naam | beroep
-------------
Ro   | brandweer
Bib  | busschauffeur
Resa | putjesschepper


geeft het dit weer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
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
Gewijzigd op 25/08/2010 01:41:25 door Maestro Roboroads
 
Klaasjan Boven

Klaasjan Boven

26/08/2010 00:45:30
Quote Anchor link
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
 
B a s
Beheerder

B a s

26/08/2010 01:39:31
Quote Anchor link
In de while loop kun je toch gewoon:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
}


?>
Gewijzigd op 26/08/2010 01:41:39 door B a s
 
Jelmer -

Jelmer -

26/08/2010 09:55:09
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($gegevens as $persoon) {
    echo 'Naam: ' . $persoon['naam'];
    echo 'Beroep' . $persoon['beroep'];
}

?>


Wat wil je met deze array gaan doen?
 
Jens V

Jens V

26/08/2010 10:20:04
Quote Anchor link
Ik gebruik altijd het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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
Gewijzigd op 26/08/2010 10:26:35 door Jens V
 
Klaasjan Boven

Klaasjan Boven

28/08/2010 18:38:09
Quote Anchor link
fetch_assoc deed de truc ipv fetch_array (deze leverde nog een extra array er omheen)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.