PHP connexion à une base de données + ajout de données
lionel-DIL
Messages postés
1222
Date d'inscription
Statut
Membre
Dernière intervention
-
ajp55 Messages postés 482 Statut Membre -
ajp55 Messages postés 482 Statut Membre -
Bonjour,
Je cherche à ajouter, en objet, des données (provenant d'un formulaire de contact) en base de données SQL.
Voici mon script de connexion :
Maintenant, dans la partie du script de la page de contact, je dois faire l'ajout (et là je bloque):
Je cherche à créer une class pour ajouter des données d'un formulaire, dans la base :
Je ne suis même pas sûr que ce soit bon.
Et après je sèche.
Je suis très débutant en objet ( pas en PHP, mais en objet oui). Je saurais le faire sans objet, mais là, j'ai envie de m'y mettre.
Un peu d'aide ?
Thanks.
--
Avant de poser une question, assurez-vous que la réponse ne soit pas déjà sur google.fr
Je cherche à ajouter, en objet, des données (provenant d'un formulaire de contact) en base de données SQL.
Voici mon script de connexion :
<?php
class Bdd {
private $bdd;
function __construct() {
try { //Connexion à la base
$dns = 'mysql:host=localhost;dbname=base-test';
$utilisateur = 'root';
$motDePasse = 'root';
$connection = new PDO( $dns, $utilisateur, $motDePasse );
$connection->query("SET NAMES utf8");
}
catch ( Exception $e ) { //si erreurs
echo "Connection à MySQL impossible : ", $e->getMessage();
die();
}
$this->bdd = $connection;
}
function getBdd() {
return $this->bdd; //Return object
}
}
?>
Maintenant, dans la partie du script de la page de contact, je dois faire l'ajout (et là je bloque):
Je cherche à créer une class pour ajouter des données d'un formulaire, dans la base :
class MessageContact {
private $bdd;
private $message_contact;
public function __construct($pBdd, $pMessage) {
$this->bdd = $pBdd;
$this->message_contact = $pMessage;
}
public function sendMessageToBase(){
$query = $this->bdd->prepare("INSERT INTO 'base-test'.'contact' ('email','nom_contact','prenom_contact','societe_contact','date','heure','telephone','message','adresse_ip') VALUES ('$email','$nom','$prenom','$societe','$date','$heure','$tel','$message','$ip') ");
$query->execute(array($pCategoryId));
$data = $query->fetchAll();
return $data;
}
}
Je ne suis même pas sûr que ce soit bon.
Et après je sèche.
Je suis très débutant en objet ( pas en PHP, mais en objet oui). Je saurais le faire sans objet, mais là, j'ai envie de m'y mettre.
Un peu d'aide ?
Thanks.
--
Avant de poser une question, assurez-vous que la réponse ne soit pas déjà sur google.fr
4 réponses
-
public function sendMessageToBase(){ $query = $this->bdd->prepare("INSERT INTO 'base-test'.'contact' (email,nom_contact,prenom_contact,societe_contact,date,heure,telephone,message','adresse_ip') VALUES (:email,:nom,:prenom,:societe,:date,:heure,:tel,:message,:ip) "); $query->execute(array('email' =>$email,'nom'=>$nom,'prenom'=>$prenom,'societe'=>$society,'date'=>$date,'heure'=>$heur,'tel'=>$tel,'message'=>$message,'ip'=>$ip)); }
l'idée c'est de voir comment tu va remplir ces variable $nom, $ip, $date etc..
avant de les passe dans le tableau. Tu n'as pas besoin d'un fetchAll quand tu fai simplement un insert. -
Ok, je comprends un peu.
Mais après, je dois appeler la fonction créée ?
public function sendMessageToBase(){ $query = $this->bdd->prepare("INSERT INTO 'base-test'.'contact' (email,nom_contact,prenom_contact,societe_contact,date,heure,telephone,message,adresse_ip) VALUES (:email,:nom,:prenom,:societe,:date,:heure,:tel,:message,:ip) "); $query->execute(array('email' =>$email,'nom'=>$nom,'prenom'=>$prenom,'societe'=>$societe,'date'=>$date,'heure'=>$heure,'tel'=>$tel,'message'=>$message,'ip'=>$ip)); } $contactmessage = new sendMessageToBase();
Je ne lui passe pas de paramètres ?
Avant de poser une question, assurez-vous que la réponse ne soit pas déjà sur google.fr -
Salut !
Mmh ta fonction me parrait un peu bizarre !
Mais un bon point ! Enfin quelqu'un qui utilise PDO Hihi
Sinon,
En général, ce genre de fonction est appelé un manager (il permet de faire des opérations dans la BDD dans une architecture Models / Views / Controllers )
Donc moi à ta place je ferais :
public class MessageContact{ private $_bd; public function __construct($bd){ $this->_bd = $bd; } // Passe lui direct ton $_POST en faisant gaffe à bien mettre les bons nom ! public function SendMessageToBase($tabInfos){ $query = $this->bdd->prepare("INSERT INTO 'base-test'.'contact' (email,nom_contact,prenom_contact,societe_contact,date,heure,telephone,message,adresse_ip) VALUES (:email,:nom,:prenom,:societe,:date,:heure,:tel,:message,:ip) "); $query->execute($tabInfos); } }
A voir si c'est juste ! -
l'exemple de jeremy.s répond à ta question en ce qui concerne les paramètre. l'idée c'est de voir où tu initialisera ton array que tu passes à execute.