[PHP] Associatieve array: waarden toevoegen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Ik kom er niet uit, genoeg informatie over normale array's maar nergens hoe ik meer informatie in een associatieve array krijg.

Ik heb een stukje code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$select ="SELECT DISTINCT naam FROM quickforum_lastpost";
$query = mysql_query($select);
        
while ($list = mysql_fetch_object($query)) {

$get_posts = mysql_query ("SELECT * FROM quickforum_lastpost WHERE naam='$list->naam'");
$num_of_posts = mysql_num_rows ($get_posts);

$top[] = array("naam" => "$list->naam", "posts" => "$num_of_posts");

}

print_r($top);


Het idee van deze code is dat hij de unieke gebruikers eruit haalt, hun totaal aantal posts ophaalt en deze in een array zet.
Bij elke nieuwe gebruiker moet er in diezelfde array dus een regel met gebruiker en posts bijkomen.
Nu krijg ik het maar niet voor elkaar om zo'n array te bouwen. Nu krijg ik dat hij elke nieuwe gebruiker in een volledige nieuwe array zet, maar hoe zorg ik dan dat hij in dezelfde array blijft?

Dit werkt bijvoorbeeld ook niet:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$select ="SELECT DISTINCT naam FROM quickforum_lastpost";
$query = mysql_query($select);
        
$top = array();
        
while ($list = mysql_fetch_object($query)) {

$get_posts = mysql_query ("SELECT * FROM quickforum_lastpost WHERE naam='$list->naam'");
$num_of_posts = mysql_num_rows ($get_posts);
                    
$top[] = ("naam" => "$list->naam", "posts" => "$num_of_posts");

}
print_r($top);


Hoe zorg ik ervoor dat er dan meer waarden in kunnen?

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
PHP:
1
2
3
4
5
<?PHP
while($row=mysql_fetch_assoc($result)){
  $top[]=$row;
}
?>

[ Voor 14% gewijzigd door djluc op 10-06-2004 17:07 ]


Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Als ik de functiebeschrijving van die lees kan ik de query er inderdaad wel inzitten, maar mis ik de username. Het gaat erom dat deze juist in een rij staan.

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • Cavalera125
  • Registratie: December 2003
  • Laatst online: 11:15
Wat laat die print_r zien? Zoals ik het nu zie wordt die array toch gewoon $top[0]['naam'] en $top[0]['posts']. Of wil je iets anders?

[ Voor 16% gewijzigd door Cavalera125 op 10-06-2004 18:07 ]


Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10:10

WormLord

Devver

Volgens mij wil je dit:
PHP:
1
2
$top["naam"][] = $list->naam;
$top["posts"][] = $num_of_posts;

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Hoe zou je zelf dan graag willen hoe de array er uit ziet?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$naam_query ="SELECT DISTINCT naam FROM quickforum_lastpost";
$naam_result = mysql_query($naam_query);
        
while ( $naam_rs = mysql_fetch_row($naam_result) ) 
{
    $post_count_query = "SELECT COUNT(id) FROM quickforum_lastpost WHERE naam='" . $naam_rs[0] . "'";
    $post_count_result = mysql_query($post_count_query);
    $post_count_rs = mysql_fetch_row($post_count_result);

    $top[$naam_rs[0]] = $post_count_rs[0];
}

foreach ( $top as $naam => $post_count )
{
    print "Naam: " . $naam . "<br/>Aantal posts: " . $post_count;
}

Is zoeits niet toerijkend genoeg? Wat is het probleem met een nieuwe array per user trouwens?

[ Voor 7% gewijzigd door Michali op 11-06-2004 16:55 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou trouwens ook even overwegen je zoek query aan te passen.
In jouw voorbeeld voer je Aantalgebruikers+1 keer een query uit, en dat is best wel veel te veel..

als je je query aanpast naar:
code:
1
SELECT DISTINCT(naam), Count(*) AS Aantal FROM quickforum_lastpost GROUP BY naam

dan heb je met 1 query het resultaat waar jij talloze queries voor gebruikt

Wellicht dat het dan ook makkelijker is om je array / tabel of wat dan ook op te bouwen
Pagina: 1