Array opsplitsen voor tabel

Status
Niet open voor verdere reacties.

Pcrrules

Gebruiker
Lid geworden
2 sep 2004
Berichten
10
Ik heb een pagina waar alle bestanden worden uitgelezen uit een bepaalde map. Het zijn allemaal jpgs en de namen zijn 001 t/m 080 (en meer). Ik lees al die bestanden uit stop ze in een array en zet ze vervolgens netjes in een tabel.

Het probleem wat ik nu heb is dat ik maar een bepaald aantal foto's in die tabel wil hebben. Dus bijv. maximaal 5 rijen die 5 kolomen hebben (dus max 25 foto's per keer). En dan met volgende en vorige naar de volgende 25 gaan. Bij SQL kon je dat makkelijk doen met:

Code:
LIMIT " . $aantal . ", 25"


Hier gaf je dan $aantal mee in de url en ga hij netjes in partjes de gegevens weer. Maar hoe doe ik dat met een array? Ik dacht aan de functie array_chunk, maar dat is het toch niet volgens mij.

ik hoop dat jullie begrijpen wat ik bedoel. Dit is wat ik nu heb:

PHP:
<?PHP 
include("connect.php"); 
//alle bestanden uitlezen en in een array zetten		
$documents_dir = 'klucht/groot/'; 
	if ($handle = opendir($documents_dir)) 
	 { 
	  $q=0; 
	  while (false!==($file = readdir($handle))) 
	   { 
		if ($file != "." && $file != ".." && $file !="WS_FTP.LOG" && $file !="configuration.php" && $file !="index.php" && $file !="thumbnails" && $file !="hitcounters" && $file !="textfiles" && $file !="ratings" && $file !="backup") 
		 { 
		  $file_arr[$q] = $file; 
		  $q++; 
		} 
	   } 
		  closedir($handle); 
	 } 
	  array_multisort ($file_arr, SORT_DESC);
	  $aantalwaardes = array_count_values($file_arr);

//functie voor weergegeven foto
function foto($nummer) {
$nummer = substr($nummer,0,3);
echo '<a href="klucht.php?kluchtid='.$nummer.'&action=reageer"><img src="klucht/klein/'.$nummer.'.jpg" border="0"></a>';
}

//in de tabel zetten
$i = 1;
foreach ($file_arr as $nummer)
{
	if ($i == 1)
	{
	echo'<tr>';
	}
	echo'<td>';
	foto($nummer);
	echo'<BR></td>';
	if ($i == 5)
	{
		echo'</tr>';
		$i=0;
	}
	$i++;
}

?>
 
Ik weet niet helemaal zeker of je het zo bedoelt, maar ik denk dat dit werkt. Het onderste gedeelte moet je vervangen door de volgende code:

PHP:
//in de tabel zetten 
$aantal = 25;
$i = 1; 
$j = 1;
foreach ($file_arr as $nummer) 
{ 
    if($j > $aantal)
    {
         break;
    }
    if ($i == 1) 
    { 
    echo'<tr>'; 
    } 
    echo'<td>'; 
    foto($nummer); 
    echo'<BR></td>'; 
    if ($i == 5) 
    { 
        echo'</tr>'; 
        $i=0; 
    } 
    $i++; 
    $j++;
}
Ik heb het niet getest, dus ik weet niet voor 100% zeker of het goed werkt. Ik denk van wel.
 
klopt, dit doet wat ik wil, maar hoe kan ik nu naar de volgende 25? Ik moet namelijk ook naar de vorige en volgende 25 kunnen gaan. De code die daar achter zit kan ik zelf wel maken, maar ik moet dan wel weten hoe ik in de code die jij gemaakt heb naar de volgende 25 kan, dus eigenlijk van 0 t/m 25 van 26 t/m 50 51 t/m 75 etc.
 
Oké, ik snap je. Dan moet het zo:

PHP:
//in de tabel zetten 
$page = 0;
$aantal = 25;
$file_arr = array_slice($file_arr, $page, $aantal);
$i = 1; 
foreach ($file_arr as $nummer) 
{ 
    if ($i == 1) 
    { 
    echo'<tr>'; 
    } 
    echo'<td>'; 
    foto($nummer); 
    echo'<BR></td>'; 
    if ($i == 5) 
    { 
        echo'</tr>'; 
        $i=0; 
    } 
    $i++; 
}
 
damn al had ik geweten dat de functie array_slice doet wat ik wilde, had ik niet zoveel moeite hoeven doen. Ik zat allemaal te klooien met array_chunk. Dit is hem ja. bedankt voor je hulp, de rest kan ik zelf wel afmaken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan