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 -
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. ajp55 Messages postés 482 Statut Membre 23
     
    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
  2. lionel-DIL Messages postés 1222 Date d'inscription   Statut Membre Dernière intervention   1 768
     
    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
  3. jeremy.s Messages postés 1248 Statut Membre 79
     
    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
  4. ajp55 Messages postés 482 Statut Membre 23
     
    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