Upload d'une image dans une BDD avec blob

thiebaut35 Messages postés 15 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 5 mai 2008 - 12 mars 2008 à 18:39
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 - 16 mars 2008 à 23:06
Je débute en PHP et suis déjà bloqué  ! Commence pas bien c't'affaire !
Résumé:
je souhaite uploader une image via un formulaire <form enctype = "multipart/form-data"... basique vers une BDD MYSQL avec un champ img_id, cle unique ET non auto increment, car je souhaite donner le N° id à telle photo...
Mon code fonctionne si je supprime la cle unique sur img_id. Si je laisse la clé unique, j'ai cette Borde...de Mer.. de réponse: Duplicate entry '0' for key 1, le '0' peut varier, c'est la valeur que je lui donne...
Le souci c'est que si je supprime la clé unique, à chaque nouvel enregistrement à un id donné par moi, la BDD me crée 3 nouveaux enregistrements, dont 2 vides et un plein avec la nouvelle image.!!!

GRRR !

Qui peut m'aider ?

Voici le code qui me ronge !

<html> <head>
<title>Insertion des images</title>
</head>


Envoi d'une image
<form enctype "multipart/form-data" method "post">

</form>


<?php
$id = 0;   c'est moi qui fixe la valeur en fonction de la bDD,
$ret = false;
  $img_blob = '';
  $img_taille = 0;
  $img_type = '';
  $img_nom = '';
  $taille_max = 250000;
  
  
   $img_taille = $_FILES['fic']['size'];
   if($img_taille > $taille_max)
   {
    echo "Fichier trop gros...
\n";
    return false;
   }
   $img_type = $_FILES['fic']['type'];
   $img_nom = $_FILES['fic']['name'];
     
// je mets le contenu du fichier temporaire dans le champ img_blob
   $img_blob = file_get_contents ($_FILES ['fic']['tmp_name']);
   
// et je mets le tout dans la base de données


    include ("connexion.php");
 
$req = "INSERT INTO images (img_id,img_nom,img_taille,img_type,img_desc,img_blob)   
   VALUES ('".$id."','".$img_nom."','".$img_taille."','".$img_type."','"."','".addslashes ($img_blob)."')";
   ici  $id est la valeur que je donne arbitrairement




$ret =mysql_query ($req) or die (mysql_error ());
return true;


?>



ça c'est pour voir si ça a marché !!!!
[liste.php Liste]



</html>

5 réponses

yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 1
13 mars 2008 à 01:42
Salut,

Pourquoi tu n'utilises pas simplement un champs auto incrément ? je veux dire pourquoi tu tiens temps à inseré le ID que TU veux ? En tout cas t'as juste à créer un champs integer sans attributs (pas unique, pas primaire pas index) et tu vas pouvoir avoir des doublons... Si tu mets un champs unique et que tu attribut une clée qui est déja présente alors j'comprends pas que ça t'étonne d'avoir une erreur lol... Unique ça le dit, il peut pas y avoir deux fois le même id..

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 mars 2008 à 07:36
Hello,

ouais...
"c'est moi qui fixe la valeur en fonction de la bDD,"
Tu fais ça comment au juste ?
Ensuite, si avec un INSERT, en ôtant ta clef, tu te retrouves avec 3 enregistrements...c'est que tu passes 3 fois sur cet INSERT dans ton code. Donc à mon sens tu devrais plutôt chercher de ce côté plutôt que du côté de ta clef. Je pense que ta soumission et ton traitement ne fonctionnent pas vraiment comme tu le crois.
0
thiebaut35 Messages postés 15 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 5 mai 2008
13 mars 2008 à 20:14
Merci à tous les 2.
Exact admin cs, le insert passait 3 fois sur le code, donc 3 enregistrements.
Je cherche encore un peu mais j'ai bien avancé, car les images, je dois pouvoir les changer qd je veux, en fixant un N° id via POST et un update à la place de insert into.


Pas la même fonction, mais j'arrive à attaquer ma base comme je le veux... Encore qq réglages ça devrait le faire !


Je reviendrai vers vous si je coince !


Merci bien


 


bretzel
0
thiebaut35 Messages postés 15 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 5 mai 2008
16 mars 2008 à 21:12
Salut les amiches !


bon ça fonctionne maintenant, je mets les images dans la base sous forme blob et àla place d'un insert into, j'ai mis un update... C'est tout comme je veux, je saisis un n° d'image dans une liste que j'ai définie, un image sur mon ordinateur et hop envoi !


ça roule tout bien, m^me les fichiers pdf passent ,tombe bien car j'en aurai besoin bientôt.


Mais, mais il y a un mais !


Quand je veux afficher une image dans une page html,  c'est le cirque et la base  affiche l'image sous forme de codes ! addslashes ne fait rien, une piste svp ?

Bien cordialement
François
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 1
16 mars 2008 à 23:06
Salut,

Il te manque sans doute un header avant d'envoyer le contenu de l'image ? par exemple header('Content-type: image/png');

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0
Rejoignez-nous