Beste leden,

Hoe is het mogelijk om vanuit een array het laatste item op te halen? Ik weet dat je hier normaal end voor gebruikt, maar het lukt mij niet om een fetch_assoc uit te lezen.

Ik heb een query (met 5 resultaten)
hier doe ik het volgende mee:
<?php
$sql = "SELECT foto_id,bron FROM foto WHERE groep = 'Portret' ORDER BY foto_id ASC";
if(!($res = mysql_query($sql))){	 
/* error jaja */ 
} // einde if
else {
$max = mysql_num_rows($res);
for ( $i = 1; $i <= ($max -1) ; $i ++ ){
	  
$link = mysql_fetch_assoc($res);
						
$item = array($link['foto_id']);
					    
echo "\"" . $link['foto_id'] . "\",\n";
}
//echo "\"" .  $link2['bron'][count($link2['bron'])-1] . "\"" ;
$item2 = array($link['foto_id']);
echo "\"" . end($item2) . "\"";
echo $max;
} // einde else
?>

Het resultaat dat ik krijg is dus niet goed..

het is nu (bij wijze van spreken)
1
2
3
4
4

5 komt nergens terug. Wat ik dus wil hebben is een for loop waar alles geloopt wordt tot de laatste. De laatste moet een andere syntax mee krijgen omdat er geen komma op het einde moet.

Iemand enig idee?

groet,
Merijn
Je doet kleiner of gelijk terwijl het kleiner dan moet zijn. Want num_rows geeft bijvoorbeeld 3 als je in je array[0. 1, 2] hebt, dus niet 3.
Klopt, maar het gaat hier niet om de array van de num rows
ik moet juist het laatste record ophalen.

Maar wat stel jij voor dat er moet gebeuren? Zie de oplossing namelijk echt niet ..
Wat wil je nu precies? Alleen de laatste? Gebruik dan LIMIT in de query.
Nee het gaat om de laatste item uit de array van de fetch_assoc. Er moet een lijst komen met links ( bron in db) en deze moeten worden gescheiden door een komma. Alleen het laatste item mag geen komma hebben, omdat de JS anders niet verder kan.

dus:

link,
link,
link,
link,
link <---- Deze uit m`n mysql_fetch_assoc in de for lus
<?php
$sql = "SELECT foto_id,bron FROM foto WHERE groep = 'Portret' ORDER BY foto_id ASC";
if(!($res = mysql_query($sql)))
{
/* error jaja */
} // einde if
else
{
$max = mysql_num_rows($res);
if($max > 0)
{
for ( $i = 1; $i < $max; $i ++ )
{
$link = mysql_fetch_assoc($res);
echo '"' . $link['foto_id'] . '",' . "\n";
}
$link = mysql_fetch_assoc($res);
echo '"' . $link['foto_id'] . '"' . "\n";
}
echo $max;
} // einde else
?>
simpelweg implode gebruiken? (als je eerst alle foto id's in een array gezet hebt)
Ga het nu zo even testen. Ik geloof wel dat dit het geen is wat ik zoek. Maar die echo $link buiten de for lus, wordt dat niet een aray? Of gewoon het meest recente item?

nja. even testen hoor. Alvast bedankt ;)

edit: Ja het is opgelost! Dit was makkelijker dan ik had verwacht.... Bedankt Santhe.
Graag gedaan. ;-)

Je was inderdaad wat gecompliceerd aan het denken. Maar je echte fout zat in het feit dat je het laatste record niet ophaalde. Vandaar de dubbele 4 en geen 5.

Reageren