Insertion dans une table

Fermé
Livvie - 1 mai 2013 à 00:12
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 2 mai 2013 à 15:02
Salut tous le monde j'ai essayé d'insérer des données dans une table à travers un formulaire qui contient un fichier à envoyer aussi mais il m'affiche des erreurs que je vous soumets pour obtenir de l'aide.
Merci d'avance. voila les erreurs
Undefined index: couleur in D:\wamp\www\Tests\AjouterProduit.php on line 69
Notice: Undefined index: prix in D:\wamp\www\Tests\AjouterProduit.php on line 70
Notice: Undefined index: Reference in D:\wamp\www\Tests\AjouterProduit.php on line 71
Erreur de requete
INSERT INTO client_produit ( Categorie, Nom, Marque, Taille, couleur, prix, reference, Image, Disponibilité, Description) VALUES( 'v' , 'bn' , 'o' , '' , '' , '' , 'VB' , 'Votre description ici\r\ncccccccccccc' )
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, Description) ' at line 1
Voici mon bout de code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title> Ajout Du Produit</title>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   </head>
   <body>
   <?php
    // connexion 
	try{
    $bdd = new PDO("mysql:host=localhost;", "root", "");
	}
catch (Exception $e)
{
 die('Erreur : ' . $e->getMessage());
}
      //création d'une base de donnée si n'existe pas
$sql = $bdd->query('CREATE DATABASE IF NOT EXISTS  my_database'); 
//connexion à la base de donnée my_database
  $link=mysql_connect("localhost", "root", "");
       if (!$link) {
       die('Connexion impossible : ' . mysql_error());
        }
	   mysql_select_db("my_database")or die ('Erreur de connexion à la base '.mysql_error());
	   //création de table 
   $req = "CREATE TABLE IF NOT EXISTS  'client_produits'(
    'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    'Categorie' VARCHAR(50) NOT NULL ,
    'Nom' TEXT NOT NULL ,
    'Marque' VARCHAR(100) NOT NULL ,
    'Taille' VARCHAR(50) NOT NULL ,
    'couleur' VARCHAR(50) NOT NULL ,
    'prix' DOUBLE NOT NULL,
    'reference' VARCHAR(255) NOT NULL ,
    'Image' lonGblob NOT NULL ,
    'Disponibilite' VARCHAR(100) NOT NULL ,
    'Description' VARCHAR(100) NOT NULL
)";
if (!mysql_query($req, $link)) {
    echo 'Erreur lors de la création de la table : ' . mysql_error() . "\n";
}
			 
   //Insertion dans la table
	 $maxsize='10240';
$maxwidth='2248';
$maxheight='532';
if (isset($_POST['BT_Envoyer']))
{
if (!isset($_FILES['monfichier']) AND $_FILES['fichier']['error'] > 0) $erreur = "Erreur lors du transfert";//tester si le fichier a eté bien uploadé
if ($_FILES['fichier']['size'] > $maxsize) $erreur = "Le fichier est trop gros";//tester la taille maximale du fichier
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );//tester le type de fichier suivant son extension
$extension_upload = strtolower(  substr(  strrchr($_FILES['fichier']['name'], '.')  ,1)  );//strrchr renvoie l'extension avec le point (« . »)
if (isset($extension_upload) && in_array($extension_upload,$extensions_valides) ) echo "Extension correcte";        //substr(chaine,1) ignore le premier caractère de chaine
                                                                                           // strtolower met l'extension en minuscules
$image_sizes = getimagesize($_FILES['fichier']['tmp_name']);//getimagesize() retourne un tableau
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) $erreur = "Image trop grande";
 @mkdir('fichier/1/', 0777, true);//Créer un dossier 'fichiers/1/'
//@mkdir('/www/MesImages', 0777);
  $nom = md5(uniqid(rand(), true));//Créer un identifiant difficile à deviner
 
  $resultat = move_uploaded_file($_FILES['fichier']['tmp_name'], $nom);//deplacer le fichier vers le dossier de detination
  
    $req_insertion =" INSERT INTO client_produit ( Categorie, Nom, Marque, Taille, couleur, prix, reference, Image, Disponibilité, Description)
                              
                              VALUES(
                                   '" . mysql_real_escape_string($_POST['Nom']) . "'
                                   , '" . mysql_real_escape_string($_POST['Marque']) . "'
                                   , '" . mysql_real_escape_string($_POST['Taille']) . "'
								     , '" . mysql_real_escape_string($_POST['couleur']) . "'
									   , '" . mysql_real_escape_string($_POST['prix']) . "'
									     , '" . mysql_real_escape_string($_POST['Reference']) . "'
									               
										     , '" . mysql_real_escape_string($_POST['Disponibilité']) . "'
											   , '" . mysql_real_escape_string($_POST['Description']) . "'
                               
                              ) ";
                        
			     mysql_query($req_insertion) or die ('Erreur de requete <br />'.$req_insertion.'<br />'.mysql_error());
						 }
   ?>
   
  <em><h1> Ajout D'un Produit </h1></em>
  <form action="AjouterProduit.php" method="post" enctype="multipart/form-data">
   <em>Catégorie</em> <input type="text" name="Catégorie"/><br><br>
   <em>Nom </em> <input type="text" name="Nom"/><br><br>
   <em>Marque </em> <input type="text" name="Marque"/><br><br>
   <em>Taille </em> <input type="text" name="Taille"/><br><br>
   <em>Couleur</em> <input type="text" name="Couleur"/><br><br>
   <em>Prix </em> <input type="text" name="Prix"/><br><br>
  
   <em>Réference </em>  <input type="text" name="Réference"/><br><br>
   <em>Image </em>
   <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
   <input type="file" name="fichier"/><br><br>
   <em>Disponibilité </em><input type="text" name="Disponibilité"/> <br><br>
 <em><p>Description</p><em> <textarea name="Description" rows="8" cols="45">
Votre description ici
</textarea><br><br>
<input type="submit" name="BT_Envoyer" value="Valider" />
</form>
</body>
</html>


Je suis hyper novice et je me mélange les pinceaux. Donc soyez indulgents.
A voir également:

6 réponses

Salut salut,

Alors ces erreurs :
Undefined index: couleur in D:\wamp\www\Tests\AjouterProduit.php on line 69
Notice: Undefined index: prix in D:\wamp\www\Tests\AjouterProduit.php on line 70
Notice: Undefined index: Reference in D:\wamp\www\Tests\AjouterProduit.php on line 71
Sont en générale présentent lorsque qu'on utilise un envoi GET ou POST et que le code ne reconnait pas l'indice du tableau POST. (exemple : $_POST['indice'] -> indice n'existe pas dans la variable POST)

En fait $_POST['nomindice'] , ici 'nomindice' correspond à l'attribut name du champ input de ton formulaire : 1ere erreur il ne reconnait pas 'couleur' car dans ton code le nom de l'input text correspondant est 'Couleur' (avec la majuscule) : $_POST['Couleur'] devrait fonctionner, pour prix c'est la même erreur, et Reference prend un accent dans ton formulaire. (évite les accent dans le code ça t'évitera des surprises).

Pour éviter ce genre d'erreur on aime bine vérifier l'instanciation des variables POST après soumission du formulaire et avant de les mettre en base de donnée :
if(isset($_POST['Couleur']) && !empty($_POST['Couleur'])){  
echo "est définit et non vide";  
}else{  
echo "n'est pas définit ou est vide";  
}  


Ensuite pour l'erreur en base de donnée :
INSERT INTO client_produit ( Categorie, Nom, Marque, Taille, couleur, prix, reference, Image, Disponibilité, Description) VALUES( 'v' , 'bn' , 'o' , '' , '' , '' , 'VB' , 'Votre description ici\r\ncccccccccccc' )

Tu précises dans la première parenthèse 10 champs pour la table client_produit (Categorie, Nom, Marque ... ) alors que dans la parenthèse après values tu as 8 valeurs. Il faut que chaque champ précisé ai une valeur dans values . Ce sont les champs Image et Categorie qui n'ont pas de valeur il me semble.

Si je n'ai pas été claire n'hésite pas.
Résolu? ===> [RESOLU]
0
Merci beaucoup vous etes très claire mais il reste une petite problème
c'est qu'après de faire déplacer l'image de son emplacement temporaire avec move_uploaded_file comment remplir le champ de l'image dans la table ???
Merci d'avance
0
Utilisateur anonyme
2 mai 2013 à 12:54
Ca dépend de comment vous avez fait votre table, le champ image attend quoi comme paramètre , un nom d'image? Un chemin entier?
0
pour moi je lui donne le type : 'Image' lonGblob NOT NULL ,
il attend un lien
0

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

Posez votre question
Tu veux insérer un lien? Parce que ce type de champ est généralement utilisé pour enregistrer des données binaire, de part le nombre de caractère qu'il permet d'insérer en base de donnée!

Résolu? ===> [RESOLU]
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
2 mai 2013 à 15:02
Salut !

Alors oui comme l'a dit Kyser, un blob contient des données binaires, donc si tu veux stocké un lien, un varchar devrait suffire !

Sinon, tu déclares un PDO et un sql_connect, et tu utilise le dernier. Je trouve ca bizarre !
Pour le reste, Kyser a tout dit ! :)
0