Insertion en PHP/MYSQL [Résolu/Fermé]

Signaler
Messages postés
28
Date d'inscription
mardi 16 décembre 2014
Statut
Membre
Dernière intervention
5 octobre 2017
-
Messages postés
28
Date d'inscription
mardi 16 décembre 2014
Statut
Membre
Dernière intervention
5 octobre 2017
-
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

Messages postés
2371
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2021
445
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
Messages postés
28
Date d'inscription
mardi 16 décembre 2014
Statut
Membre
Dernière intervention
5 octobre 2017

Voici le code que j'ai eu :

<?php

	class Finder{

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

				
		public function addFinder(){

			if (isset($_POST['bt_valider'])) {

				 /*$id_finder = $_POST['id_finder'];
				$nom_finder = $_POST['nom_finder'];
				$prenom_finder = $_POST['prenom_finder'];
				$tel_finder = $_POST['tel_finder'];
				$addr_finder = $_POST['addr_finder'];
				$mail_finder = $_POST['mail_finder'];*/

				$connexion = Connexion::getMysqlConnexion();
			
			// $_POST['id_finder']
			$recuperation = array(
				'id_finder'=>uniqid(),
				'nom_finder'=>$_POST['nom_finder'],
				'prenom_finder'=>$_POST['prenom_finder'],
				'tel_finder'=>$_POST['tel_finder'],
				'addr_finder'=>$_POST['addr_finder'],
				'mail_finder'=>$_POST['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 ";
		
			}

		}
	
	}

?>

Messages postés
2371
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2021
445
Le traitement de ton formulaire est fait par le fichier ajout.php, quel est le code de se fichier ?
Il devrait normalement instancier ta classe Finder et appeler la méthode addFinder().
Messages postés
28
Date d'inscription
mardi 16 décembre 2014
Statut
Membre
Dernière intervention
5 octobre 2017

le code de ce fichier ajout.php est le dernier code que je vous es envoyé
Messages postés
2371
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2021
445
Il faut inclure tes classes, instancier un objet Finder et appeler la méthode addFinder() !

Par convention les fichiers php contenant des classes ne devrait rien contenir d'autre. Je te propose donc la solution suivante :

1. Renomme le fichier contenant la classe Finder en finder.class.php
2. Renomme le fichier contenant la classe Connexion en connexion.class.php
3. Crée un nouveau fichier nommé ajout.php :
<?php
// ajout.php
require 'connexion.class.php';
require 'finder.class.php';

$finder = new Finder();
$finder->addFinder();

Messages postés
28
Date d'inscription
mardi 16 décembre 2014
Statut
Membre
Dernière intervention
5 octobre 2017

ok merci beaucoup pour l'information