Connexion PDO [Résolu]

Signaler
Messages postés
42
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
10 juin 2013
-
Messages postés
42
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
10 juin 2013
-
Bonjour

je voudrais créer une classe connexion à ma bd MySql et une autre classe qui vas contenir toutes mes requêtes.
Pour le le moment j'ai ça :

try {
  $dns = 'mysql:host=localhost;dbname=**';
  $utilisateur = 'root';
  $motDePasse = '';
 
  // Options de connection
  $options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8"
  );
 
  // Initialisation de la connection
  $db = new PDO( $dns, $utilisateur, $motDePasse, $options );
} catch ( Exception $e ) {
  echo "Connection à MySQL impossible : ", $e->getMessage();
  die();
}


//classe Requête

class requetes 
{

 function selectUnProjet($id)
 {
    echo $id;
    $resultats= $db->query("SELECT * FROM projets WHERE No=".$id); 
    $resultats->setFetchMode(PDO::FETCH_OBJ);
    while($ligne = $resultats->fetch()) 
    {
      echo "allo".  $return = $this->cleanRow($ligne);
    }
    
     $result->free();
     echo $return;
     return $return;
 }
    
}


//index

$req = new requetes();
$section = $req->selectUnProjet($_GET['noProjet']);


il n' y a rien qui fonction, je suis pas mal perdu, j'aurais vraiment besoin d'un coup main

merci
A voir également:

9 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
17
j'ai testé ainsi sur une base

<?php
class requetes extends PDO{
        
    private $dbh;
    
    public function __construct($dsn,$username=null,$password,$options=null){
          
          $this->dbh = parent::__construct($dsn,$username,$password,$options);
    }
    
    public function selectUnProjet($id){
        
        //echo $id;
        $sql = "SELECT * FROM eleve WHERE ideleve='".$id."'";
        try {
        $stmt = $this->query($sql);
        $result = $stmt->setFetchMode(PDO::FETCH_NUM);
        while ($row = $stmt->fetch()) {
        print $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
        }
        }
        catch (PDOException $e) {
        print $e->getMessage();
        }
               
        
        /*
        
        $resultats = $this->query("SELECT * FROM eleve WHERE id='".$id."'"); 
        $this->$resultats->setFetchMode(PDO::FETCH_OBJ);
        
        while($ligne = $resultats->fetch()) 
        {
          echo "allo".  $return = $this->cleanRow($ligne);
        }
        
        $result->free();
        //echo $return;
        return $return;
        
        */
         
    }   

}

$options array(PDO::MYSQL_ATTR_INIT_COMMAND> "SET NAMES utf8"); 
$req = new requetes('mysql:host=localhost;dbname=test','root','',$options); 
$section = $req->selectUnProjet($_GET['noProjet']=1); 
?>


Bonne programmation !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
17
dans index.php
attention ma dbname est 'test' à changer ...

<?php

/*du code ...*/

include(mesclass/classrequete.php);
$options array(PDO::MYSQL_ATTR_INIT_COMMAND> "SET NAMES utf8"); 
$req = new requetes('mysql:host=localhost;dbname=test','root','',$options); 
$section = $req->selectUnProjet($_GET['noProjet']=1);
echo '';
print_r($section);
/*si tu retournes un array avec le return de la methode selectUnProjet */ 
echo '

';

/* ... du code*/
?>





Bonne programmation !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
17
bonjour

class requetes  extends PDO{
public function __construct($dsn,$username=null,$password=null,               $driver_options=null){
      parent::__construct($dsn, $username, $password, $driver);
   }
...   


$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
);
req = new requetes('localhost','root','','$options');
$section = $req->selectUnProjet($_GET['noProjet']);
Bonne programmation !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
17
il faut aussi vérifier que PDO est activé

dans php

extensions-> pdo_php

Bonne programmation !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
17
<?php
class requetes extends PDO {

    public function __construct($dsn,$username=null,$password,$options=null){
          parent::__construct($dsn,$username,$password,$options);
    }
    
    public function selectUnProjet($id){
        echo $id;
        
        /*
        $resultats= $db->query("SELECT * FROM  WHERE No=".$id); 
        $resultats->setFetchMode(PDO::FETCH_OBJ);
        while($ligne = $resultats->fetch()) 
        {
          echo "allo".  $return = $this->cleanRow($ligne);
        }
        
         $result->free();
         echo $return;
         return $return;
         */
    }   

}

$options array(PDO::MYSQL_ATTR_INIT_COMMAND> "SET NAMES utf8"); 
$req = new requetes('mysql:host=localhost;dbname=test','root','',$options); 
$section = $req->selectUnProjet($_GET['noProjet']=5551); 
?>


une autre solution
Tapez le texte de l'url ici.



Bonne programmation !
Messages postés
42
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
10 juin 2013

Bonjour

Merci cod57 pour ton aide !! je vais essayer ça et je vous donne des nouvelles
Messages postés
42
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
10 juin 2013

Re-bonjour

Cette fois je vais mieux m'expliquer. Pour mon projet j'ai connexionBD.php dans lequel veux créer une connexion évidement à ma bd en objet. Ensuite j'ai gestion.php qui contienne une classe requêtes dans laquelle on trouve différentes fonctions qui exécutent des requêtes dans ma bd.
Et finalement j'ai mon index dans lequel j'ai veux faire appel a mes fonction des ma classe comme ça :
$section = $req->selectUnProjet($_GET['noProjet']);


pour ma classe de connexion j'ai essayer la soulution de cod57 ici mais je ne suis pas sur de comprendre.

Je ne sais pas si c'est possible de faire tout ça. J'ai débute en php si quelqu'un peut m'expliquer comment faire pour réussir à faire executer ma requête dans l'index.

Merci beaucoup

pour ma classe requetes j'ai ça :
class requetes 
{

 function selectUnProjet($id)
 {
  
    $resultats= $db->query("SELECT * FROM projets WHERE No=".$id); 
    $resultats->setFetchMode(PDO::FETCH_OBJ);
    while($ligne = $resultats->fetch()) 
    {
      $return = $this->cleanRow($ligne);
    }
    
     $result->free();
     echo $return;
     return $return;
 }
    
}
Messages postés
42
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
10 juin 2013

Merci encore cod57

J'ai essayé ta nouvelle reponse et ça fonctionne. Seulement j'ai voudrais qu'au lieu d'afficher des $row directemet dans la fonction les retournes pour les faire afficher dans index comme ça dans un input:

value="<?php echo $section['titre']; ?>"
Messages postés
42
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
10 juin 2013

Voila finalement ma fonction :

 public function selectUnProjet($id)
    {
        
        $sql = "SELECT * FROM projets WHERE No='".$id."'";
        try 
        {
          $stmt = $this->query($sql);
          while ($row = $stmt->fetch())
          {
            $return = $this->cleanRow($row);
          }
        }
        catch (PDOException $e)
        {
          print $e->getMessage();
        } 
        return $return;
    }   


et dans mon index j'ai fais ça ;
echo $section['titre']; 


tout fonction maintenant merci cod57