Panel admin => gestion d'images...

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 : Panel admin => gestion d'images...

par chrislabricole » 07 mai 2008, 12:46

Ok, merci à vous tous, je mets résolu, si j'ai un problème, je poste à la suite de l'autre ou je fais un nouveau topic... :)

par AB » 07 mai 2008, 12:40

Ok tu peux donc mettre résolu pour ton pb initial.

Concernant le redimensionnement et l'upload de l'image il y a ce topic :
http://www.phpfrance.com/forums/voir_su ... -asc-0.php

Tu peux t'en inspirer largement, ça répond presque entièrement à ta question. Si tu as des questions complémentaires ensuite, poses les plutôt à la suite du topic mentionné ou ouvres en un autre puisqu'on à l'habitude de ne traiter qu'une question par topic pour faciliter la recherche des visiteurs :)

par chrislabricole » 07 mai 2008, 11:54

:D

Ok, bon, maintenant, reste le problème de l'upload de l'image... :?
Lors de l'upload, il faudra enregistrer l'image dans un dossier précis et l'enregistrer une 2ème fois dans un autre dossier, sous le même nom, mais, qui à pour largeur 100 px , pour la hauteur, on s'en fou... le tout c'est que ça sois proportionnel évidament...
Et, je ne suis jamais arrivé à faire un recardrage proportionnel :roll:
De plus, je me rappel plus si il y a vraiment besoin de la library GD... :?

Mierci à vous, je vais chercher aussi de mon côté :)

par AB » 07 mai 2008, 04:15

Ah bien c'est pas mal avancé !

Je fais un peu pareil à quelques variantes près :

1/ Ma liste ne comprend que les photos à afficher. Les autres je peux les rajouter (niveau admin) à l'aide du listing du répertoire et il suffit de cliquer sur le nom d'une image (que l'on peut prévisualiser) pour l'ajouter au bon endroit dans ma liste avec son numéro d'ordre.

2/ Dans ma table j'ai un champ "ordre" - que je réactualise automatiquement à chaque modification - qui défini l'ordre d'apparition des photos. Ainsi cela me permet de pouvoir afficher les photos dans l'ordre que je souhaite indépendamment de leur nom. Ma requête se fait donc avec un ORDER BY ordre ASC

Voilà pour le gros du principe.

Tu es sur la bonne voie :wink:

Note que ma solution notamment le 1/ demande pas mal de boulot supplémentaire en php + js. A étudier peut-être quand tu auras du temps, mais pas indispensable, ta solution est déjà fonctionnelle.

par chrislabricole » 07 mai 2008, 00:43

Oui, t'as bien raison AB après réflexion... :)

J'ai fais un truc simple, j'ai fais une table par "grande" catégorie :
images_pro (professionnels)
images_par (particuliers)

ces 2 table son composé de 3 champs :
valide INT(1) => sois 1 ou 0, si c'est 1 elle s'affiche, si c'est 0, non...
categorie VARCHAR => le nom de la (sous-)catégorie
nom VARCHAR => le nom de la photo...

après, j'arrive à recomposé le chemin de la photo facilement...
./photos/[pro]ou[par]/[le nom de la (sous-)catégorie]/[nom de la photo].jpg

et voila... :D

la requete qui liste les photo est donc :
SELECT * FROM images_'.$categorie.' WHERE cat="'.$nom_dossier.'" AND valide=1 ORDER BY nom ASC
$categorie contient "pro" ou "par"
$nom_dossier contient le nom de la sous catégorie...
et prend juste les valide qui sont égal à 1...
comme ça dans le panel, l'admin peut "désactiver" une image, su qui aura pour action de mettre 0 ....

Autre chose avant que je mette résolu ? xD

par AB » 06 mai 2008, 23:48

Je termine par là où j'aurais dû commencer.

En fait ta méthode initiale est suffisante pour un usage courant, statique. Mais dès lors qu'il s'agit d'administrer ta galerie photo depuis le web, ça va devenir vite galère sans compter que tu te prive de tout un tas de fonctionnalités par rapport à la méthode d'enregistrement des adresses dans un tableau.

Exemple :
- Tu dois supprimer une image du serveur pour qu'elle ne s'affiche plus. Dommage si tu t'es trompé ou que tu change d'avis deux jours plus tard. Il faudra remettre l'image sur le serveur.
Par contre si c'est simplement son adresse dans un tableau qui est effacée, il te suffira de remettre son adresse et pas besoin de reloader l'image sur le serveur.

- Rien ne t'empêche cependant de faire du ménage en temps voulu. Tu peux faire un script qui supprime tes images du serveur une par une (ou toutes d'un coup) en vérifiant au préalable qu'elle ne sont pas utilisées dans ton tableau d'adresse pour l'affichage en cour.

- Suivant ton humeur ou éventuellement suivant des choix utilisateur, tu peux faire des galeries différentes, etc.

par caroube » 06 mai 2008, 23:34

Si jamais tu veux renuméroter, ne t'embêtes pas à te demander "quelle est l'image qui est supprimée, donc à partir d'où il faut partir, ...".

Tu établis une liste des fichiers ordonnée et ensuite, avec une simple boucle tu renommes tous les fichiers en partant de 1.
Le 01.jpg va être renommé en 01.jpg
Le 02.jpg va être renommé en 02.jpg
Le 04.jpg va être renommé en 03.jpg
Le 05.jpg va être renommé en 04.jpg
...

Quant à une base de données : oui, pourquoi pas ? Mais que vas-tu y stocker d'autre ? Si c'est juste pour indiquer que le fichier /dossier/dossier/01.jpg est présent et que son chemin est /dossier/dossier/01.jpg, cela n'a aucun intérêt.

par AB » 06 mai 2008, 23:13

Ahh oui, j'avais pas pensé à la BdD...


Mais... je pense que ça serais pas mieux avec un fichier non ?
afin je sais pas....

Merci à vous
J'peux pas te donner de réponse catégorique entre les deux. Cela dépend de ce que tu veux faire et des possibilités d'évolution.
Une ou deux tables bien construites t'offriront beaucoup de souplesse et facilité d'évolution.

Maintenant si tes besoins sont bien définis, un fichier texte peut être largement suffisant et sera plus rapide à charger. Un peu plus difficile à faire évoluer cependant si tu souhaites par la suite faire des tris sur différents champs etc.

Enfin quelque soit l'outil retenu, la méthode reste la même : enregistrer le chemin de ses images dans un tableau :wink:

par b.jerome » 06 mai 2008, 23:04

Je suis de l'avis de AB en ce qui concerne la méthode. Je ne comprends pas non plus en quoi le fait de renomé la derniere image inverseré tout ? Surtout que tu es pret à déplacer toutes les images qui se trouve après celle que tu veux effacé... c'est contradictoire ... mais bon c'est ton choix :)

Sinon pour apporté un élément de réponse... tu récupéres le nombre de la derniére image.
$i = 3;
$max = 10;

while ($max > $i) {  
$new = $i;
$i++;   
echo (' image '. $i .' nouveau nom image '. $new.' <br />');
}
ca donne ce résultat...

image 4 nouveau nom image 3
image 5 nouveau nom image 4
image 6 nouveau nom image 5
image 7 nouveau nom image 6
image 8 nouveau nom image 7
image 9 nouveau nom image 8
image 10 nouveau nom image 9

par chrislabricole » 06 mai 2008, 22:44

Ahh oui, j'avais pas pensé à la BdD...


Mais... je pense que ça serais pas mieux avec un fichier non ?
afin je sais pas....

Merci à vous

par AB » 06 mai 2008, 22:37

Bon je répond pas à ta question, mais pas sûr que tu emploies la meilleure méthode.

Si tu veux une galerie photo facilement administrable, c'est mieux d'utiliser une bdd (ou à défaut un fichier texte) pour stocker l'adresse de tes images, leur numéro d'apparition dans la liste, éventuellement des titres etc. Après l'administration est presque un jeu d'enfant et c'est très souple d'utilisation...

par chrislabricole » 06 mai 2008, 22:08

Ouais j'y est pensé mais bon, après ça inverse tout et c'est pas super :?

Sinon je cherche toujours une idée pour faire cette while (ou for) particulière :x


Merci à vous :)

par b.jerome » 06 mai 2008, 21:44

Plutôt que de renommé toutes les images qui suivent l'image que tu as supprimé pourquoi ne pas renommé la derniere image ?

exemple tu as img_01, 02, 04,05....0125

tu renommerais la 0125 en 03... ca éviterait de décalé toutes les images à chaque fois. Enfin c'est une idée.

par chrislabricole » 06 mai 2008, 20:20

ok, donc maintenant, reste la réalisation de ce renommage... :roll:


Je suppose qu'il va faloir faire :
$image_a_supprimer = "03";
unlink('../images/categorie/sous_categorie/'.$image_a_supprimer.'.jpg');
Je ne sais pas trop commence faire la while pour pas qu'elle "supprime" le fichier 60.jpg par exemple, puisqu'il n'existe pas... donc là je sais pas trop...

Merci à vous :)

par caroube » 06 mai 2008, 19:50

La limite "standard" maximale d'exécution d'un script PHP, c'est 30 secondes. Renommer 1 image, ça doit demander au grand maximum 1/100e de seconde. Fais le ratio.

Autre ordre de grandeur : j'ai des scripts qui -à certains moments-, ont en mémoire les noms des 36.000 communes de France. Et ça ne pose aucun problème.

Ton répertoire contiendrait 10.000 fichiers, ça commencerait à être problématique : et encore ce n'est même pas sûr.

Alors, pour 40, 50 ou même 500 fichiers, vas-y !