Gerturnde value van functie geeft maar één row terug

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pim Meijer

Pim Meijer

04/07/2012 15:03:44
Quote Anchor link
Goedemiddag,

Ik ben bezig met een newsfeed voor mijn cms. Nu heb ik een twee functies gemaakt in mijn
functions.php bestand. Deze include ik overal uiteraard. Dit zijn de volgende functies:

function getAllNewsElements(){
global $connection;
$query = "SELECT title, author, date, content
FROM news

";

$result_set = mysql_query($query , $connection);
confirmQuery($result_set);

return $result_set;
}

function printNewsElements(){
global $news;
$result_set = getAllNewsElements();
while($news = mysql_fetch_array($result_set)){
return $news; /* HIER RETURN IK DE ARRAY $news
/*echo "<p>{$news["title"]}</p>";

echo "<p>{$news["author"]}</p>";

echo "<p>{$news["date"]}</p>";

echo "<p>{$news["content"]}</p>";
echo "<br/>";
*/ DIT RETURNED WEL ALLE ROWS
}
}

Het probleem hierbij is dat ik in de functie zelf wel alle rows terug krijg maar als ik de $news array in een ander bestand op deze manier echo:

printNewsElements();
foreach($news as $key){
echo $key;
echo "<br/>"
}

Krijg ik maar één row terug die twee keer wordt weergegeven. Mijn database is niks mis mee dat zou moeten kloppen.

Naar mijn idee komt het omdat de de array $news na dat hij 1x gefetched is al returned. Ik heb echter geen idee hoe dit op te lossen. Hopelijk kan iemand mij adviseren of een oplossing bieden.

Alvast bedankt voor de tijd en moeite,
 
PHP hulp

PHP hulp

24/11/2024 19:37:02
 
Erwin H

Erwin H

04/07/2012 15:09:59
Quote Anchor link
Na een return verdwijnt de scope uit de functie. Je while loop zal dus onherroepelijk stoppen na de eerst fetch en de rest wordt genegeerd.

Om alles op te halen kan je het eerst in een array stoppen en die array (een multidimensionale array dus) returnen na je while loop.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$results
= array();
while($news = mysql_fetch_array($result_set)){
  $results[] = $news;
}

return $results;
?>

Verder graag je code tussen [.code][./code] tags (zonder de puntjes) of tussen php tags zoals je die ook in php scripts gebruikt zodat alles iets makkelijker leesbaar is.
 
- SanThe -

- SanThe -

04/07/2012 15:11:53
Quote Anchor link
Als je in een while() een return zet wordt de while() gestopt. Dus logisch dat er slechts alleen de eerste waarde uitkomt.
 
Pim Meijer

Pim Meijer

04/07/2012 17:34:30
Quote Anchor link
Erwin H op 04/07/2012 15:09:59:
Na een return verdwijnt de scope uit de functie. Je while loop zal dus onherroepelijk stoppen na de eerst fetch en de rest wordt genegeerd.

Om alles op te halen kan je het eerst in een array stoppen en die array (een multidimensionale array dus) returnen na je while loop.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$results
= array();
while($news = mysql_fetch_array($result_set)){
  $results[] = $news;
}

return $results;
?>

Verder graag je code tussen [.code][./code] tags (zonder de puntjes) of tussen php tags zoals je die ook in php scripts gebruikt zodat alles iets makkelijker leesbaar is.


Bedankt voor je antwoord. Het werkt!
Heb je toevallig ook enig idee hoe ik netjes alle elementen van een bericht kan echo en? Ik heb nu dus
een multidimensionale array ge echo ed maar als ik dus bijvoorbeel de 'title' echo krijg ik de twee titels onder elkaar
en ik wil zeg maar per bericht alles gegroepeerd hebben. Dus titel1->content1 en titel2->content2

Alvast bedankt,
 
Jaron T

Jaron T

04/07/2012 17:44:58
Quote Anchor link
Hiervoor zou je implode kunnen gebruiken; http://php.net/implode
 
Pim Meijer

Pim Meijer

04/07/2012 18:00:52
Quote Anchor link
Jaron T op 04/07/2012 17:44:58:
Hiervoor zou je implode kunnen gebruiken; http://php.net/implode


Super! Heel erg bedankt:) Gewenste eindresultaat:
Eerste Mededeling
Pim Meijer
2012-07-04 13:13:21
Dit is de eerste mededeling

Tweede mededeling
Pim Meijer
2012-07-04 13:27:54
Dit is de tweede mededeling
Tweede mededeling
 



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.