PHP connexion à une base de données + ajout de données

Fermé
lionel-DIL Messages postés 1222 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 7 août 2014 - 19 avril 2013 à 11:40
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 - 21 avril 2013 à 13:56
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 :

<?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.

4 réponses

ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
19 avril 2013 à 13:07
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.
0
lionel-DIL Messages postés 1222 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 7 août 2014 1 767
Modifié par lionel-DIL le 19/04/2013 à 15:07
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
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
19 avril 2013 à 15:05
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 !
0
ajp55 Messages postés 426 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 17 février 2015 23
21 avril 2013 à 13:56
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.
0