Connexion PDO

Résolu
cs_vargas Messages postés 42 Date d'inscription samedi 14 juin 2003 Statut Membre Dernière intervention 10 juin 2013 - 29 déc. 2011 à 03:03
cs_vargas Messages postés 42 Date d'inscription samedi 14 juin 2003 Statut Membre Dernière intervention 10 juin 2013 - 29 déc. 2011 à 16:41
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

9 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
29 déc. 2011 à 15:41
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 !
3
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
29 déc. 2011 à 16:10
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 !
3
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
29 déc. 2011 à 10:57
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 !
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
29 déc. 2011 à 11:00
il faut aussi vérifier que PDO est activé

dans php

extensions-> pdo_php

Bonne programmation !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
29 déc. 2011 à 11:27
<?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 !
0
cs_vargas Messages postés 42 Date d'inscription samedi 14 juin 2003 Statut Membre Dernière intervention 10 juin 2013
29 déc. 2011 à 14:36
Bonjour

Merci cod57 pour ton aide !! je vais essayer ça et je vous donne des nouvelles
0
cs_vargas Messages postés 42 Date d'inscription samedi 14 juin 2003 Statut Membre Dernière intervention 10 juin 2013
29 déc. 2011 à 15:54
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;
 }
    
}
0
cs_vargas Messages postés 42 Date d'inscription samedi 14 juin 2003 Statut Membre Dernière intervention 10 juin 2013
29 déc. 2011 à 16:07
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']; ?>"
0
cs_vargas Messages postés 42 Date d'inscription samedi 14 juin 2003 Statut Membre Dernière intervention 10 juin 2013
29 déc. 2011 à 16:41
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
0
Rejoignez-nous