Bonjour à tous,
après avoir découvert Grafikart il y a peu, je suis devenu premium afin de tirer profit au maximum
des possibilités de devenir "développeur" et plus particulièrement en PHP.
Cependant, je bute encore sur certains aspects et ce malgré les tutoriels réellement utiles et faciles d'accès.
Voilà mon problème :
j'ai réalisé une gestion d'images en PHP selon le tutoriel, mais je souhaiterais pouvoir :

  • faire en sorte que la dernière image postée apparaissent en premier (un système de trie ?) ;
  • pouvoir uploader des images avec des accents, espaces et numéros (car l'image ne s'affiche pas si le nom du fichier comporte tout cela);
  • et enfin limiter le nombre d'images par page !

Cela fait beaucoup, mais j'avoue que je suis encore débutant pour me débrouiller tout seul ...
Merci beaucoup pour vos éventuelles réponses !

6 réponses


Va faire un tour ici.

C'est toujours mieux d'avoir les connaissances de bases avant de suivre les tutos. Les tutos sont surtout fait pour ceux qui bloque et qui ont les bases.

Cordialement.

boulou
Auteur

Merci de répondre présent. Je connais bien le site du zéro !
Je vais continuer mes recherches...

Cordialement

Salut !

Vu que tu travail avec php, je suppose que tu utilise une base Mysql. Je te conseillerais donc de faire une table qui contient des référence à tes images.

Voici une table type que j'utilise, tu peu bien entendu ajouter plus de champs :
Tables images :

Id : Primary Key
Name : le nom de l'image
ext: extension associer, exemple JPEG.
référence: exemple un id correspondant à un billet d'un blog.

Maintenant pour arborescence de tes fichiers. j'utilise la suivante :

/img/USERS/user_id/billet_id/nom_image.ext

Voici un exemple, l'utilisateur TOTO (user_id : 5) écrit un billet (billet_id : 549) sur son blog et poste 3 images de voiture de collection au format PNG, JPEG et BMP.
J'enregistre le billet dans la base, je récupère billet_id, j'upload les images et je les renomme respectivement de 0 à n images (ici 3)
Voici ma structure :

/img/USERS/5/549/0.PNG
/img/USERS/5/549/1.JPEG
/img/USERS/5/549/2.BMP

Les records de ma table :

789 0 PNG 549
790 1 JPEG 549
791 2 BMP 549

Lorsque que je veut afficher les images du billet de toto, je récupère simplement tout les records ayant comme billet_id (549) sous formes de tableau.

Il me reste à parcourir ce tableau contenant ma liste d'images et les afficher.

Tu peu ajouter un champ created à ta table si tu veut par exemple trier les images dates ect. Les possibilités sont assez vaste.

Enfin pour pour limiter le nombres images par pages tu dois utiliser un système de pagination. Très facile sous cakephp, un poil plus complexe sous php seul.

boulou
Auteur

Merci Zaarkan pour ta réponse super détaillée ! Effectivement j'avais fait cela avec Mysql mais j'avais une préférence pour ne pas stocker d'images dans une base de données !
Du coup je tente de faire tout ça juste en PHP, mais les centaines de fonctions PHP font que je me perds rapidement.
Le problème est que les sources sont tellement différentes d'un tutoriel à un autre, que je n'arrive pas à trouver de solution.

Merci à vous deux encore pour votre apport !

boulou
Auteur

J'ai trouvé les morceaux de codes pour régler mes problèmes mais je ne sais pas où les placer ?!

  • Problème d'accents et d'espaces :
    $nom = strtr($nom,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $nom = preg_replace('/(^.a-z0-9]+)/i', '-', $nom);

  • Problème de trie (afficher le dernier post en premier) :
    il faut utiliser la fonction asort()

  • Problème de pagination :
    J'ai vu que l'on pouvait utiliser JQuery donc je vais tester ça !

Salut !

Pour ton histoire de tri, il te suffirait de faire un tri lors de ta requète (ORDER BY TonIdDePhoto DESC).