Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1611 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP : Noob à la lutte!] Comment écrire ceci différemment ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP : Noob à la lutte!] Comment écrire ceci différemment ?

n°313383
Robbb
Posté le 19-02-2003 à 18:30:44  profilanswer
 

Bonjour !
 
J'écris un ptit script pour afficher dans un tableau des données d'une BDD MySQL.
 
Dans la colonne de gauche doivent apparaître des mini-photos dont les références sont stockées dans une table et dans la colonne de droite du texte...
 
Comme je voudrais qu'il y ai autant de tableau que d'entrée dans la BDD je fait ça avec une boucle WHILE...
 
Voici à quoi ressemble la page :
 
http://217.136.153.44/condrogest/list.php
 
et en voici le code :
 
http://217.136.153.44/condrogest/list.phps
 
 
Le problème actuellement, c'est que selon le fait que je place l'un ou l'autre WHILE devant l'autre...c'est la boucle en rapport avec le second WHILE qui fonctionnera...
Donc la dans l'état actuel du script, le texte de la colonne de droite est bien affiché, mais la photo est toujours la même alors qu'elle devrait changer elle aussi...
 
Puis voilà, je cherche un peu partout dans les manuels mais j'ai peu de pistes...
Merci à tout qui peut m'aider :)


Message édité par Robbb le 19-02-2003 à 18:39:13
mood
Publicité
Posté le 19-02-2003 à 18:30:44  profilanswer
 

n°313406
arghbis
salops de dauphins
Posté le 19-02-2003 à 18:56:11  profilanswer
 

alors là, y'a un testicouille dans la soupe aux choux où je ne m'y connais pas! tout d'abord , comment fais tu la liaison entre ta photo et le texte à lui associer?? il n'y a pas de lien entre tes deux requêtes! kelles sont tes clef primaires et étrangères???
à koi ressemble ta BDD??
selon l'algo que tu as écrit, et ce que ta paga affiche, tu n'as qu'une seule image dans ta BDD et trois textes, c ça??
 
ce qu'il te faudrait c une liaison entre tes deux requêtes! je pense que dans l'état des choses, si tu rajoutes une nouvelle image, elle sera présente trois fois dans ta page avec les 3 descriptions

n°313420
Robbb
Posté le 19-02-2003 à 19:08:31  profilanswer
 

Ah oui il est fort possible qu'il y aie une grosse testichouille dans la soupe au cou :)
 
Comme indiqué dans le titre, je suis débutant et i lest encore des notions que je n'ai que très sommairement assimilées...
 
Je vais tenter de te répondre du mieux que je peux :
 
Comment je fait la liaison entre image et texte : Euh c'est une très bonne question et je me demande pourquoi je ne me la suis pas posée avant :)
 
Clefs primaires et étrangères : Euh...je ne sais pas ce que c'est...
 
Quand à ma BDD pour ce qui nous concerne elle ressemble à ceci :
 
- 2 Tables :  
 
anno_resum qui contient tout le texte sous les champ "categorie","sous_categorie","code_postal","localite","short_description" et qui contient aussi deux champs suplémentaire "statut" et "ID" pour des question d'identification et d'affichage...
 
 
file_attach qui contient toutes les références des images que j'upload sur le serveur lors de la mise à jour de la BDD. Voici les différents champs la compostant :
 
- file_id : c'est l'ID de l'annonce à laquelle le fichier est lié (ah ben le voici ptet le moyen de lier mes images à mes annonces non ? :)
- file_true_id : c'est une id secondaire dont j'ai eu besoin pour uploader plusieurs images du même "file_type" (cf ci dessous) sous la même "file_id"
- file_statut : pour l'affichage "temp" or "visible"
- file_server_name : le nom du fichier original pour l'afficher dans un tableau de supervisation des uploads lors de ceux ci...
- file_name : le nom du fichier tel qu'il est stocké et tel que je dois l'appeler
- file_ext : l'extension du fichier, je m'en suis servie pour créer le file_name lors de l'upload...
- file_type : soit mini_photo (dans ce cas ci), main_photo, extra_photo ou extra_plan
 
Enfin pour ta dernière question :
 
Dans ma BDD j'ai :
 
1 mini_photo par annonce qui doit apparaitre dans la page que tu peux visionner la haut
 
1 main_photo par annonce : celle-ci apparaîtra dans une fenêtre pop_up contenant des détail sur l'annonce
 
un nombre indéfini (max 10) extra_photo par annonce
un nombre indéfini (max 10) extra_plan par annonce
 
Ces deux derniers type d'images apparaîtront dans une extension de la fenêtre pop-up des détails...
 
Voila...tu sais tout :D
 
En gros, j'ai vraiment bcp bossé sur la partie enregistrement des données et j'ai pas mal réfléchis sur tout ce dont j'allais avoir besoin pour mon site.
Et maintenant j'essaie de me coller à l'affichage mais c'est nouveau pour moi et je rame :)


Message édité par Robbb le 19-02-2003 à 19:17:22
n°313432
arghbis
salops de dauphins
Posté le 19-02-2003 à 19:26:46  profilanswer
 

bon ben déjà c un peu plus clair!
déjà, pour afficher ce que tu veux dans ta page, ta requête devrait ressembler à ça :
select anno_resum.categorie, anno_resum.sous_categorie, anno_resum.code_postal, anno_resum.localite, anno_resum.short_description, file_attach.filename from anno_resum, file_attach where anno_resum.ID=file_attach.file_id and file_attach.file_type='mini_photo' and file_attach.file_statut='visible' and anno_resum.statut='visible';
 
bon, ça devrait déjà être mieux!
 
ensuite, tu n'as qu'une seule boucle while avec un seul fetch_array! ça doit marcher à peu près!
 
Ps: y'a qqchose qui me gène dans ta structure de donnée, mais je sais pas koi!
je te le dis si je trouve!
Ps2 : tu dis que tu as bcp bossé sur le stockage des données?? pourtant tu ne sais pas ce que sont des clefs primaires et étrangères (connaissance de base en bases de données)! m'enfin c pas grave, on peut s'en sortir sans, même si c moins "propre"

n°313434
arghbis
salops de dauphins
Posté le 19-02-2003 à 19:29:11  profilanswer
 

juste une explication :
dans ta table anno_resum, ID est ta clé primaire : c elle qui te permet de retrouver de manière non ambigüe la bonne annonce.
dans ta table file_attach, la clé primaire est probablement file_true_id, et file_id est une clé étrangère en ce sens qu'elle fait référence à anno_resum.ID

n°313460
Robbb
Posté le 19-02-2003 à 20:21:49  profilanswer
 

Merci énormément Arghbis :hello:
 
En effet ta solution pour la requête devrait me convenir !!
 
Pour ce qui est de cette histoire de clé c'est bien compris à présent ! En fait, j'ai un bon ami qui m'a épaulé pendant mon apprentissage ces deux dernières semaines et bien qu'il m'aie dit que mon champ ID serait la liaison entre mes trois table (car j'ai une table "anno_detail" qui contient tout les détails relatifs aux annonces), il ne m'a pas dit que cela s'appelait une clé primaire ou une clé secondaire...
 
Donc si j'ai bien compris le principe, dans ma table "anno_detail" ou figure aussi un champ "ID" qui se calque sur le champ "ID" de "anno_resum", ce champ "ID" est une clé étrangère de la table faisant référence à "anno_resum"... !? :)
 
Par contre, "file_true_id" ne me sert pas à grand chose tu sais.
Je t'illustre ça en exemple :
 
file_true_id n'est utilisé que lors de l'upload de "extra_photo" et "extra_plan" car l'admin peut s'il le souhaite uploader plusieurs de ces fichiers pour une même annonce.
 
Or mon "file_name" est crée comme suit ds mon code php : file_name = $file_id.".".$file_ext
 
En sachant que $file_id est égal à l'ID de l'annonce en cours d'insertion.
 
Le problème avec cette méthode est que dès que j'upload + d'un fichier pour la même annonce, $file_id, ou en d'autres mots, le nom du fichier, est le même pour ces multiples fichiers. Donc au fil des uploads, les fichiers s'écrasent les uns les uns les autres.
 
C'est pourquoi j'ai crée "file_true_id" qui équivaut en fait au "dossard" du fichier (:lol:).
Si tu veux la huitième extra_photo uploadée, toutes annonces confondues, portera la file_true_id n°8, la 9ème portera le 9 et ainsi de suite...
 
Le fait est que ça je m'en fou...
Ce qui m'intéresse c'est que pour nommer mes extra_photo et extra_plan, je fait ceci :
 
file_name = $file_id."_".$file_true_id.".".$file_ext
 
Et voilà...
C'est peut-être une méthode qui n'est pas très propre mais elle fonctionne sans aucun problème jusqu'à présent...
Puis surtout...C'est tout ce que j'ai trouvé avec mon niveau de compétence du gars qui a écrit sa première ligne de code il y'a 9 jours à peu près ;)
 
Allez c'est parti je me met au boulot !
 
Merci encore !


Message édité par Robbb le 19-02-2003 à 20:31:59
n°313464
arghbis
salops de dauphins
Posté le 19-02-2003 à 20:29:12  profilanswer
 

heu ben non en fait. dans ta table anno_detail, ID est aussi ta clé primaire, mais elle est en même temps clé étrangère (pas secondaire  :non: ) car elle fait "référence" à ID de anno_resum. M'enfin bon, c du détail technique à la limite! tant que tu as bien étudié tes clés primaires, tu ne devrais pas avoir de problèmes au niveau de l'intégrité des données.

n°313468
Robbb
Posté le 19-02-2003 à 20:34:25  profilanswer
 

EDIT ci-dessus...
 
Je post ceci juste pour dire que j'éditais mon post alors que tu répondais ;)
 
Juste au cas ou si ce que j'ai écris pouvait te montrer plus clairement l'organisation de mes données...
 
A+ :hello:


Message édité par Robbb le 19-02-2003 à 20:34:41
n°313481
Robbb
Posté le 19-02-2003 à 20:54:58  profilanswer
 

Yeah :
 
http://81.240.117.87/condrogest/list.php
 
 
Je suis trop content pis je viens d'apprendre comment faire des requêtes MySQL un peu plus souples...
 
THX :hello:


Message édité par Robbb le 19-02-2003 à 20:58:05
n°313491
Robbb
Posté le 19-02-2003 à 21:01:25  profilanswer
 

Bon l'étape suivante, c'est de faire en sorte que chaque mini photo soit un lien vers une page qui s'ouvre dans une fenêtre pop-up et qui contient les infos détaillées liées à l'annonce...
 
Huuu au boulot :)
 
La je vais devoir passer des infos via l'url...
 
Bon faut que je me renseigne la dessus...

mood
Publicité
Posté le 19-02-2003 à 21:01:25  profilanswer
 

n°313563
ethernal
Chercheur de vérité...
Posté le 19-02-2003 à 22:38:43  profilanswer
 

qq conseils au passage :
-  évite de donner aux fichiers l'extension .inc ! c'est à bannir.  Surtout pour un fichier où devrait se trouver login/pwd Mysql. Le phps, c'est pas terrible non plus... sauf pour le développement et encore, mais au moins là tu sais que tu affiches le source.
- interdit le listing des répertoires
- configure apache pour qu'il charge la page index.php par défaut
- interdit l'accès à ton phpMyAdmin depuis internet.
 
ça fait bcp d'un coup je sais... mais le jour ou tu mettras ton site en production n'oublies pas de le faire, sinon tu vas te faire hacker ;)

n°313598
Robbb
Posté le 19-02-2003 à 23:07:59  profilanswer
 

Ok Ethernal je prend note !! Je viens justement de lire un truc sur le fait qu'il fallait nommer les .inc en .php pour plus de sécurité !  
 
Pour le listing des répertoire, je ne sais pas encore comment interdire cela mais je me penche sur la question...
 
Idem pour la Config Apapche et Phpmyadmin...
 
La je bosse avec un environnement de noob c'est clair ! J'ai configuré que le minimum et c'est la porte ouverte à toutes les crasses...
 
Merci des conseils ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP : Noob à la lutte!] Comment écrire ceci différemment ?

 

Sujets relatifs
[PHP]Pour un remplacement bbcode <> html[Résolu][Php] Problème explorateur de fichiers (lecteur réseau)
[Php/Apache] Cryptage MD5 différent ??[PHP] faire une requete sur une "plage d'ip"...
Pb lors de la transformation XSL d'un document XML via PHPPDF et PHP
[Résolu][Php/Oracle] Problème de caractères bizarres après extraction[PHP / JS] Affecter une variable JS à une variable PHP ?
SSL/PHP comment ca marche ?PHP : précision session
Plus de sujets relatifs à : [PHP : Noob à la lutte!] Comment écrire ceci différemment ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR