Aller au contenu

Champ blob


Topaze

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 ^_^

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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' :)

++

Lien vers le commentaire
Partager sur d’autres sites

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();
?>

Lien vers le commentaire
Partager sur d’autres sites

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é par TheRec
Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

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 :lol: ), 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?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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).

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

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

Lien vers le commentaire
Partager sur d’autres sites

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 ;)

Lien vers le commentaire
Partager sur d’autres sites

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+

Lien vers le commentaire
Partager sur d’autres sites

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+

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...