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

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.

--
Avant de poser une question, assurez-vous que la réponse ne soit pas déjà sur google.fr

4 réponses

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