IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

ranger des "vignettes" en ordre de n°


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut ranger des "vignettes" en ordre de n°
    Bonjour,

    Je voudrais faire un truc assez "space". J'aimerais avoir vos idées et suggestions.
    J'ai une page web assez "basique", sur la droite de cette page WEB je voudrais construire une zone ou des "vignettes" se rangeraient l'une en dessous de l'autre par ordre de numéro.

    Je m'explique. Dans la structure de mon site j'ai un dossier qui s'appel "IDIMDAT" dans ce dossier il y a des "vignettes" qui sont en fait des images jpg. Ces vignettes ont toutes le même format. Par contre elle portent des numéros allant de 001 à 444.

    Je voudrais donc créer une zone sur la partie droite de ma page et que dans cette zone les jpg s'affichent l'un en dessous de l'autre avec le chiffre le plus haut au dessus et le plus bas tout en bas. Quand je dis que les jpg s'affichent je parle de l'image, pas du nom du fichier de l'image.

    Quelqu'un à une idée, un début de piste, un tuto, un bout de code, quelque chose quoi :-)

    Merci.

    A peluches.

  2. #2
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )
    Développeur informatique contrarié...

  3. #3
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut
    Oui mais (je me trompe peut être) avec ça je vais afficher les noms de fichier non ?
    Moi ce que je veux faire c'est afficher le contenu des fichiers (l'image).

  4. #4
    Nouveau membre du Club

    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Points : 39
    Points
    39
    Par défaut
    Salut,

    Tu récupères tous les noms de fichiers, que tu assembles dans le tableau $array

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
         foreach($array as $value)
         {
              echo '<img src="'.$value.'" /><br />';
         }
    ?>
    Ce code permet d'afficher chaque image, les unes au dessus des autres.

    A+

  5. #5
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut
    Merci pour ces infos mais j'arrive à rien.
    J'ai tout le temps des messages du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ( ! ) Notice: Undefined variable: array in C:\wamp\www\PHP\index.php on line 15 
    Call Stack 
    # Time Memory Function Location 
    1 0.0002 243368 {main}( ) ..\index.php:0 
     
    ( ! ) Warning: Invalid argument supplied for foreach() in C:\wamp\www\PHP\index.php on line 15 
    Call Stack 
    # Time Memory Function Location 
    1 0.0002 243368 {main}( ) ..\index.php:0
    Il faut dire que je ne comprends pas tout mais bon tout de même la je suis dessus depuis des jours et je pète un peu un cable !

  6. #6
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    Il faudrait que tu postes du code pour que l'on puisse t'aider...

  7. #7
    Nouveau membre du Club

    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Points : 39
    Points
    39
    Par défaut
    Salut,

    Effectivement sans le code associé je ne peux pas t'aider... Tu as surement un problème dans la récupération des données en tableau, c'est pourquoi foreach ne marche pas.
    Quand tu postera le code, précise la ligne qui génère l'erreur!

    A+

  8. #8
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut
    Ben en fait là ou j'en suis je n'ai pas grd chose à vous montrer.
    Vu que j'expérimente je n'ai pas fait dans le joli, j'ai juste créé une bête page HTML et dans le body j'ai copié le code.
    Après j'ai essayé de placer les images à des endroits différents (à la racine, dans le même folder, dans un dossier spécifique).
    Puis j'ai commencé à essayer de modifier le code et finalement je n'avais plus devant moi qu'un gros tas de merde
    J'ai donc tout viré et recopié le code vraiment de la manière la plus basique possible cad :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test 23</title>
    </head>
     
    <body>
    <?php
         foreach($array as $value)
     
              echo '<img src="'.$value.'" /><br />';
     
    ?>
    </body>
    </html>
    Vu que je suis vraiment débutant j'ai essayé de trouver des infos sur ce code mais c'est là que je déprime un peu en voyant ou sont mes limites

    Je CROIS que le problème vient du fait qu'il essaye de mettre dans le tableau le fichier index.html qui n'est pas fait pour. Du coup je pourrais créer un répertoire "a part" avec juste les images (ce serait d'ailleurs le mieux) mais ça je n'y suis pas arrivé en bidouillant le code.

    Donc voila ou j'en suis : Je suis un navet !!!!!!!!!!!!!

    Alors si parmi vous il y a une bonne âme qui pourrait m'aider ? Ce n'est pas tant avoir un truc qui marche qui m'intéresse mais plutôt comprendre comment ça marche histoire que demain je puisse me lever en me sentant un peu moins con :-)

    Merci.

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Avant de faire du vélo on apprend

    http://sylvie-vauthier.developpez.co...rand-debutant/ (étape 2 et 4 dans ton cas)

    Dans ton code tu fais une boucle sur $array. Sauf que nul part tu initialise $array
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Nouveau membre du Club

    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Points : 39
    Points
    39
    Par défaut
    Salut,

    Je ne suis pas souvent d'accord avec les réponses qui se font ici, mais le forum à l'avantage d'être de qualité. Je trouve souvent ce que je cherche, c'est pourquoi j'y viens...
    Grunk, je ne suis pas d'accord avec ton exemple. Pour faire du vélo, ca ne sert à rien de lire des livres dessus. J'ai appris le PHP en lisant la page sur les variables et basta. Le reste, je l'ai acquis par la pratique, comme puce_84 est en train de le faire. Ce dont il a besoin, c'est de conseils, d'exemples de code concrets, et non d'une longue dissertation sur le PHP. Il a largement les compétences en PHP pour répondre à ses besoins. Soit dit en passant, le lien que lui tu donnes ne parle aucunement des fonctions d'ouverture de dossier comme opendir et cie...

    Bref. Puce_84, tu travailles sur un tableau que tu n'as pas alimenté. La fonction foreach ne lit pas du tout le contenu d'un dossier mais permet de lister toutes les données que contient un tableau. Par exemple, si tu as un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $a = array(1,2,3,4,5);
    La fonction foreach:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($a as $value)
    {
    	echo $value;	
    }
    séléctionne la première valeur du tableau, la stocke dans $value, et l'affiche, en recommançant pour toutes les valeurs du tableau. Ici, elle affichera: 12345. Elle revient en fait à faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for($i = 0; $i < count($a); $i++)
    {
    	echo $a[$i];
    }
    Dans ton cas, il faut d'abord récupérer tous les fichiers du dossiers, et ensuite les afficher. Il te manque uniquement la partie récupération des noms de fichiers, que je te donne. A toi de l'essayer et de regarder comment marchent les fonctions que j'utilise !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    	$dossier = 'mondossier'; // Le nom du dossier où sont stockées uniquement les images. Pour mettre autre chose que des images, il faudrait rajouter un filtre qui prendrait uniquement les fichiers .png ou .jpg
    	$dir = opendir($dossier); 
     
    	while($file = readdir($dir)) {
    		if($file != '.' && $file != '..' && !is_dir($dirname.$file))
    		{
    			echo '<img src="'.$dirname.$file.'" /><br />';
    		}
    	}
     
    	closedir($dir);
    ?>
    Si tu as des quiestions n'hésite pas !

    A++

  11. #11
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut
    Merci ndmsp.
    Certain peuvent probablement apprendre en avalant des pages et des pages de livres aussi emmerdants qu'hermétiques, moi j'ai besoin d'exemples.
    Heureusement d'ailleurs que je ne sois pas le seul car sinon ce forum n'existerait pas et nous serions tous avec le nez dans des bouquins.
    Bref !
    Je vais essayer ton code et faire quelques modifs pour voir comment ça marche. En tous cas c'est déjà bcp plus clair.
    Je te remercie donc non seulement pour ce code mais aussi pour la manière très pédagogique dont il est présenté. Ce n'est pas donné à tout le monde.
    Voila comment je vais pouvoir évoluer et qui sait peut être un jour j'atteindrai le niveau pour poser une question qui méritera que grunk y réponde.

    Je te tiendrai au courant de mes "expériences".

    Encore merci.

  12. #12
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut
    Me revoilà !
    J'ai assez vite compris ton code et je crois que tu avais glissé une petite erreur didactique dedans non ?

    Je l'ai bien sur exécuté tel quel pour voir ce que ça donnait mais il m'affichait 7 petites croix au lieu de mes 7 images.
    J'ai alors fait "afficher la source" et j'ai vu que les noms de fichiers étaient mauvais.
    J'ai alors corrigé et c'est apparu nikel.
    Pour être sur que j'ai bien compris je te recopie ici le code final documenté.
    Dis moi STP si j'ai bien compris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <body>
    <?php
    	$dossier = 'jdwdates';     --> on donne le nom du dossier ou sont les images
    	$dir = opendir($dossier);   --> On ouvre le dossier en question
     
    	while($file = readdir($dir)) { --> On crée une boucle qui lit tout ce qu il y a dans le dossier jusqu à ce qu il n y ai plus rien
     
    		if($file != '.' && $file != '..' && !is_dir($dirname.$file))  --> On filtre pour que . et .. ne soient pas pris en compte (normal c est pas des images).    La syntaxe est encore un peu nébuleuse mais bon j ai compris la fonction.
    		{
    			echo '<img src="'.$dossier.'/'.$file.'" /><br />';   -->   C est la que j ai corrigé et c est là qu on affiche l image sur base de son chemin et de son nom (dossier/nom) et puis on va à la ligne.
    		}
    	}
     
    	closedir($dir);   --> On ferme le dossier quand tout est lu.
    ?>
    </body>
    Par contre je ne pige pas comment le "programme" choisit l'ordre parce qu'il ne m'affiche pas les images dans leur ordre "nominatif" il me donne 10,11,1,2,12,3,4 au lieu de 1,2,3,4,10,11,12. Ce n'est pas non plus l'ordre de création du fichier. Il fait comment il les prends à pouf ?
    Et puis surtout pour les remettre en ordre il faut faire un sort de l'array mais ici il est ou ? Il y en à pas vu qu'on fait tout de suite l'affichage non ? Donc est ce qu'il faut faire un aray, mettre dedans tous les nom, trier puis relire le array et afficher ou il y a plus simple ?

    Pour le moment j'ai fait ça mais ça ne marche pas et en plus je trouve ça brouillon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    	$dossier = 'jdwdates'; 
    	$dir = opendir($dossier); 
    	while($file = readdir($dir)) {
    		if($file != '.' && $file != '..' && !is_dir($dirname.$file))
    		{
    			$nom = array();
    			$nom[] = $dossier.'/'.$file;
    		}
    	}
     
    	closedir($dir);
    	sort ($nom);
    	foreach ($nom as $fichier) {
      	echo $fichier. '<br />';
    	//echo '<img src="'.$fichier.'" /><br />';
    }
     
     
    ?>
    Dasn mon dossier il y a 7 fichiers qui portent des n° (1,2,3,4,10,11,12), normalement ce que je voulais faire c'est créer un tableau ou tous ces noms sont stockés puis on ferme le dossier, on trie le tableau et on relie le tableau avec la boucle foreach puis on affiche les noms des fichiers (pour le test).

    Et la je pige pas pourquoi il ne me sort que le 4.jpg ???!!!???

  13. #13
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut
    Enfin quand je dis que je pige pas... Je comprends bien que ce qui ne va pas c'est quand je met les données dans le tableau, pas quand je les lis.
    C'est un peu comme si chaque nouvelle donnée dans mon tableau écrasait la précédente au lieu de rajouter une ligne dans le tableau.

  14. #14
    Nouveau membre du Club

    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Points : 39
    Points
    39
    Par défaut
    Salut,

    Effectivement, ici, il faut que tu construises un tableau pour ensuite l'afficher. Ici, je te conseille effectivement de lire un article sur les tableaux en PHP, c'est plutôt important.
    Voici le code que je te propose pour ce que tu veux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?php
    	$dossier = '/';
    	$dir = opendir($dossier);
    	$array = array();
     
    	while($file = readdir($dir)) {
     
    		if($file != '.' && $file != '..' && !is_dir($dossier.$file))
    		{
    			$array[] = $file; // On ajoute chaque nom de fichier que contient le dossier dans le tableau $array
     
    		}
    	}
    	closedir($dir);
     
    	// Maintenant, on le trie par nom
    	array_multisort($array, SORT_ASC, SORT_STRING, $array);
     
    	// Puis on l'affiche un par un !
    	foreach($array as $value)
    	{
    		echo '<img src="'.$dossier.'/'.$value.'" /><br />';
    	}
     
    ?>
    Désolé pour l'erreur, tu as très bien rectifié !

    A++

  15. #15
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut
    Bon ne fait je suis un gros navet !
    J'avais mis la déclaration du tableau dans la boucle alors évidemment il fallait pas compter qu'il se remplisse...

    Bon finalement voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test 23</title>
    </head>
     
    <body>
    <?php
    	$nom = array (); // On déclare le tableau AVANT la boucle
    	$dossier = 'jdwdates'; // On défini dans quel dossier on va
    	$dir = opendir($dossier); //On ouvre le dossier en question
    	while($file = readdir($dir)) { // on fait une boucle pour lire ce qu'il y a dedans
    		if($file != '.' && $file != '..' && !is_dir($dirname.$file)) // on exlcu . et ..
    		{
    			$nom[] = $dossier.'/'.$file; // on ajoute dans le tableau chaque nom de fichier
    					}
    	}
     
    	closedir($dir); // on ferme le dossier
     
    	sort ($nom); // on trie le tableau qu'on vient de construire
    	foreach ($nom as $fichier) { // on fait la boucle qui va lire le tableau 
     
    	echo '<img src="'.$fichier.'" /><br />';  // on affiche les images relatives au noms de fichier  que le tableau contient
    }
     
     
    ?>
    </body>
    </html>

  16. #16
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut
    Un SUPER MERCI A TOUS CEUX QUI M'ONT AIDE

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo