PROBLEME INSERT INTO AVEC PHP

Fermé
husk - 13 juil. 2009 à 16:55
 husk - 13 juil. 2009 à 18:22
Bonjour,

J'ai un petit problème. Je suis en train de réaliser un site internet et je crée une page d'administration du site dans laquelle se trouve un formulaire où l'admin pourra uploader une image sur le serveur et écrire la description de l'image. J'ai une base de données avec une table produits dont les champs sont : id, image(chemin où se trouve l'image) et texte(description de l'image).

Lors de l'envoie des données par le formulaire je vais vers une page upload.php où j'ai un bout de code qui fait ca :
$connect = mysql_connect("localhost", "root", "");
mysql_select_db("ma_bd", $connect) or die (mysql_error());
mysql_query("INSERT INTO produits (image, texte) VALUES ('".$image."', '".$description."')") or die (mysql_error());


$image = "images/mon_image.jpg"
$description = $_POST['texte_fichier'] (texte_fichier étant le name de mon input type=text du formualire).

Ce qui ne va pas c'est que la valeur $image apparait bien dans le champ image de ma table mais pas la valeur $description. J'ai même fait un echo $description pour voir si $description était vide mais il m'affiche bien la description que j'ai rentrée dans le formulaire et aucune erreur ne s'affiche.

Je ne vois vraiment pas ce que cela peut être!

Merci d'avance

14 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
13 juil. 2009 à 17:05
Salut,
bon déjà je te conseil de mettre la resource dans le mysql_query ca t'évitera des soucis ultérieurement -->

mysql_query($sSql, $connect );


avec $sSql = "INSERT INTO produits (image, texte) VALUES ('".$image."', '".$description."')";

ensuite pour etster c'est simple dans ton code Php tu fais un

echo $sSql

Tu copies coles ca dans la fenetre SQL de phpMyAdmin et tu devrais avoir un message d'"erreur assez explicite.

Et puis je te conseil aussi de faire un addslashes() pour éviter que dans ta requete il y ait des ' ou des " qui viendrait casser ta requete.
1
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
13 juil. 2009 à 18:09
HuHu :
$descritpion = $_POST['texte_fichier'];

T'AS UNE FAUTE D'ORTHOGRAPHE ! --> D E S C R I T P O N

muhuha ça rend fou ces erreurs :P


Pour ce qui est du getimagesize, c'est normal tu ne donnes pas le bon path !, la tu donne un tableau en parametre... il faut lui donner le path de la photo uploadée sur le serveur.

1
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
13 juil. 2009 à 18:14
Pour ton getimagesize, il te manque une partie ^^
comme ca ca devrait etre mieux

$size=getimagesize($_FILES["mon_fichier"]['tmp_name']);
1
texte peut il etre utiliser comme nom de champs?
0

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

Posez votre question
J'ai champs le nom de champs. Au lieu de "texte" j'ai mis "description" et ca marche toujours pas :(
0
Merci beaucoup de ta réponse rapide!

J'ai fait comme tu m'as dit et le echo $sSql me donne ca :
INSERT INTO produits(image, description) VALUES ('images/mon_image.jpg', '')


Bizarre non? mon echo $description m'affiche bien la description mise dans mon formulaire mais ca n'apparait pas dans $sSql!

et oui j'ai bien penser utiliser les addslashes() mais pour le moment j'aimerais trouver la solution à ce problème. là je comprend pas!!
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
13 juil. 2009 à 17:15
Il est possible que tu ai genre '<as' en début de chaine et au final ton navigateur ne l'affiche pas car il considère ça comme une balise, je te conseil le debug ultime --> var_dump($sSql);

dis moi ce que tu vois ;)
0
le var_dump m'affiche exactement la même chose que le echo $sSql!

Peut-être que si je met $_POST['texte_fichier'] à la place de $description ca marcheras! mais bon..
0
Et oui le $_POST['texte_fichier'] marche! Mais alors pourquoi??

merci en tous cas de ton aide :)
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
13 juil. 2009 à 17:28
oula je trouve ça bizar, tu veux dire :

$sDescription = $_POST['texte_fichier'];

var_dump($_POST['texte_fichier']);

//Différent de

var_dump($sDescription);


Si oui effectivement c'est plus qu'étrange, essaye de faire le test en supprimant tout ce qu'il y a d'autre dans ton code qui pourrait parasiter genre y ap 'tet un moment qui re-set ta variable car la c'est vraiment plus qu'étrange.

sinon de rien ;)
0
dobbmay Messages postés 7 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 22 juin 2011
13 juil. 2009 à 17:42
slt,
peux tu afficher tout ton code, c'est etrange ce que tu dis. Essaie de changer de nom de variable et reprend ton test.

thx
0
Ben ja'i beau chercher je vois pas!

voilà le code en entier :

<?php
$repertoireDestination = "../images/";
$nomRepertoireBD = "images/";
$nomDestination = $_FILES["mon_fichier"]["name"];
$descritpion = $_POST['texte_fichier'];
$image=$nomRepertoireBD.$nomDestination;

echo $description;

$size=getimagesize($_FILES["mon_fichier"]);

if ($size[2]!=1 && $size[2]!=2 && $size[2]!=3 ...)
     echo "Mauvaise extension";

if (is_uploaded_file($_FILES["mon_fichier"]["tmp_name"]))
{
     if (file_exists($repertoireDestination.$nomDestination))
          echo "Nom déjà existant";
     else if
     {
          $connect = mysql_connect("localhost", "root", "");
          mysql_select_db("ma_db", $connect) or die (mysql_error());
          $sSql="INSERT INTO produits (image, description) VALUES ('".$image."', '".$_POST['texte_fichier']."')";
          mysql_query($sSql, $connect);

          echo $sSql."</br></br>";
          var_dump($sSql);

          echo "</br>Fichier uploadé";
     }

     else
          echo "ECHEC";
}

else
     echo "Fichier non-uploadé!";
0
Et voici ce qu'affiche I.E depuis WAMP :

description
WARNING: getimagesize(Array) [function.getimagesize]: failed to open stream: No such directory in C:\wamp\www\xxxx\admin\upload.php on line 9
Mauvaise extension

INSERT INTO produits(image, description) VALUES ('images/mon_image.jpg', 'description')

string(83) INSERT INTO produits(image, description) VALUES ('images/mon_image.jpg', 'description')
Fichier uploadé


dans le cas où je mets $description au lieu de $_POST['texte_fichier'] le 'description' dans VALUES n'y est pas j'obtiens : ''.

Il y a une erreur avec le getimagesize mais ce n'est pas le problème (enfin je pense)!
0
Le con >_<!

effectivement faute de frappe!

Pour le getimagesize c'était bien ca, merci jeangilles :).

Merci à tous c'est bon tous marche bien
0