Tableau pour afficher des miniatures

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tableau pour afficher des miniatures

par Zurg » 14 nov. 2006, 20:04

Excuse-moi, j'ai les yeux qui partent en vrille !!

je ne voiyais pas ce que j'avais sorti de la boucle que tu m'as montrée, la variable $nom_tof était initialisée plus haut comme suit :
$nom_tof = $tab[$i];
Mais pas au bon endroit...

Mille merci de ta patience !!

Un pti résolu et une bonne soirée à tous !! :D

par Ajoloca » 14 nov. 2006, 19:13

Re,
Comme tu le vois ta variable '$nom_tof' n'est JAMAIS modifiée.

Que tu changes tes nom de variables, je veux bien mais conserve la structure du code.
Si une variable est dans une boucle, garde la dans la boucle.

par Zurg » 14 nov. 2006, 19:03

Bon, alors là, je l'ai mis un peu à ma sauce, de cette manière :
$nb_col = 5; // Nombre de photos par ligne
$total_img = count($tab); // Nombre total d'images
$nom_tof = $tab[$i]; //nom de l'image
$nom_tof2 = substr($nom_tof,0,-4); //nom de l'image sans extension

echo '<table><tr>';
for($i = 0; $i < $total_img; $i++)
	{
    if($i % $nb_col == 0 && $i != 0)
		{
        echo '</tr><tr>';
        }
 	 // afficher l'image, à toi de voir les autres params
	$aff = "<td><img src=\"".$rep2."/".$nom_tof."\" ></td>";
	echo $aff;
    }
 // Fermeture de la ligne et  de la table
echo '</tr></table>'; 
Mais j'ai comme affichage 49 fois la même image (mon tableau comporte 44 images)... où cela pèche-t-il ?

par Ajoloca » 14 nov. 2006, 18:49

Re,
Regarde bien la difference entre le code que j'ai fait (avec modulo) et le tien.

Comme tu vois tu n'affiches l'image que si la condition est vraie, donc une image sur $nb_col

par Zurg » 14 nov. 2006, 18:42

Re pareil !

Bon, alors j'ai un peu avancé, je viens de voir ton code, merci beaucoup.

Avant de le reprendre, voici ce que j'ai à peu près réussi à faire :
<?for ($i = 0; $i < count($tab); $i++) {
    // valeur à afficher
    $nom_tof = $tab[$i];
	$nom_tof2 = substr($nom_tof,0,-4);
    if (($i % $nb_col) == 0)
        {
		echo '';
		$aff = "<a href=\"".$rep."/".$nom_tof."\"><img src=\"".$rep2."/".$nom_tof."\" >".$nom_tof2."</a>";
    	echo $aff;
		}
    if (($i % $nb_col) == ($nb_col - 1))
        echo '';
}
?>
Le problème c'est que ça m'affiche bien qq images, mais pas toutes, vois-tu d'où ça vient ?

Merci encore !
:D

par Ajoloca » 14 nov. 2006, 18:34

Re,
Une version sans 'modulo' et le strict nécessaire en HTML
<?php
	$photos_ligne = 3; // Nombre de photos par ligne
	$total_img = count($tab); // Nombre total d'images
	// Creation de la table
	echo '<table>';
	for($i = 0; $i < $total_img; $i++){
		// debut de ligne
		echo '<tr>';
		for($j = 0; $j < $photos_ligne; $j++){
			// afficher l'image, à toi de voir les autres params
			echo '<td><img src="' . $tab[$i + $j] '" /></td>';
		}
		// Fermeture de la ligne
		echo '</tr>';
	}
	// Fermeture de la table
	echo '</table>'; 
?>
Et une avec 'modulo'
<?php
	$photos_ligne = 3; // Nombre de photos par ligne
	$total_img = count($tab); // Nombre total d'images
	// Creation de la table
	echo '<table><tr>';
	for($i = 0; $i < $total_img; $i++){
		if($i % $photos_ligne == 0 && $i != 0){
			echo '</tr><tr>';
		}
		// afficher l'image, à toi de voir les autres params
		echo '<td><img src="' . $tab[$i] '" /></td>';
	}
	// Fermeture de la ligne et  de la table
	echo '</tr></table>'; 
?>

par Zurg » 14 nov. 2006, 18:03

Merci beaucoup !

ça marche !

Je peux afficher le tableau correctement, donc je dois pouvoir m'en servir pour afficher des images dans un tableau sur un nombre de colonnes choisies.

Comment puis-je me servir de ce fameux modulo ?

J'ai fait un truc comme ça :
for ($i = 0; $i < count($tab); $i++) {
	if (($i % $nb_col) == 0)
		{
		echo $tab[$i];
		$i++;
		}
	else
		{
		echo "marche pas";
		}
	}
Mais évidemment ça ne marche pas... enfin j'ai vu qq exemples en faisant la recherche, mais j'ai du mal à cerner le pb...

par Ajoloca » 14 nov. 2006, 09:55

Bonjour,

Si je comprends bien ce que tu veux faire, c'est de remplir un tableau avec le nom des fichiers images d'un répertoire.

Tu as un souci dans la construction de ton tableau(tu fais une concaténation au lieu d'ajouter un poste)

Essaie ceci
<?php 
$rep = "/photos";
$tab = array ();
if($handle = opendir($rep)){
	while($file = readdir($handle)){
		if($file != "." && $file != ".."){
			if (strtoupper(substr($file, -3)) == "JPG"){
				// Ajout d'un poste en fin de tableau
				array_push($tab, $file);
			}
		}
	}
}
else{
	exit('Impossible d\'ouvrir le r&eacutepertoire ' . $rep);
}
// Pour afficher le résultat
$tab_len = count($tab);
for($i = 0; $i < $tab_len; $i++) echo $tab[$i];
?>
EDIT :
la condition
if($file != "." && $file != "..")
n'est pas nécessaire vu que ça ne remplit pas la condition
if (strtoupper(substr($file, -3)) 

par Hermès » 14 nov. 2006, 09:14

Essaye de faire :
echo "<pre>"; print_r($tab); echo "</pre>";
Habituellement, ça aide beaucoup pour savoir ce qui va de travers.

par Zurg » 14 nov. 2006, 04:10

ben pas tout à fait, j'obtiens une liste qui compte 44 entrées, ce à quoi je m'attendais, mais lorsque je fais un echo, il m'écrit array en premier...

par Cyrano » 13 nov. 2006, 23:45

Ça, il n'y a que toi qui le sait : est-ce que ça te retourne le résultat attendu ?

par Zurg » 13 nov. 2006, 23:18

Oui, merci, c'est déjà ça...

je pense que comme ça, c'est mieux non ?
<?php 
$rep = "/photos";
$rep2 = opendir($rep);
$i = 0;

$tofs = "";

$tab = array ();
	
while($file = readdir($rep2))
	{
	if($file != "." && $file != "..")
		{
		if (substr($file, -3) == "JPG")
			{
			$tofs[$i] = $file." ";
			$tab[] = $tab.$tofs[$i];
			$i++;
			}
		}
	}
?>

par Cyrano » 13 nov. 2006, 23:06

Alors un tuto basique sur les tableaux peut-être :?:

par Zurg » 13 nov. 2006, 23:04

Salut Cyrano !

Oui, j'y pensais déjà, mais je ne sais pas trop comment l'utiliser dans mon
cas...

Et puis je viens de me rendre compte que mon tableau ne marchait pas, je ne dois pas le remplir correctement, vois tu pourquoi ?

Merci

par Cyrano » 13 nov. 2006, 23:02

Tu devrais lancer une petite recherche dans le forum avec le mot clé "modulo", tu vas trouver pas mal de choses intéressantes qui vont répondre à ton problème.