Upload d'une image dans une BDD avec blob

Signaler
Messages postés
15
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
5 mai 2008
-
yoman64
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
-
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

Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010

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  
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
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.
Messages postés
15
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
5 mai 2008

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
Messages postés
15
Date d'inscription
samedi 17 novembre 2007
Statut
Membre
Dernière intervention
5 mai 2008

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
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010

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