Besoin d'avis 'liens 2 tables'

Petit nouveau ! | 6 Messages

07 avr. 2010, 18:53

Bonjour à toutes et tous,

je suis toute nouvelle sur le forum et me débrouille un peu en php, mais je nage avec sql sur certaines choses.
J'aurais besoin de vos avis pour avancer.

Je dois mettre en place un système qui permet de créer un peu comme un carnet d'adresse, donc un admin avec ajout, modif, supprimer + une page pour visualiser le résultat.
jusque là tout va bien, j'ai ma base et ça fonctionne.
Par contre j'ai besoin d'une chose supplémentaire.
J'aimerais pouvoir lors de la création de la fiche du contact, ajouter une image (un logo de société).
J'ai pensé qu'il faudrait une table indépendante que celle qui recueille les données textes, afin d'enregistrer les images dans la table.
J'ai trouvé sur ce site, un article bien expliqué pour cela http://beaussier.developpez.com/article ... ysql/blob/

Ce qui me dérange à présent c'est créer la liaison entre les 2 tables, celle où se trouve les données de textes, et celle qui a les images.
Car une image correspond à une entrée et vis et versa.

Je ne sais pas si mon idée est la bonne, si vous avez des suggestions je suis preneuse.
Merci d'avance à tous.

ViPHP
ViPHP | 2287 Messages

07 avr. 2010, 19:01

Bonjour,

Je ne te conseille pas, pour diverses raisons (performance, maintenabilité), de stocker tes images directement dans ta base de données (C'est techniquement possible mais ce n'est pas avantageux). La pratique qu'on recommande est plutôt de stocker les images de manière traditionnelle, dans des fichiers placés dans un répertoire dédié de ton site web, et de stocker seulement en base le chemin vers chacun de ces fichiers.

Il se peut que ce changement dans ton système réponde aussi à ta question première car si je ne m'abuse, cela enlève du même coup la seule raison que tu avais de faire une table distincte pour le stockage des images et tu peux maintenant te contenter d'un simple champ texte court dans ta table contacts.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 6 Messages

07 avr. 2010, 19:16

Merci Calimero,

justement j'ai longuement hésité sur cette solution.

j'ai pensé mettre un champs $logo dans ma table pour recueillir le lien des images.
J'ai un codage que j'utilise habituellement pour des formulaires qui permettent l'upload puis une réception par mail du lien.
Je ne pense pas que ce code php est valable pour ce système.

Que me suggères-tu ?

ViPHP
ViPHP | 2287 Messages

07 avr. 2010, 19:33

justement j'ai longuement hésité sur cette solution.
Tu as bien fait d'en parler avant de te lancer dedans ;) Voici l'exemple récent de quelqu'un qui a tenté l'expérience.

j'ai pensé mettre un champs $logo dans ma table pour recueillir le lien des images.
J'ai un codage que j'utilise habituellement pour des formulaires qui permettent l'upload puis une réception par mail du lien.
Je ne pense pas que ce code php est valable pour ce système.

Que me suggères-tu ?
Ce n'est pas un problème en soi. A l'enregistrement de l'image, il est à peu près aussi difficile de faire l'un que l'autre (les contraintes sont simplement différentes), par contre lors de la restitution de l'image, la méthode qui stocke dans un fichier à part prend l'avantage et s'avère moins contraignante.

Si tu stockes l'image dans un blob en base de données, tu ne pourras plus rien faire avec cette image -que ce soit en lecture ou en écriture, ou même simplement la visualiser- sans passer par un script créé pour cela (spécialement étudié pour servir une image, il y a donc une certaine technicité à mettre en oeuvre, avec le risque d'erreur et le déboguage qui vont avec, pour une action très basique).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 6 Messages

07 avr. 2010, 19:42

Ok, super
Je vais lire avec attention ce post.
Merci infiniment. :D

Petit nouveau ! | 6 Messages

07 avr. 2010, 23:11

Alors, j'ai presque réussi lol

J'ai pris la base du topic que tu m'as lié.
J'ai remanié avec les champs de ma table.
La page php que j'utilise pour formulaire est du php3, je ne sais pas si c ça qui gène mais il se trouve que le code pour indiquer le dossier temporaire ne fonctionne pas ou mal, j'ai une erreur de code.
        $dossier = '/img/';
        $maxsize = '1048576';
        $maxwidth = '2000';
        $maxheight = '2000';
j'ai essayé avec img/ ou encore ../img/ et même ./img/
mais rien à faire.

T'aurais une idée ?

Petit nouveau ! | 6 Messages

07 avr. 2010, 23:31

et puis y'a une chose que je ne comprends pas.
Dans ma table, je vois bien que le fichier a été uploadé, par contre je ne le vois pas physiquement sur mon serveur FTP.
comment est-ce possible ? Comment puis-je afficher mon image ?

Petit nouveau ! | 6 Messages

08 avr. 2010, 12:32

Bon là je bloque !

je suis allé sur ce cours http://www.phpfrance.com/tutoriaux/inde ... e-fichiers
j'ai testé donc les explications.
Mais je rencontre un soucis.

Voici une erreur qui s'affiche une fois l'envoie du formulaire :

Code : Tout sélectionner

Warning: move_uploaded_file(img/logo_faa.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in /homez.42/liberter/www/carnet/admin/ajout.php3 on line 59 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpxhCU9a' to 'img/logo_faa.gif' in /homez.42/liberter/www/carnet/admin/ajout.php3 on line 59
La ligne désignée sur ma page "ajout.php3" :

Code : Tout sélectionner

move_uploaded_file($_FILES['image']['tmp_name'], $dest_dossier . $dest_fichier);
Y'a-t-il une erreur ?