INSERT INTO

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - Modifié par ^Abel^ le 12/12/2014 à 14:18
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 12 déc. 2014 à 22:52
Bonjour à tous,
J'aurai aimer faire mon site en POO, mais malheureusement trop compliqué pour moi, alors j'ai fait comme ça en mettant toutes mes variables dans un tableau avec un switch pour insérer, modifier etc....et le tout en requète préparée, avec également mes variables sécurisée.
Pourquoi à votre avis aucune donnée ne s'insére dans ma BDD en sachant que ma connexion à ma BDD est bonne, mes variables de mon formulaire est ok aussi.
Aucune erreur n'est retournée, j'aurai oublié quelque chose, merci vraiment si vous pouvez passer quelque instant sur mon script.
Merci
$PARAM = array
	(
		'ID_ADHERENT'		=> isset($_REQUEST['id_adherent']) ? $_REQUEST['id_adherent'] : '',
		'NOM'				=> isset($_POST['nom']) ? Security::clean(strtoupper($_POST['nom'])) : '',
		'PRENOM'			=> isset($_POST['prenom']) ? Security::clean(ucfirst($_POST['prenom'])) : '',
		'EMAIL'				=> isset($_POST['email']) ? Security::clean($_POST['email']) : '',		
		'NAISSANCE'			=> isset($_POST['naissance_3']) ? Security::clean($_POST['naissance_3']) . '-' .  Security::clean($_POST['naissance_2']) . '-' .  Security::clean($_POST['naissance_1']) : '',
		'FIXE'				=> isset($_POST['fixe']) ? $_POST['fixe'] : '',
		'MOBILE'			=> isset($_POST['mobile']) ? $_POST['mobile'] : '',
		'ADRESSE' 			=> isset($_POST['adresse']) ? Security::clean(ucfirst($_POST['adresse'])) : '',
		'LIEU_DIT'			=> isset($_POST['lieu_dit']) ? Security::clean(ucfirst($_POST['lieu_dit'])) : '',
		'CODE_POSTAL' 		=> isset($_POST['code_postal']) ? $_POST['code_postal'] : '',
		'VILLE'				=> isset($_POST['ville']) ? Security::clean(strtoupper($_POST['ville'])) : '',
		'PSEUDO'			=> isset($_POST['pseudo']) ? Security::clean(strtolower($_POST['pseudo'])) : '',
		'PASSWORD'			=> isset($_POST['password']) ? Security::clean(Security::hash($_POST['password'])) : '',
		'ACTIF'				=> isset($_POST['actif']) ? Security::clean(strtolower($_POST['actif'])) : '',
		'DEBUT'				=> isset($_POST['debut']) ? Security::clean(strtolower($_POST['debut'])) : '',
		'FIN'				=> isset($_POST['fin']) ? Security::clean(strtolower($_POST['fin'])) : '',
		'TOKEN'				=> isset($_POST['token']) ? Security::clean($_POST['token']) : ''
	);
	
if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) {
	
	switch($_REQUEST['action']) {
		
		case 'ajouter':
			$sql = 'INSERT INTO tb_adherent (nom, prenom, email, naissance, fixe, mobile, adresse, lieu_dit, code_postal, ville, pseudo, password, actif, debut, fin, token) VALUES (:nom, :prenom, :email, :naissance, :fixe, :mobile, :adresse, :lieu_dit, :code_postal, :ville, :pseudo, :password, :actif, :debut, :fin, :token)';
			$requete = $bdd->prepare($sql);
			$requete->bindParam(':nom', 			$PARAM['NOM']);
			$requete->bindParam(':prenom', 		$PARAM['PRENOM']);
			$requete->bindParam(':email',		$PARAM['EMAIL']);
			$requete->bindParam(':naissance', 	$PARAM['NAISSANCE']);
			$requete->bindParam(':fixe', 		$PARAM['FIXE']);
			$requete->bindParam(':mobile', 		$PARAM['MOBILE']);
			$requete->bindParam(':adresse', 		$PARAM['ADRESSE']);
			$requete->bindParam(':lieu_dit', 	$PARAM['LIEU_DIT']);
			$requete->bindParam(':code_postal', 	$PARAM['CODE_POSTAL']);
			$requete->bindParam(':ville', 		$PARAM['VILLE']);			
			$requete->bindParam(':pseudo',		$PARAM['PSEUDO']);
			$requete->bindParam(':password',		$PARAM['PASSWORD']);
			$requete->bindParam(':actif',		$PARAM['ACTIF']);	
			$requete->bindParam(':debut',		$PARAM['DEBUT']);
			$requete->bindParam(':fin',			$PARAM['FIN']);
			$requete->bindParam(':token',		$PARAM['TOKEN']);
			$requete->execute();
			
			header('Location: index.php?body=compte_profil&type=compte');
			break;
	}
}

5 réponses

jordane45 Messages postés 38312 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié par jordane45 le 12/12/2014 à 14:30
Bonjour,

Il faut, lorsqu'on a des soucis et qu'on ne sait pas où ça se trouve.. faire du DEBOGAGE.
Et pour ça .. on fait des ECHO .. des PRINT des PRINT_R .....
On ajoute des tests .. IF/else ... etc...

Bref.. essayes ça :


<?php

$PARAM = array
 (
  'ID_ADHERENT'  => isset($_REQUEST['id_adherent']) ? $_REQUEST['id_adherent'] : '',
  'NOM'    => isset($_POST['nom']) ? Security::clean(strtoupper($_POST['nom'])) : '',
  'PRENOM'   => isset($_POST['prenom']) ? Security::clean(ucfirst($_POST['prenom'])) : '',
  'EMAIL'    => isset($_POST['email']) ? Security::clean($_POST['email']) : '',  
  'NAISSANCE'   => isset($_POST['naissance_3']) ? Security::clean($_POST['naissance_3']) . '-' .  Security::clean($_POST['naissance_2']) . '-' .  Security::clean($_POST['naissance_1']) : '',
  'FIXE'    => isset($_POST['fixe']) ? $_POST['fixe'] : '',
  'MOBILE'   => isset($_POST['mobile']) ? $_POST['mobile'] : '',
  'ADRESSE'    => isset($_POST['adresse']) ? Security::clean(ucfirst($_POST['adresse'])) : '',
  'LIEU_DIT'   => isset($_POST['lieu_dit']) ? Security::clean(ucfirst($_POST['lieu_dit'])) : '',
  'CODE_POSTAL'   => isset($_POST['code_postal']) ? $_POST['code_postal'] : '',
  'VILLE'    => isset($_POST['ville']) ? Security::clean(strtoupper($_POST['ville'])) : '',
  'PSEUDO'   => isset($_POST['pseudo']) ? Security::clean(strtolower($_POST['pseudo'])) : '',
  'PASSWORD'   => isset($_POST['password']) ? Security::clean(Security::hash($_POST['password'])) : '',
  'ACTIF'    => isset($_POST['actif']) ? Security::clean(strtolower($_POST['actif'])) : '',
  'DEBUT'    => isset($_POST['debut']) ? Security::clean(strtolower($_POST['debut'])) : '',
  'FIN'    => isset($_POST['fin']) ? Security::clean(strtolower($_POST['fin'])) : '',
  'TOKEN'    => isset($_POST['token']) ? Security::clean($_POST['token']) : ''
 );
 
 // le temps des tests :
 echo "<pre>";
 print_r($PARAM);
 echo "</pre>";

 echo "<pre>";
 print_r($_POST);
 echo "</pre>";
 
 echo "<pre>";
 print_r($_REQUEST);
 echo "</pre>";
 
if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) {
 
 switch($_REQUEST['action']) {
  
  case 'ajouter':
   try{
    //-------------------------------------------------------------
    // Presentee de cette maniere.. la requête est plus lisible :
    //------------------------------------------------------------- 
    $sql = 'INSERT INTO tb_adherent 
            ( nom
            , prenom
            , email
            , naissance
            , fixe
            , mobile
            , adresse
            , lieu_dit
            , code_postal
            , ville
            , pseudo
            , password
            , actif
            , debut
            , fin
            , token
            ) 
        VALUES ( :nom
            , :prenom
            , :email
            , :naissance
            , :fixe
            , :mobile
            , :adresse
            , :lieu_dit
            , :code_postal
            , :ville
            , :pseudo
            , :password
            , :actif
            , :debut
            , :fin
            , :token
           )';
     $requete = $bdd->prepare($sql);
     $requete->bindParam(':nom',    $PARAM['NOM']);
     $requete->bindParam(':prenom',   $PARAM['PRENOM']);
     $requete->bindParam(':email',  $PARAM['EMAIL']);
     $requete->bindParam(':naissance',  $PARAM['NAISSANCE']);
     $requete->bindParam(':fixe',   $PARAM['FIXE']);
     $requete->bindParam(':mobile',   $PARAM['MOBILE']);
     $requete->bindParam(':adresse',   $PARAM['ADRESSE']);
     $requete->bindParam(':lieu_dit',  $PARAM['LIEU_DIT']);
     $requete->bindParam(':code_postal',  $PARAM['CODE_POSTAL']);
     $requete->bindParam(':ville',   $PARAM['VILLE']);   
     $requete->bindParam(':pseudo',  $PARAM['PSEUDO']);
     $requete->bindParam(':password',  $PARAM['PASSWORD']);
     $requete->bindParam(':actif',  $PARAM['ACTIF']); 
     $requete->bindParam(':debut',  $PARAM['DEBUT']);
     $requete->bindParam(':fin',   $PARAM['FIN']);
     $requete->bindParam(':token',  $PARAM['TOKEN']);
     $requete->execute();
    if($requete){
     header('Location: index.php?body=compte_profil&type=compte');
    }else{
      echo "Erreur dans l'execution de la requête";
    }
      } catch(Exception $e){
         echo "<br>Erreur :".$e. "<br><pre> Requête :<br>".$sql."</pre>";
      }
   break;
   
  default:
   echo "Action = " .$_REQUEST['action'];
  break;
 } // fin du switch
}else{
  echo "action : vide ou n'existe pas";
}





?>




Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
12 déc. 2014 à 15:18
Bonjour
Merci pour tes conseils j'ai pu trouver ce qui n'allait pas en fait j'avais oublié de mettre cet input dans mon formulaire
<input name="action" value="ajouter" type="hidden" />


J'ai voulu faire 2 conditions je n'arrive pas à les incorporer dans le script peux tu m'aider s'il te plait je les ai mis en dessous de la case ajouter mais aucun résultat.
les 5 champs ne peuvent être vide
et si le login existe déjà
c'est mes 2 seul condition que je souhaiterai avoir.
Merci
if(empty($nom) || empty($prenom) || empty($pseudo) || empty($password) || empty($debut)) {
	echo "Veuillez entrer les 5 champs obligatoirs<br/> ( Nom, Prénom, Login, Mot de passe et l'année Début )";
} else {}

if(!empty($'pseudo)) {
	echo 'Ce Login est déjà utilisé.';
} else {}
0
jordane45 Messages postés 38312 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
12 déc. 2014 à 16:31
je les ai mis en dessous de la case ajouter mais aucun résultat.

Merci de nous montrer le code ainsi modifié.

NB : Par contre....ta deuxième fonction... tu as une quote en trop ..
if(!empty($'pseudo))
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
12 déc. 2014 à 18:16
Bonjour
Je ne comprend pas bien j'ai essayé plusieurs conditions mais je n'y arrive pas juste 1 condition ça va mais plusieurs j'ai du mal.
J'ai fait une première condition pour ne pas insérer 2 fois le même membre.
Ensuite je voudrais pouvoir mettre si le pseudo existe déjà
if(!empty($donnees['pseudo'])) {
	echo 'Ce Login est déjà utilisé.';
} else {}

et une condition afin de rendre obligatoire 5 champs
if(empty($nom) || empty($prenom) || empty($pseudo) || empty($password) || empty($debut)) {
	echo "Veuillez entrer les 5 champs obligatoirs<br/> ( Nom, Prénom, Login, Mot de passe et l'année Début )";
} else {}

mon code
if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) {

	switch($_REQUEST['action']) {

		case 'ajouter':

		//on sélectionne la table utilisateur et on cherche toutes les personnes portant le même nom et prénom et qui est membre actif
		$resultats = $bdd->query("SELECT * FROM tb_adherent 
			WHERE nom = '". $PARAM['NOM'] ."' 
			AND prenom = '". $PARAM['PRENOM'] ."'
			AND actif = '1'");
		//on recupére le resultat de la requète dans un tableau $donnees
		$donnees = $resultats->fetch(PDO::FETCH_ASSOC);
		//si le nom est vide on insert...
		if (empty ($donnees['nom'])) {

			$sql = 'INSERT INTO tb_adherent
						(nom,
						prenom,
						email,
						naissance,
						fixe,
						mobile,
						adresse,
						lieu_dit,
						code_postal,
						ville,
						pseudo,
						password,
						actif,
						debut,
						fin,
						token)
					VALUES
						(:nom,
						:prenom,
						:email,
						:naissance,
						:fixe,
						:mobile,
						:adresse,
						:lieu_dit,
						:code_postal,
						:ville,
						:pseudo,
						:password,
						:actif,
						:debut,
						:fin,
						:token)';
			$requete = $bdd->prepare($sql);
			$requete->bindParam(':nom', 			$PARAM['NOM']);
			$requete->bindParam(':prenom', 		$PARAM['PRENOM']);
			$requete->bindParam(':email',		$PARAM['EMAIL']);
			$requete->bindParam(':naissance', 	$PARAM['NAISSANCE']);
			$requete->bindParam(':fixe', 		$PARAM['FIXE']);
			$requete->bindParam(':mobile', 		$PARAM['MOBILE']);
			$requete->bindParam(':adresse', 		$PARAM['ADRESSE']);
			$requete->bindParam(':lieu_dit', 	$PARAM['LIEU_DIT']);
			$requete->bindParam(':code_postal', 	$PARAM['CODE_POSTAL']);
			$requete->bindParam(':ville', 		$PARAM['VILLE']);			
			$requete->bindParam(':pseudo',		$PARAM['PSEUDO']);
			$requete->bindParam(':password',		$PARAM['PASSWORD']);
			$requete->bindParam(':actif',		$PARAM['ACTIF']);	
			$requete->bindParam(':debut',		$PARAM['DEBUT']);
			$requete->bindParam(':fin',			$PARAM['FIN']);
			$requete->bindParam(':token',		$PARAM['TOKEN']);
			$requete->execute();

		} else {		 
			echo "Ce membre existe déjà....";
		}
		break;
	}
}
0
jordane45 Messages postés 38312 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié par jordane45 le 12/12/2014 à 18:50
Ce code là .. il fonctionne ?
( pour vérifier si le user existe déjà..)

Donc ton souci ça serait seulement de rajouter la vérification que les champs ne sont pas vide c'est ça ???


if(empty($nom) || empty($prenom) || empty($pseudo) || empty($password) || empty($debut)) {
 echo "<br>Veuillez entrer les 5 champs obligatoirs<br/> ( Nom, Prénom, Login, Mot de passe et l'année Début )";
}else{
if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) {

 switch($_REQUEST['action']) {

  case 'ajouter':

  //on sélectionne la table utilisateur et on cherche toutes les personnes portant le même nom et prénom et qui est membre actif
  $resultats = $bdd->query("SELECT * FROM tb_adherent 
   WHERE nom = '". $PARAM['NOM'] ."' 
   AND prenom = '". $PARAM['PRENOM'] ."'
   AND actif = '1'");
  //on recupére le resultat de la requète dans un tableau $donnees
  $donnees = $resultats->fetch(PDO::FETCH_ASSOC);
  //si le nom est vide on insert...
  if (empty ($donnees['nom'])) {

   $sql = 'INSERT INTO tb_adherent
      (nom,
      prenom,
      email,
      naissance,
      fixe,
      mobile,
      adresse,
      lieu_dit,
      code_postal,
      ville,
      pseudo,
      password,
      actif,
      debut,
      fin,
      token)
     VALUES
      (:nom,
      :prenom,
      :email,
      :naissance,
      :fixe,
      :mobile,
      :adresse,
      :lieu_dit,
      :code_postal,
      :ville,
      :pseudo,
      :password,
      :actif,
      :debut,
      :fin,
      :token)';
   $requete = $bdd->prepare($sql);
   $requete->bindParam(':nom',    $PARAM['NOM']);
   $requete->bindParam(':prenom',   $PARAM['PRENOM']);
   $requete->bindParam(':email',  $PARAM['EMAIL']);
   $requete->bindParam(':naissance',  $PARAM['NAISSANCE']);
   $requete->bindParam(':fixe',   $PARAM['FIXE']);
   $requete->bindParam(':mobile',   $PARAM['MOBILE']);
   $requete->bindParam(':adresse',   $PARAM['ADRESSE']);
   $requete->bindParam(':lieu_dit',  $PARAM['LIEU_DIT']);
   $requete->bindParam(':code_postal',  $PARAM['CODE_POSTAL']);
   $requete->bindParam(':ville',   $PARAM['VILLE']);   
   $requete->bindParam(':pseudo',  $PARAM['PSEUDO']);
   $requete->bindParam(':password',  $PARAM['PASSWORD']);
   $requete->bindParam(':actif',  $PARAM['ACTIF']); 
   $requete->bindParam(':debut',  $PARAM['DEBUT']);
   $requete->bindParam(':fin',   $PARAM['FIN']);
   $requete->bindParam(':token',  $PARAM['TOKEN']);
   $requete->execute();

  } else {   
   echo "Ce membre existe déjà....";
  }
  break;
 }
   }
}
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
12 déc. 2014 à 19:25
Bonjour
Merci de ton aide, je vais commencer par mettre une condition si le pseudo existe déjà voilà ce que j'ai fait par contre ça affiche bien l'erreur si un pseudo existe déjà mais ça INSERT quand même dans la BDD
if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) {

	switch($_REQUEST['action']) {

		case 'ajouter':

		//on sélectionne la table utilisateur et on cherche toutes les personnes portant le même nom et prénom et qui est membre actif
		$resultats = $bdd->query("SELECT * FROM tb_adherent 
			WHERE nom = '". $PARAM['NOM'] ."' 
			AND prenom = '". $PARAM['PRENOM'] ."'
			AND actif = '1'");
		//on recupére le resultat de la requète dans un tableau $donnees
		$donnees = $resultats->fetch(PDO::FETCH_ASSOC);
		//si le nom est vide on insert...
		if (empty ($donnees['nom'])) {

		$verif = $bdd->prepare('SELECT pseudo FROM tb_adherent WHERE pseudo = :pseudo');
		$verif->execute(array('pseudo' => $_POST['pseudo']));
		$count = $verif->rowCount();
		if ($count > 0) {
			echo 'Votre Pseudo est déjà utilisé, veuillez en choisir un autre...<br/>';
		}

			$sql = 'INSERT INTO tb_adherent
						(nom,
						prenom,
						email,
						naissance,
						fixe,
						mobile,
						adresse,
						lieu_dit,
						code_postal,
						ville,
						pseudo,
						password,
						actif,
						debut,
						fin,
						token)
					VALUES
						(:nom,
						:prenom,
						:email,
						:naissance,
						:fixe,
						:mobile,
						:adresse,
						:lieu_dit,
						:code_postal,
						:ville,
						:pseudo,
						:password,
						:actif,
						:debut,
						:fin,
						:token)';
			$requete = $bdd->prepare($sql);
			$requete->bindParam(':nom', 			$PARAM['NOM']);
			$requete->bindParam(':prenom', 		$PARAM['PRENOM']);
			$requete->bindParam(':email',		$PARAM['EMAIL']);
			$requete->bindParam(':naissance', 	$PARAM['NAISSANCE']);
			$requete->bindParam(':fixe', 		$PARAM['FIXE']);
			$requete->bindParam(':mobile', 		$PARAM['MOBILE']);
			$requete->bindParam(':adresse', 		$PARAM['ADRESSE']);
			$requete->bindParam(':lieu_dit', 	$PARAM['LIEU_DIT']);
			$requete->bindParam(':code_postal', 	$PARAM['CODE_POSTAL']);
			$requete->bindParam(':ville', 		$PARAM['VILLE']);			
			$requete->bindParam(':pseudo',		$PARAM['PSEUDO']);
			$requete->bindParam(':password',		$PARAM['PASSWORD']);
			$requete->bindParam(':actif',		$PARAM['ACTIF']);	
			$requete->bindParam(':debut',		$PARAM['DEBUT']);
			$requete->bindParam(':fin',			$PARAM['FIN']);
			$requete->bindParam(':token',		$PARAM['TOKEN']);
			$requete->execute();

		} else {		 
			echo "Ce membre existe déjà....<br/>";
		}
		break;
	}
}
0

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

Posez votre question
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
12 déc. 2014 à 22:52
Bonjour
Merci j'ai résolu mon problème.
Cordialement
0