Topaze Posté 29 Juillet 2005 Posté 29 Juillet 2005 salut, J'ai un problème avec ma table. J'envoie de l'image dans ma table au lieu d'avoir le chemin de l'image dans le champ j'ai [bLOB - 0 Octets] or l'image existe et n'est pas vide. cela est du à quoi? Merci de pour votre aide
Portekoi Posté 29 Juillet 2005 Posté 29 Juillet 2005 Bonjour, Je n'ai pas bien compris ton problème. Tu as un champ de type BLOB afin de stocker des images dedans et cela ne fonctionne pas. Est ce bien cela? D'autre part, il faut éviter de stocker des images dans la base de données pour une question de lourdeur et praticité. Portekoi
Topaze Posté 29 Juillet 2005 Auteur Posté 29 Juillet 2005 Justement c'est pour éviter cette loudeur que j'ai voulu sauvegarder le chemin de l'image mais comment faire. Merci
Portekoi Posté 29 Juillet 2005 Posté 29 Juillet 2005 Essaie d'être plus explicite car je ne comprends pas ta demande Tu as : 1 - les url dans un champ de type BLOB 2 -Tu as les images elles-mêmes dans un champ de type BLOB 3 - Autre (préciser) Ensuite : Tu veux : 1 - Enregistrer dans une table les url des images déjà contenues dans le champ de type BLOB 2 - Lister un répertoire contenant des images et enregistrer les url dans un champ de type blob 3 -Autre (préciser) Voilà, ca va nous faire avancer... enfin j'espère
Topaze Posté 29 Juillet 2005 Auteur Posté 29 Juillet 2005 J'ai un formulaire que le visiteur doit remplir <html><head></head> <body><FORM action="testvalide.php" method="POST" ><font face='Verdana,Arial,sans-serif'color='#023161'><table border="0" summary=""> <tr> <td>Pseudo</td> <td><input type="text" name="pseudo" maxlength="6" value=""/><br></td> </tr> <tr> <td>Mot de passe</td> <td><input type="password" name="motdepasse" maxlength="6"value=""/><br></td> </tr> <tr><td><font face='Verdana,Arial,sans-serif' size='3' color='#023161'><b>Votre Photo</b></font><font face='Verdana,Arial,sans-serif'color='#023161'>ATTENTION : Format en JPG,Taille à respecter : 70 x 70 pixels.</font><br><br><input type="hidden" name="MAX_FILE_SIZE" value="100000"><input name="photo" type="file"></td> <tr> <td><INPUT TYPE="submit" VALUE="Envoyer " name="Envoyer"> </td> <td><INPUT type="reset" value="Annuler"><br></td> </tr></table></FORM> </body></html> Avec ça mes données sont bien enregistrées dans ma table sauf l'image qui affiche o octet ce qui n'est pas normal. Et c'est cela que je veux corriger.
Portekoi Posté 29 Juillet 2005 Posté 29 Juillet 2005 Re, Ok je comprends mieux maintenant Tu dois, dans ton fichier de traitement de ce formulaire, enregistrer l'image dans un dossier en la nommant, par exemple, par le numéro du membre ou autre. Par exemple, je m'inscris sous 'Portekoi' et je suis le 658 ième membre. Le chemin de l'image sera donc : http://www.tonsite.com/image/658.jpg Une fois que tu as cette information, tu n'as plus qu'à enregistrer le chemin dans en champ de type varchar(255) dans ta table 'membre' ++
Topaze Posté 31 Juillet 2005 Auteur Posté 31 Juillet 2005 Salut Je 'ai pu envoyer la photo sur dans base . 5 octet est affiché dans le champ qui recoit la photo envoyée. Je veux maintenant afficher l'image dans une page. Pour cela j'ai fait un script upload mais cela ne marche pas. j'ai ce message : Notice: Undefined index: photo in c:\easyphp1-8\www\web\upload.php on line 29 Voici le script <?php $photo = isset($_POST["photo"]) ? $_POST["photo"] : ""; $idConnexion = mysql_connect("localhost", "root", ""); if ($idConnexion) echo "Connexion au serveur réussie"; else echo "Connexion au serveur ratée"; $connexionReussie = mysql_select_db("mabase"); if ($connexionReussie) echo "Connexion à la base réussie"; else echo "Connexion à la base ratée"; $requete = "select photo from table"; $result = mysql_query($requete); if (!$result) { echo "Le fichier n'a pas été charger.<br>"; } else { $repertoireDestination = "data/"; $nomDestination = $_FILES["photo"]["name"]; if (eregi(".php", $nomDestination)) { $nomDestination .= ".txt"; } if (is_uploaded_file($_FILES["photo"]["tmp_name"])) { if (rename($_FILES["photo"]["tmp_name"], $repertoireDestination.$nomDestination)) { echo "Le fichier temporaire ".$_FILES["photo"]["tmp_name"]. " a été déplacé vers ".$repertoireDestination.$nomDestination; } else { echo "Le déplacement du fichier temporaire a échoué". " vérifiez l'existence du répertoire ".$repertoireDestination; } } else { echo "Le fichier n'a pas été uploadé (trop gros ?)"; } } mysql_close(); ?>
Portekoi Posté 31 Juillet 2005 Posté 31 Juillet 2005 Quelle est la ligne 29? Car je tombe sur '}' Je te conseil de visiter ce site : http://www.phpindex.com/articles/articles_...hp3?element=479 ++
TheRec Posté 31 Juillet 2005 Posté 31 Juillet 2005 (modifié) Bonjour, Notice: Undefined index: photo in c:\easyphp1-8\www\web\upload.php on line 29 Cela signifie simplement que la variable "photo" n'est pas définie (le terme "index" est utilisé car c'est un tableau auquel que tu essaies d'accéder.). Une "Notice" est juste un avertissement, pas vraiement une erreur critique...(enfin ça dépend de ce que tu fais ensuite avec ce qui a provoqué cet avertissement..). Portekoi a raison, si l'utilisateur n'a qu'une image associée à son compte tu peux tout à fait utiliser son numéro d'utilisateur (id de son enregistrement dans la base de données). Et dans ce cas ce que tu as à faire c'est juste de vérifier que le fichier est correctement uploadé, qu'il a la bonne extension/type MIME et de le déplacer avec la fonction PHP "move_uploaded_file" vers le répertoire désiré en spécifiant le nouveau nom de fichier avec l'ID de ton utilisateur. Ensuite tu n'a même pas besoin de stocker dans la base de données le chemin de l'image vu qu'il sera fixe. Dès le moment ou tu connais l'ID de l'utilisateur tu peux retrouver son fichier. Modifié 31 Juillet 2005 par TheRec
Didier_S Posté 31 Juillet 2005 Posté 31 Juillet 2005 dans ton .HTML tu as : <input name="photo" type="file"> et dans ton .php : $photo = isset($_POST["photo"]) ? $_POST["photo"] : ""; Les input de type file renvoient des données dans $_FILES, pas dans $_POST. J'avoue que j'ai pas lu tout le code, mais essaye déja ça
dragondz Posté 1 Août 2005 Posté 1 Août 2005 J'ai bossé la semaine derniere sur un script de news qui incluait un transfert de fichier, comme je n'ai pas reussit a envoyer le fichier en même temps que les textes (je sais pas pouquoi! surement parce que je suis pas un expert ), j'ai scindé mon formulaire en deux un pour les données et l'autre pour le fichier, et ça a fonctionné. Effectivement ce serait interessant de savoir s'il est possible de transeferer des fichiers en même temps que de simples champs textes?
TheRec Posté 1 Août 2005 Posté 1 Août 2005 Ah là là...l'erreur du classique que je ne vois même pas moi-même par étourderie... <FORM action="testvalide.php" method="POST" > devient : <FORM action="testvalide.php" method="POST" enctype="multipart/form-data" > Sinon les fichiers ne sont pas envoyer avec le formulaire... Et pour répondre à dragondz, bien entendu qu'on peut le faire...si tu programme en PHP voici l'aide dont tu as besoin : http://www.php.net/manual/fr/features.file-upload.php
TheRec Posté 1 Août 2005 Posté 1 Août 2005 De rien ! Au fait, préfère la fonction move_uploaded_file à la fonction rename, elle vérifie que le fichier soit bien un fichier "uploadé"... http://www.php.net/move_uploaded_file
dragondz Posté 1 Août 2005 Posté 1 Août 2005 Au fait, préfère la fonction move_uploaded_file à la fonction rename Oui c'est celle que j'utilise. Mon script de news fonctionne avec le même formulaire maintenant et permet au choix d'uploader ou pas des fichier. Merci pour tes infos TheRec, Je vais peut être publier le script pour ceux que cela interessera (mais avant je le posterais sur le Hub pour voir s'il n a pas de défauts de sécurités).
Topaze Posté 10 Août 2005 Auteur Posté 10 Août 2005 Effectivement quand je scinde mon formulaire en deux l'upload marche. mais mon gros problème c'est comment faire pourque lors de l'affichage je puisse attribuer la bonne photo envoyée à chaque membre inscrit
TheRec Posté 10 Août 2005 Posté 10 Août 2005 Bonsoir, Chaque membre est identifié pas un numéro (ci-après appelé "id"), il te suffit d'utiliser ce numéro comme nom pour l'image. Et lorsque tu veux afficher la photo d'un membre tout ce dont tu as besoin c'est de connaître son numéro... Un exemple serait d'avoir un répertoire avec les images de toues les utilisateurs, ou tu déplacerait l'image de l'utilisateur lors de l'upload, et lorsque tu veux l'afficher tu utiliserait quelque chose dans ce genre : <img src="images_membres/<?php echo $_SESSION['userid']; ?> alt="Avatar membre"> La vraible "$_SESSION['userid']", tu la récupère au moment de l'ouverture de sa session en allouant une variable de session. Lorsque tu vérifie que son nom d'utilisateur et son mot de passe est bon, tu récupère directement l'id du membre (logiquement si la combinaison nom d'utilisateur/ mot de passe est correcte, tu récupéreras un id)... Voilà...mais j'ai un peu l'impression de me répéter...à part pour la variable de session
Topaze Posté 10 Août 2005 Auteur Posté 10 Août 2005 merci pour ta réponse je vais m'y mettre et je te dirai quoi.
Topaze Posté 14 Août 2005 Auteur Posté 14 Août 2005 salut, J'ai essayé ta méthode pour afficher l'image mais cela ne marche pas. Voici ce que j'aimerai faire: form. html (mon formulaire) insert.php ( insertion des données dans la table+upload de la photo) NB les photos des membres sont envoyées dans mon repertoire toto. affichage.php( afficher les chanps photo, pseudo....) si je veux afficher les données du membre Boris comment aller chercher sa phto dans le répertoire toto. Voilà mon problème Si quelqu'un peut m'aider ce sera génial, car cela m'embete trop a+
Topaze Posté 16 Août 2005 Auteur Posté 16 Août 2005 salut, j'arrive à uploader la photo dans un répertoire mais je galère pour afficher la photo de chaque membre dans sa fiche. Car ce code marche pas <img src="images_membres/<?php echo $_SESSION['userid']; ?> alt="Avatar membre"> A+
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant