Insertion en PHP/MYSQL

Résolu/Fermé
aliounemane2 Messages postés 28 Date d'inscription mardi 16 décembre 2014 Statut Membre Dernière intervention 5 octobre 2017 - 28 janv. 2015 à 00:58
aliounemane2 Messages postés 28 Date d'inscription mardi 16 décembre 2014 Statut Membre Dernière intervention 5 octobre 2017 - 30 janv. 2015 à 13:12
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 ...
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
28 janv. 2015 à 12:26
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
0
aliounemane2 Messages postés 28 Date d'inscription mardi 16 décembre 2014 Statut Membre Dernière intervention 5 octobre 2017
28 janv. 2015 à 13:25
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()
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
28 janv. 2015 à 14:11
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 ?
0
aliounemane2 Messages postés 28 Date d'inscription mardi 16 décembre 2014 Statut Membre Dernière intervention 5 octobre 2017
28 janv. 2015 à 14:45
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 ";
		
		}
	
	}

?>
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
28 janv. 2015 à 15:17
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 ";
		}
	}
}
0
aliounemane2 Messages postés 28 Date d'inscription mardi 16 décembre 2014 Statut Membre Dernière intervention 5 octobre 2017
28 janv. 2015 à 17:07
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...
0