Connexion PDO [Résolu]

cs_vargas 42 Messages postés samedi 14 juin 2003Date d'inscription 10 juin 2013 Dernière intervention - 29 déc. 2011 à 03:03 - Dernière réponse : cs_vargas 42 Messages postés samedi 14 juin 2003Date d'inscription 10 juin 2013 Dernière intervention
- 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
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 29 déc. 2011 à 15:41
3
Merci
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 !

Merci cod57 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de cod57
Meilleure réponse
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 29 déc. 2011 à 16:10
3
Merci
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 !

Merci cod57 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de cod57
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 29 déc. 2011 à 10:57
0
Merci
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 !
Commenter la réponse de cod57
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 29 déc. 2011 à 11:00
0
Merci
il faut aussi vérifier que PDO est activé

dans php

extensions-> pdo_php

Bonne programmation !
Commenter la réponse de cod57
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 29 déc. 2011 à 11:27
0
Merci
<?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 !
Commenter la réponse de cod57
cs_vargas 42 Messages postés samedi 14 juin 2003Date d'inscription 10 juin 2013 Dernière intervention - 29 déc. 2011 à 14:36
0
Merci
Bonjour

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.