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 :

Remplacer dynamiquement un nom d'image [PHP 5.1]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut Remplacer dynamiquement un nom d'image
    Bonjour,

    J'ai développé une petite boutique en ligne de produits en utilisant PHP et MySQL. Dans cette boutique, j'ai un back-office me permettant d'ajouter des produits et leurs photos. Je stocke les photos dans un unique dossier et pour éviter les doublons je renommais chaque image envoyée par un nom unique (basé sur uniqid()). Tout fonctionne bien jusque là. Mais mes images ne ressortent pas avec une recherche par Google image car elles ont un nom qui ne veut rien dire. Dans ma base de données, j'ai conservé (à toute fin utile) le nom original de la photo que je charge (qui est bien souvent le nom du produit). Je me demande donc si je n'ai pas un moyen avec PHP de renommer à la volée l'image que je charge dans ma fiche produit... Mais je ne vois pas comment faire ça... Une idée ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux utiliser l'attribut HTML "alt", il est pris en compte par Google image.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Je l'utilise déjà et mes images sortent dans google image mais il semble qu'avec le nom, elles sortent mieux (c'était en tout cas le cas sur l'ancienne version du site qui était moins dynamique et qui avait bien le nom du produit dans l'image).
    De plus, d'un point de vue perso, je me rends compte que ça ne m'arrange pas non plus. En effet, je fais aprfois modifier les images des produits par des personnes qui travaillent avec moi. Et quand je leur dis de modifier l'image de tel produit, elles commencent par chercher le produit sur le site puis voir quel nom j'ai donné à l'image afin de la retrouver sur le disque dur et de la modifier. Mais du coup, comme le nom n'est pas le bon, ces personnes ont des difficultés à trouver les images (moi-même j'avoue que parfois j'ai du mal à me souvenir quel nom "pertinent" j'ai donné à mon image ).

    Je ne vois pas comment faire ça avec PHP... Peut-être n'est-ce pas possible ? En fait en réfléchissant il me fauda un système d'url-rewriting dynamique ou un truc comme ça...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourquoi tu ne redonnes alors pas simplement à chaque image son nom convivial ?
    Je ne vois plus bien l'interêt d'utiliser un nom aléatoire si tu dois à chaque étape le retraduire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Mon organisation interne est différente de celle du site Internet. Il est tout à fait possible, voir probable que j'ai des noms identiques pour plusieurs produits similaires mais dans des catégories différentes. Le renommage est donc nécessaire sinon j'écrase mes photos. (Ceci n'est pas un problème dans l'autre sens car quand je cherche une photo en partant d'un produit je sais dans quelle catégorie il se trouve, donc où trouver le bon fichier qui possède le bon nom.

    Tu vas me répondre que je n'ai qu'à faire une organisation sous forme de dossiers un peu identique à celle de mon disque dur local... Mais ça m'arrange pas du tout pour d'autres raisons (des tâches automatiques notamment et d'autres projets pour plus tard... sans compter toute une partie de mon code, voir toute une logique de programmation à revoir). Je souhaite vraiment trouver une solution de renommage à la volée... sauf si il n'y en a aucune...

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Et pourquoi ne pas nommer les images en gardant le nom du produit suivi d'un numéro (dernier numéro utilisé + 1) ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Pour les mêmes raisons que mon deuxième paragraphe dans le message juste au-dessus.

    ça m'arrange pas du tout pour d'autres raisons (des tâches automatiques notamment et d'autres projets pour plus tard... sans compter toute une partie de mon code, voir toute une logique de programmation à revoir). Je souhaite vraiment trouver une solution de renommage à la volée... sauf si il n'y en a aucune...
    En fait les solutions intermédiaires, il en existe pas mal... mais elles me font revoir énormément de choses qui découle de mon choix de base. Certes il était sans doute pas assez réfléchi à la base mais c'est pas facile de revenir en arrière. Un genre de patch à appliquer serait plus simple à la fois pour ce qui est déjà développé et à la fois pour mes projets. Mais si c'est la seule solution, je le ferais bien sûr.

    Entre temps, j'ai trouvé ce site :
    http://www.urlrewriting.fr/tutoriel-...ur-rewrite.htm

    Pensez-vous que je pourrais adapter ce script à mes images ? Est-ce qu'une balise <img src="image_qui_n_existe_pas.jpg"> appelle une erreur 404 ?

    Ou alors ça m'a donné une autre idée. Une règle dans htaccess du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule /images/(.+)\.jpg$ /image.php?img=$1 [PT]
    et bien sûr mon fichier image.php charge l'image dynamiquement...

    Je me demande si un truc dans ce genre là pourrait fonctionner...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Je viens de tester une de mes 2 idées. A savoir passer par une 404 personnalisée qui va rechercher mon image dynamique et l'afficher avec readfile();

    Ce que je me demande, c'est si google va être 'trompé' ou si pour lui ça sera bien une image manquante et donc une 404 (et donc pas de référencement...).

    J'explique ma technique plus en détail.

    Mon image dynamique s'appelle abcdefgh_10.jpg et se trouve dans le dossier image_dynamique. Dans la base de données, j'ai son vrai nom d'origine qui est produit-test.jpg
    Je charge donc l'image comme ceci :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="img/produit-test.jpg" alt="produit test" />
    J'ai ensuite un .htaccess pour gérer les 404. En cas de 404, j'appelle le fichier 404.php.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /404.php
    Dans mon fichier 404.php, je récupère le nom de l'image, fais une requête sur ma bdd pour associer à cette image son nom sur le serveur. Je récupère donc son nom d'origine et je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header ("Content-type: image/jpeg");
    readfile($pathToImg);
    exit();
    Pour gérer les autres 404 (les vrais), ce bout de code est dans un if qui permet de tester qu'il s'agit bien d'une 404 "contrôlée". Si ça ne passe pas dans le if, ça ne passe pas dans l'exit non plus et donc j'ai une page html qui explique au gentil client que le fichier demandé n'existe pas.

    Quid du référencement dans Google image ? Détecté comme 404 or not ?

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Quand on en arrive à de telles solutions... il serait certainement mieux de changer le code pour ne pas avoir à faire cela. Et puis tu utilises inutilement php pour faire afficher tes images... donc non seulement c'est pas beau mais c'est aussi pénalisant pour les performances.

    Si ton site est amené à évoluer et perdurer il serait très préférable de repartir sur de meilleures bases. Si cela t'intéresse il y a une classe d'upload avec redimensionnement et renomage ici Tu pourrais l'utiliser ou simplement t'inspirer de la fonction interne "Set_Renomme_fichier".

    Dans ton cas, sur le principe du nom des fichiers je pense à priori que la solution la plus pratique sera le nom original du fichier concaténé avec un suffixe unique.

  10. #10
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    En gros, ABCIWEB te propose de modifier ton code existant, en utilisant sa classe (qui, soit dit en passant, a l'air très utile (et d'ailleurs, le recours à Jquery pour afficher une barre de progression me rappelle un truc identique que j'avais fait il y a qq années...)). Sinon, l'idée de ABCIWEB
    Dans ton cas, sur le principe du nom des fichiers je pense à priori que la solution la plus pratique sera le nom original du fichier concaténé avec un suffixe unique
    rejoint celle que j'avais exprimée il y a 4 jours (et tout-à-fait logique).

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Barf, je suis assez ok avec l'idée générale et je pense revoir cette partie du code au final. Mais le dév étant en prod, cette solution est quand même relativement acceptable dans l'urgence je trouve. De là à ce que mes readfile() altère les perfs, je pense tout de même avoir une bonne marge...
    Merci pour votre aide. Je passe en résolu.

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

Discussions similaires

  1. Remplacer un caractère par une image
    Par mr.t dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 27/10/2005, 09h18
  2. Remplacer une lettre par une image (on peut ?)
    Par tunidesign dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 23/10/2005, 12h13
  3. Réponses: 1
    Dernier message: 15/09/2005, 11h59
  4. Réponses: 2
    Dernier message: 26/07/2005, 21h44
  5. [VB.Net] Créer dynamiquement un nom de variable
    Par chuck_m dans le forum ASP.NET
    Réponses: 5
    Dernier message: 20/07/2005, 15h08

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