INSERT INTO

Résolu/Fermé
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014 - 2 déc. 2014 à 13:05
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014 - 3 déc. 2014 à 23:20
Bonjour
J'ai fait quelque chose de très banal et ça ne fonctionne pas, ça me retourne aucune erreur et aucune entrée dans ma BDD.
Je veux simplement insérer des données dans ma BDD.
Mon formulaire se trouve dans le fichier inclue add_user.php
Ma connexion à ma BDD est bonne.
Pouvez-vous me donner votre avis sur ce qui cloche, en vous remerciant par avance.
<?php
$action = (isset($_GET['action']) ? $_GET['action'] : NULL);

	if($action == 'add') {
		if(isset($_POST['register'])) {
			$nom = Security::clean($_POST['nom']);
			$prenom = Security::clean($_POST['prenom']);
			$email = Security::clean($_POST['email']);

			
			$sql = 'INSERT INTO tb_adherent
			SET nom=:nom, prenom=:prenom, email=:email';
			
			$req = $bdd->prepare($sql);
		
			$req->bindParam('nom', $nom, PDO::PARAM_STR);
			$req->bindParam('prenom', $prenom, PDO::PARAM_STR);
			$req->bindParam('email', $email, PDO::PARAM_STR);

			
			$donnees = $req->execute();
			
			if($donnees == TRUE) {
				echo 'OK';
			}
		}
	require_once 'add_user.php';		
	}
?>

14 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
2 déc. 2014 à 13:35
Bonjour,

Je pense qu'il te manque les ":" devant tes variables dans ton BIND...

			$req->bindParam(':nom', $nom, PDO::PARAM_STR);
			$req->bindParam(':prenom', $prenom, PDO::PARAM_STR);
			$req->bindParam(':email', $email, PDO::PARAM_STR);

0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
2 déc. 2014 à 14:47
Bonjour
Merci de ton aide, mais malheureusement ça ne fonctionne toujours pas, il y a quelque chose mais quoi je ne vois toujours pas.
Si tu peux encore y jeter un oeil.
Merci
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
2 déc. 2014 à 15:44
Sans ta BDD .. et le reste de ton site.. comment veux tu que je teste ???

A la limite.. il faut essayer de debuguer en ajoutant des ECHO ...

En plus... tu utilises à la fois du POST et du GET ???

Essayes ceci
( j'ai changé ton IF par un SWITCH .. c'est plus propre...)

$action   =  isset($_POST['action']) ? $_POST['action'] : NULL;
$register = isset($_POST['register'])?$_POST['register']:NULL;

// Le temps des tests ...
echo "<br> Variables GET :";
print_r ($_GET);

echo "<br> Variables POST :";
print_r ($_POST);

switch($action){
  case 'add':
      if($register) {
			$nom = Security::clean($_POST['nom']);
			$prenom = Security::clean($_POST['prenom']);
			$email = Security::clean($_POST['email']);

			
			$sql = 'INSERT INTO tb_adherent
			SET nom=:nom, prenom=:prenom, email=:email';
			
			$req = $bdd->prepare($sql);
		
			$req->bindParam('nom', $nom, PDO::PARAM_STR);
			$req->bindParam('prenom', $prenom, PDO::PARAM_STR);
			$req->bindParam('email', $email, PDO::PARAM_STR);

			
			$donnees = $req->execute();
			
			if($donnees == TRUE) {
				echo 'OK';
			}
	} else{
              echo "<br> Error ! register =".$register ;
        }
	require_once 'add_user.php';		
     break;
   default:
     echo "<br> Error ! Action =".$action;
   break;
}

0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
2 déc. 2014 à 16:35
En fait après avoir testé ça me retourne

Variables GET :Array ( [body] => user [type] => admin )
Variables POST :Array ( )
Error ! Action =

Ma base de donnée j'ai 4 champs
id
nom
prenom
email

j'en suis au début le reste c'est que du design, j'ai simplement créé un lien pour afficher le formulaire
<div id="content">
	
	<form id="formulaire" action="" method="post">
        <fieldset>
            <legend>Ajouter un membre</legend>

		<table cellpadding="0" cellspacing="3">

			<tr>
				<th colspan="6">Coordonné :</th>
			</tr>
			<tr>
				<td width="20%">Nom :</td>
				<td width="30%"><input name="nom" class="content_input" size="30" type="text" value=""/></td>
				<td width="20%">Prénom :</td>
				<td width="30%"><input name="prenom" class="content_input" size="30" type="text" value=""/></td>
			</tr>
			<tr>
				<td width="20%">Adresse :</td>
				<td width="30%"><input name="adresse" class="content_input" size="30" type="text" value=""/></td>
			</tr>
			<tr>
				<td width="20%"><img src="image/mail.png" alt="Email" title="Email" height="22" width="22"/> Adresse mail :</td>
				<td width="30%"><input name="email" class="content_input" size="30" type="text" value=""/></td>
			</tr>

		</table>

<!--#######################################################################################################################################-->

			<input type="hidden" name="send"/>
			<input type="submit" name="register" class="submit" value="Enregistrer"/>
        </fieldset>
	</form>
</div>


Ton avis s'il te plait
Merci
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
2 déc. 2014 à 17:36
Tu as bien ton code PHP dans la même page que ton formulaire HTML ??

Sinon.. il faut que tu modifies ton FORM
<form id="formulaire" action="" method="post">


Par :
<form id="formulaire" action="chemin_vers_ton_fichier_PHP" method="post">
0

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

Posez votre question
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
2 déc. 2014 à 17:47
Tu peux tester ce code php ?

<?php
//----------------------------------------------------------------
//RECUPERATION DES VARIABLES POST
//----------------------------------------------------------------
$action   =  isset($_POST['action']) ? $_POST['action'] : NULL;
$register = isset($_POST['register'])?$_POST['register']:NULL;
$nom = isset($_POST['nom'])?Security::clean($_POST['nom']):'';
$prenom = isset($_POST['prenom'])?Security::clean($_POST['prenom']):'';
$email = isset($_POST['email'])?Security::clean($_POST['email']):'';

//----------------------------------------------------------------
// Le temps des tests ...
echo "<br> Variables GET :";
print_r ($_GET);

echo "<br> Variables POST :";
print_r ($_POST);
//----------------------------------------------------------------

// SI SUBMIT DU FORMULAIRE :
if isset($register){
	switch($action){
		case 'add':
				if($register) {			
					$sql = "INSERT INTO tb_adherent (nom,prenom,email)
					          VALUES(:nom,:prenom,:email)";
					$req = $bdd->prepare($sql);				
					$req->bindParam('nom', $nom, PDO::PARAM_STR);
					$req->bindParam('prenom', $prenom, PDO::PARAM_STR);
					$req->bindParam('email', $email, PDO::PARAM_STR);

					$donnees = $req->execute();
					if($donnees) {
						echo 'OK';
					}else{
					  echo 'ERREUR lors de l\'insertion';
					}
				} else{
					echo "<br> Error ! register =".$register ;
				}
			require_once 'add_user.php';		
			 break;
		 default:
			 echo "<br> Error ! Action =".$action;
		 break;
	}
}
?>


Et quand je dis tester .... tu remplis tes champs dans ton formulaire puis tu cliques sur ton bouton de submit....



0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
2 déc. 2014 à 18:36
ça me renvoie cette erreur

Parse error: syntax error, unexpected T_ISSET, expecting '(' in C

à la ligne 21
if isset($register){
.........
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
2 déc. 2014 à 18:45
oups.. il manque une parenthèse
if (isset($register)){ 
0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
2 déc. 2014 à 23:30
alors ça me retourne toutes les variables entrer dans le formulaire mais dans la BDD absolument rien
ça me retourne en dessous des variables ça Error ! Action =
Vraiment très bizarre pour quelques chose de relativement simple en principe.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
2 déc. 2014 à 23:34
Colles nous exactement ce que ça t'affiche stp
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
2 déc. 2014 à 23:37
Ton url.. elle a une variable action=add ??
Remet GET au lieu de POST pour la récupération de ACTION
0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 00:10
Voilà lorsque j'ai envoyé le formulaire

Variables GET :Array ( [body] => user [type] => admin )
Variables POST :Array ( [nom] => DUPOND[prenom] => Paul[email] => admin@yahoo.fr [send] => [register] => Enregistrer )
Error ! Action =

l'url
localhost/mon_site/index.php?body=user&type=admin
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 3/12/2014 à 00:17
Donc..tu n'as nul part de variable ACTION ....
d'où le problème. ....

ajoute dans ton formulaire html un input comme ceci :
<input type = "hidden" name="action" value="add">
0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
Modifié par troubadour3 le 3/12/2014 à 07:08
Bonjour
Malheureusement toujours aucun insert dans la BDD
Je te donne mon fichier complet
Merci
user.php
<?php
//----------------------------------------------------------------
//RECUPERATION DES VARIABLES POST
//----------------------------------------------------------------
$action   =  isset($_GET['action']) ? $_GET['action'] : NULL;
$register = isset($_POST['register'])?$_POST['register']:NULL;
$nom = isset($_POST['nom'])?Security::clean($_POST['nom']):'';
$prenom = isset($_POST['prenom'])?Security::clean($_POST['prenom']):'';
$email = isset($_POST['email'])?Security::clean($_POST['email']):'';

//----------------------------------------------------------------
// Le temps des tests ...
echo "<br> Variables GET :";
print_r ($_GET);

echo "<br> Variables POST :";
print_r ($_POST);
//----------------------------------------------------------------

// SI SUBMIT DU FORMULAIRE :
if (isset($register)){
 switch($action){
  case 'add':
    if($register) {   
     $sql = "INSERT INTO tb_adherent (nom,prenom,email)
               VALUES(:nom,:prenom,:email)";
     $req = $bdd->prepare($sql);    
     $req->bindParam(':nom', $nom, PDO::PARAM_STR);
     $req->bindParam(':prenom', $prenom, PDO::PARAM_STR);
     $req->bindParam(':email', $email, PDO::PARAM_STR);

     $donnees = $req->execute();
     if($donnees) {
      echo 'OK';
     }else{
       echo 'ERREUR lors de l\'insertion';
     }
    } else{
     echo "<br> Error ! register =".$register ;
    }
   require_once 'add_user.php';  
    break;
   default:
    echo "<br> Error ! Action =".$action;
   break;
 }
}
?>
<div id="content">
 <form id="formulaire" action="" method="post">
        <fieldset>
            <legend>Ajouter un membre</legend>

  <table cellpadding="0" cellspacing="3">

   <tr>
    <th colspan="6">Coordonné :</th>
   </tr>
   <tr>
    <td width="20%">Nom :</td>
    <td width="30%"><input name="nom" class="content_input" size="30" type="text" value=""/></td>
    <td width="20%">Prénom :</td>
    <td width="30%"><input name="prenom" class="content_input" size="30" type="text" value=""/></td>
   </tr>
   <tr>
    <td width="20%"><img src="image/mail.png" alt="Email" title="Email" height="22" width="22"/> Adresse mail :</td>
    <td width="30%"><input name="email" class="content_input" size="30" type="text" value=""/></td>
    <td width="20%"></td>
    <td width="30%"></td>
   </tr>
  </table>   
   <input type = "hidden" name="action" value="add"/>
   <input type="submit" name="register" class="submit" value="Enregistrer"/>

        </fieldset>
 </form>
</div>

le retour
Variables GET :Array ( [body] => user [type] => admin )
Variables POST :Array ( [nom] => DUPOND[prenom] => Paul[email] => admin@yahoo.fr [action] => add [register] => Enregistrer )
Error ! Action =
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
3 déc. 2014 à 08:32
Oui..mais là dans POST tu as bien action..
donc remet en POST dans la recup...
0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 09:30
Bonjour
He bien je t'ai suffisamment ennuyé, comme quoi il faut que j'apprenne à réfléchir un peu mieux.
En tout cas un grand merci et encore milles excuses, je n'aurai pas trouvé le fait qu'il fallait créé un input de type hidden pour créé l'action.
Merci
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
3 déc. 2014 à 09:52
On aurait pu aussi utiliser ton BOUTON
 <input type="submit" name="register" class="submit" value="Enregistrer"/>


Mais dans ce cas ... deux choix :
Changer la valeur en "add" au lieu de "enregistrer"
Soit changer dans le switch : case:"enregistrer"

Et quoi qu'il en soit... dans la récup des variables POST .. action serait devenu
$action   =  isset($_POST['register']) ? $_POST['register'] : NULL;


Voilou...

PS: Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 18:06
Bonjour
J'ai mis résolu, mais je viens de penser à une toute dernière question.
Je pensais à la validation du formulaire ça allait me renvoyer une Url de type

localhost/mon_site/index.php?action=add


Merci
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
3 déc. 2014 à 18:42
Et c'est quoi la question ?

Là.. tel que tu as écris ton code.. ton URL n'est pas modifiée .... elle conserve donc celle que tu as tel que tu arrives sur la page...
0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 19:11
Alors en fait ça sert à quoi le nom du paramétre "action" et sa valeur add ?
J'essai juste de comprendre.
moi sur ma page du traitement du formulaire l'Url se décompose ainsi

/index.php?body=add_user&type=admin

et lorsque je valide le formulaire je pensais que ça me retournerai cette Url en fait..

index.php?action=add

Merci
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 3/12/2014 à 19:16
Ben non... et pour quelle raison ça te ferait ça ?

Là.. actuellement... quand tu testes ton formulaire..ça te retourne quoi ???
0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 20:51
Non les INSERT dans la BDD c'est tout bon comme je te l'ai dit mais je voulais simplement faire une redirection à cette adresse

index.php?action=add
en affichant 'Le nouveau membre à bien été enregistré !';"

alors je pensais faire comme ça mais le message ne s'affiche pas alors je voulais juste comprendre.

header(Location: ndex.php?action=add');
echo 'Le nouveau membre à bien été enregistré !';
0
troubadour3 Messages postés 13 Date d'inscription dimanche 6 mai 2012 Statut Membre Dernière intervention 3 décembre 2014
3 déc. 2014 à 23:20
Merci

ok c'est tout bon je te remercie.
Cordialement
0