Probleme insertion dans bdd

Résolu/Fermé
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017 - Modifié par jordane45 le 17/12/2014 à 16:54
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017 - 18 déc. 2014 à 15:46
Bonjour,
j'ai une page en PHP avec un bouton qui affiche un pop up permettant d'ajouter un client. Donc infos a saisir dans le formulaire : nom entreprise, contact, num, etc.
j'ai créé une page traitement.php :.

<?php
  $cnx = mysql_connect( "localhost", "root", "root" );
  $db  = mysql_select_db( "actiline" ) ;
  $nom_ent = $_POST["nom_ent"] ;
  $nom_cl = $_POST["nom_cl"] ;
  $fonc  = $_POST["fonc"];
  $civ  = $_POST["civ"];
  $groupe = $_POST["fonction"];
  $contrat = $_POST["contrat"];
  $fixe  = $_POST["fixe"];
  $mob  = $_POST["mob"];
  $fax  = $_POST["fax"];
  $mail  = $_POST["mail"];
  $web  = $_POST["web"];
  $adr  = $_POST["adr"];
  $ville = $_POST["ville"];
  $cp  = $_POST["cp"];

  $sql = "INSERT  INTO client_tb ( nom_ent, nom_cl, fonc, civ, groupe, contrat, fixe, mob, fax, mail, web, adr, ville, cp)
            VALUES ( $nom_e, $nom_cl, $fonc, $civ, $groupe, $contrat, $fixe, $mob, $fax, $mail, $web, $adr, $ville, $cp) " ;
 
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;

  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
?>


lorsque je clic sur mon bouton valider j'obtiens :

( ! ) Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\Site\traitement.php on line 2
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0
2 0.0010 248696 mysql_connect ( ) ..\traitement.php:2

( ! ) Notice: Undefined index: nom_ent in C:\wamp\www\Site\traitement.php on line 4
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: nom_cl in C:\wamp\www\Site\traitement.php on line 5
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: fonc in C:\wamp\www\Site\traitement.php on line 6
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: civ in C:\wamp\www\Site\traitement.php on line 7
Call Stack

# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: fonction in C:\wamp\www\Site\traitement.php on line 8
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: contrat in C:\wamp\www\Site\traitement.php on line 9
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: fixe in C:\wamp\www\Site\traitement.php on line 10
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: mob in C:\wamp\www\Site\traitement.php on line 11
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: fax in C:\wamp\www\Site\traitement.php on line 12
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: mail in C:\wamp\www\Site\traitement.php on line 13
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: web in C:\wamp\www\Site\traitement.php on line 14
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: adr in C:\wamp\www\Site\traitement.php on line 15
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: ville in C:\wamp\www\Site\traitement.php on line 16
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined index: cp in C:\wamp\www\Site\traitement.php on line 17
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0

( ! ) Notice: Undefined variable: nom_e in C:\wamp\www\Site\traitement.php on line 20
Call Stack
# Time Memory Function Location
1 0.0010 248392 {main}( ) ..\traitement.php:0
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 ' , , , , , , , , , , , , )' at line 2







je tiens à préciser que je ne suis développeur à la base ^^
Help me !

EDIT : Ajout des balises de code (jordane)
A voir également:

3 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 17/12/2014 à 17:08
Bonjour,

1 - Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

2 - Ces messages ne sont "que" des alertes ....
Ca ne gène en rien le fonctionnement de tes scripts PHP.

Ils t'informent que tu as des variables non définies .... que tu utilises l'extension Mysql qui va devenir (peut être un jour) obsolète ....

Tu peux éventuellement désactiver l'affichage de ces messages d'erreur :
en plaçant cette ligne de code au début de tes pages :
error_reporting(E_ALL & ~E_NOTICE);


L'idéal serait tout de même de corriger certains de ces "notices" :
en vérifiant... avant de les utiliser.. que les variables existent :

if(isset($_POST)){
  $nom_ent = isset($_POST["nom_ent"])?$_POST["nom_ent"] :'';
  $nom_cl = isset($_POST["nom_cl"])? $_POST["nom_cl"] :'' ;
  $fonc  = isset($_POST["fonc"])?$_POST["fonc"]:'';  
  //etc...

}else{
 echo "<br> Aucune variable POST n'est disponible !<br>";

}




Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
17 déc. 2014 à 17:10
Merci pour le lien.
La création de variable s'effectue en même temps que la création de la table non ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
17 déc. 2014 à 17:34
La création de variable s'effectue en même temps que la création de la table non ?

Hein ???

$toto est une variable
$_POST est un "tableau" de variables
$_POST['titi'] est une variable (contenu dans $_POST)

Aucun rapport avec une table....
0
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
17 déc. 2014 à 18:01
Donc, je dois en premier temps déclarer mes variables, ensuite rappeler les données du formulaire et ensuite les envoyer dans la bdd.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
17 déc. 2014 à 18:08
Lorsque tu "submit" ton formulaire html... ça créé une variable $_POST contenant les différents champs de ton formulaire.
Il faut donc que tu récupères ces données.. pour ensuite les insérer dans ta BDD.

Tu le faisais déjà (en parti) lorsque tu écrivais par exemple :
 $nom_ent = $_POST["nom_ent"] ;

Mais pour plus de sécurité .. on vérifie d'abord que la variable $_POST["nom_ent"] existe AVANT de l'utiliser. Pour cela ... on utilise la fonction ISSET()

Testes le code que je t'ai posté (ci dessous) et dis moi si ça fonctionne
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 17/12/2014 à 17:40
Testes ce code :

<?php

// Desactiver les "notice"
//error_reporting(E_ALL & ~E_NOTICE);

// Connexion à la BDD
  $cnx = mysql_connect( "localhost", "root", "root" );
  $db  = mysql_select_db( "actiline" ) ;

//Fonction de récupération des variables POST
function getPost($variableName,$defaultValue=''){
  return isset($_POST[$variableName])?$_POST[$variableName]:$defaultValue;
}


//On vérifie qu'on a bien des données dans $_POST 
// Avant de continuer :

if(isset($_POST)){

// récupération des variables
  $nom_ent = getPost("nom_ent") ;
  $nom_cl = getPost("nom_cl") ;
  $fonc  = getPost("fonc");
  $civ  = getPost("civ");
  $groupe = getPost("fonction");
  $contrat = getPost("contrat");
  $fixe  = getPost("fixe");
  $mob  = getPost("mob");
  $fax  = getPost("fax");
  $mail  = getPost("mail");
  $web  = getPost("web");
  $adr  = getPost("adr");
  $ville = getPost("ville");
  $cp  = getPost("cp");

  $sql = "INSERT  INTO client_tb 
            ( nom_ent
            , nom_cl
              , fonc
              , civ
              , groupe
              , contrat
              , fixe
              , mob
              , fax
              , mail
              , web
              , adr
              , ville
              , cp )
            VALUES ( 
                '$nom_e'
                ,'$nom_cl'
                ,'$fonc'
                ,'$civ'
                ,'$groupe'
                ,'$contrat'
                ,'$fixe'
                ,'$mob'
                ,'$fax'
                ,'$mail'
                ,'$web'
                ,'$adr'
                ,'$ville'
                ,'$cp'
                ) " ;
 
  $requete = mysql_query($sql, $cnx) or die( mysql_error() . " <br> REQUETE : <pre>".$sql."</pre>" ) ;

  if($requete) {
    echo("<br>L'insertion a été correctement effectuée") ;
  } else {
    echo("<br>L'insertion à échouée") ;
  }
 
}else{
 echo "<pre>Aucune donnée présente dans _POST </pre>";
}



?>


Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
17 déc. 2014 à 18:05
Deux indications d'erreurs : une à la ligne 7 et une autre à la ligne 54.
le echo("<br>L'insertion a été correctement effectuée") ; apparait. Par contre dans la dbb il n'y a que l'ajout d'un no_client, le reste n'apparait pas.
0
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
18 déc. 2014 à 09:54
Voici mon formulaire :

<html>
	<head>
		<meta charset="utf-8" />
		<title>ActiLine</title>
		<link rel="stylesheet" href="style/style.css" />
	</head>
	
<body>
<form name="formulaire" action="traitement.php" method="POST"> 
		<input type="submit" value="Valider">
		<input type="button" value="Modifer">
	<table>
		<tr>
		<td>Entreprise</td>
		<td><input type="text" id="nom_ent"></td>
	     	<td>Fixe</td>
	      	<td><input type="text" id="fixe" /></td>
	    </tr>
		<tr>
		    <td>Contact </td>
		    <td><input type="text" id="nom_cl" /></td>
	      	<td> Mobile</td>
	     	<td><input type="text" id="mob" /></td>
	    </tr>
	    <tr>
	    	<td>Fonction</td>
	     	<td><input type="text" id="fonc" /> </td>
	    	<td>Fax</td>
	     	<td><input type="text" id="fax" /></td>
	    </tr>
	    <tr>
	      <td>Civilité</td>
	      <td><input name="civ" value="me" type="radio"> Madame 
	      	<input name="civ" value="me" type="radio"> Monsieur</td>
	      <td>Email</td>
	      <td> <input type="text" id="mail" /></td>
	    </tr>
	    <tr>
	      <td>Groupe</td>
	      <td><select> <option>Particulier</option>
			<option>Pro</option></select></td>
	      <td>Web</td>
	      <td> <input type="text" id="web" /></td>
	    </tr>
	     <tr>
	      <td>Contrat</td>
	      <td><input name="contrat" value="me" type="radio"> Oui
	      				<input name="contrat" value="me" type="radio"> Non</td>
	      <td>Adresse</td>
	      <td><input type="text" id="adr" /></td>
	    </tr>
	      <tr>
	      <td>Ville</td>
	      <td><input type="text" id="ville" /> </td>
	      <td>CP</td>
	      <td><input type="text" id="cp" /></td>
	    </tr>
		</table>
			
	
	<h3>historique</h3>
	<textarea name="commentaire" id="commentaire" rows="10" cols="50"></textarea>
</form>
</body>
</html>
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 déc. 2014 à 10:25
Bonjour,

Si tu fais un print_r($_POST); au début de ta page traitement.php .. tu vas voir qu'il y a un souci....
En effet... tes INPUT (dans ton formulaire) n'ont "que" des ID ...
<td><input type="text" id="nom_ent"></td>


hors... il leur faut aussi des "name"...

<td><input type="text" name = "nom_ent" id="nom_ent"></td>



0
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
18 déc. 2014 à 10:42
En ajoutant print_r($_POST); il m'indique : Array ( [nom_ent] => 5646 [fixe] => 868 [nom_cl] => 468468 [mob] => 464 [fonc] => 64 [fax] => 4 [mail] => [web] => [adr] => [ville] => [cp] => [commentaire] => )
Le id sert simplement pour le css ?
J'ai remplacé "id' par "name" comme tu me l'as indiqué et ça fonctionne.
Dans mon formulaire la partie "groupe" ne remonte pas, que mettre pour régler ce souci ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 déc. 2014 à 11:49
Je ne t'ai pas dit de remplacer l'un par l'autre .... mais d' AJOUTER le NAME ....
(regarde mon exemple)....
les ID sont peut être utilisés pour du JAVASCRIPT et/ou du CSS.....
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 18/12/2014 à 11:51
Pour la parti GROUPE .. il faut mettre des VALUE dans tes OPTION

<td>Groupe</td>
<td>
<select> 
<option value="particuler">Particulier</option>
<option value="Pro">Pro</option>
  </select></td>
0
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
18 déc. 2014 à 12:29
C'est noté pour l'utilisation de "id".
j'ai rajouté "value" comme dans l'exemple mais cela ne fonctionne pas. Ne faut il pas ajouter "name" comme pour les checkboxs ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 déc. 2014 à 12:38
Oui je n'avait pas tout regarde. .
il faut mettre un name sur le SELECT
0