Insertion en PHP/MYSQL

Résolu
Bonjour j'ai un problème pour insérer dans une base de données

Aprés avoir remplit tous les champs de texte et validé le formulaire aucune erreur ne s'affiche mais

lorsque je vérifie dans ma base de données aucune insertion n'a été prise en compte

HELP ME PLEASE ....

Voici l'interface du champ de texte


<!DOCTYPE html>
<html>
	<head> 
		<title> Test </title>
		<meta charset="utf-8"/>
	</head>
	<body>
		
			<form method="POST" action="ajout.php" class="">
				<div class="etape_1">

					<input type="hidden" name="id_finder" value="uniqid()" />
					<label> Nom </label>
					<input type="text" autocomplete="off" name="nom_finder" placeholder="Nom" required /><br/>
					<label> Prenom </label>
					<input type="text" name="prenom_finder" placeholder="Prénom" /><br/>
					<label> Adresse </label>			
					<input type="text"  name="addr_finder" placeholder="Où habitez-vous ?" /><br/>
					<label> Téléphone </label>
					<input type="text" autocomplete="off" name="tel_finder" placeholder="Numero de tél." required/><br/>
					<label> mail </label>
					<input type="mail"  autocomplete="off" name="mail_finder" placeholder="Email" /><br/>
					<input type="submit" value="Envoyer" name="envoyer"/>
				</div>

			</form>


			</body>
</html>


Voici la classe Connexion

<?php
	
	class Connexion{

		public static function getMysqlConnexion(){

			static $connexion;

			try{
				
					/* Connexion au Serveur */

					$connexion = new PDO('mysql:host=localhost;dbname=activfinddb','root','');
					
					// On émet une alerte a chaque fois qu'une requette a échoué

					$connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
					
					return $connexion;
								
				}catch(Exception $e){

					die(" Impossible d'accéder à la base de donnée ".$e->getMessage());

				}
		
		}	

	}

?>



Enfin Voici la classe qui permet de faire le traitement d'insertion


<?php

		getMysqlConnexion();

	class Finder{

		private $id_finder;
		private $nom_finder;
		private $prenom_finder;
		private $tel_finder;
		private $addr_finder;
		private $mail_finder;

				
			public function addFinder(){

				if (isset($_POST['envoyer'])) {
					# code...
				

			$recuperation = array(
				'id_finder'=>$id_finder,
				'nom_finder'=>$nom_finder,
				'prenom_finder'=>$prenom_finder,
				'tel_finder'=>$tel_finder,
				'addr_finder'=>$addr_finder,
				'mail_finder'=>$mail_finder
			);
			
			$insertion = $connexion->prepare('INSERT INTO finder(id_finder,nom_finder,prenom_finder,tel_finder,addr_finder,mail_finder) VALUES 
				(:id_finder,:nom_finder,:prenom_finder,:tel_finder,:addr_finder,:mail_finder)');

			$insertion->exec($recuperation);

			echo " Ajout effectué avec Succés ";
		
		}
		}
	
	}

?>



HELP Me ...

1 réponse

  1. Salut,

    Tu devrais pourtant avoir une erreur php "Call to undefined method" car ta variable $insertion qui correspond à une instance de la classe PSOStatement ne possède pas la méthode exec().
    Tu dois utiliser la méthode execute() pour exécuter une requête préparée :
    $insertion = $connexion->prepare('...');
    $insertion->execute($recuperation);
    


    Bonne journée
    1. Oui c'est vrai
      mais même si je le change cela me renvoie un nouvel erreur en me disant qu'il y'a un problème d'instanciation dans la classe Finder tout au début getMysqlConnexion()
    2. Peux tu copier le message d'erreur complet ainsi que le code source correspondant ?
      Es-tu sur que la classe Finder est bien inclue dans ton script ?
    3. voici le message d'erreur qui est affiché

      Fatal error: Call to undefined function getMysqlConnexion() in C:\wamp\www\ACTVFND\traitement\ajout.php on line 3
      Call Stack
      # Time Memory Function Location
      1 0.0005 250928 {main}( ) ..\ajout.php:0


      et voici le code correspondant

      
      <?php
      
      		getMysqlConnexion();
      
      	class Finder{
      
      			private $id_finder;
      			private $nom_finder;
      			private $prenom_finder;
      			private $tel_finder;
      			private $addr_finder;
      			private $mail_finder;
      
      				
      		public function addFinder(){
      
      
      			$recuperation = array(
      				'id_finder'=>$id_finder,
      				'nom_finder'=>$nom_finder,
      				'prenom_finder'=>$prenom_finder,
      				'tel_finder'=>$tel_finder,
      				'addr_finder'=>$addr_finder,
      				'mail_finder'=>$mail_finder
      			);
      			
      			$insertion = $connexion->prepare('INSERT INTO finder(id_finder,nom_finder,prenom_finder,tel_finder,addr_finder,mail_finder) VALUES 
      				(:id_finder,:nom_finder,:prenom_finder,:tel_finder,:addr_finder,:mail_finder)');
      
      			$insertion->execution($recuperation);
      
      			echo " Ajout effectué avec Succés ";
      		
      		}
      	
      	}
      
      ?>
      
    4. Tu ne peux pas appeler la méthode getMysqlConnexion() comme ceci, tu dois l'appeler via la classe Connexion.
      Cette connexion doit également être récupérer dans ta méthode qui ajoute les données, soit :
      <?php
      
      class Finder{
      
      	private $id_finder;
      	private $nom_finder;
      	private $prenom_finder;
      	private $tel_finder;
      	private $addr_finder;
      	private $mail_finder;
      
      	public function addFinder(){
      		if (isset($_POST['envoyer'])) {
      			# code...
      
      			// on récupère la connexion à la bdd
      			$connexion = Connexion::getMysqlConnexion();
      
      			$recuperation = array(
      				'id_finder'=>$id_finder,
      				'nom_finder'=>$nom_finder,
      				'prenom_finder'=>$prenom_finder,
      				'tel_finder'=>$tel_finder,
      				'addr_finder'=>$addr_finder,
      				'mail_finder'=>$mail_finder
      			);
      		
      			$insertion = $connexion->prepare('INSERT INTO finder(id_finder,nom_finder,prenom_finder,tel_finder,addr_finder,mail_finder) VALUES 
      			(:id_finder,:nom_finder,:prenom_finder,:tel_finder,:addr_finder,:mail_finder)');
      
      			$insertion->execute($recuperation);
      
      			echo " Ajout effectué avec Succés ";
      		}
      	}
      }
      
    5. Merci beaucoup pour l'information
      mais j'ai essayé le code que vous m'avez donné mais
      cela n'affiche pas le message " Ajout effectué avec Succés"
      et cela n'affiche aucune érreur
      mais cela je vérifie dans la base de données il y'a aucun ajout qui a été faite...