Page 1 sur 1

POO et récupération de données d'une BDD

Posté : 06 juil. 2015, 15:13
par ccccc77
Bonjour,

Je débute en POO et je m'arrache les cheveux car je n'arrive pas à récupérer des données dans ma bdd... J'essaie depuis des heures, rien à faire je sèche...

Tout se passe bien dès lors que je rentre des données à la main (nom, prénom, mail...). L'API répond, l'utilisateur est enregistré. Mais dès que j'essaie de récupérer des données de ma BDD plus rien ne fonctionne et je ne trouve pas la solution. Pourtant j'arrive bien à me connecter à la BDD et à afficher des résultats de requête. C'est au moment de les intégrer dans l'Arras envoyé à l'API que ça coince et je ne trouve pas la méthode...

Voici le code pour lequel j'ai tenté de remplacer le nom par le nom issu de ma bdd :

Pouvez-vous m'éclairer, je ne comprends rien...
try{
 
$handler = new PDO('mysql:host=localhost;dbname=name', 'root', ' ');
 
$handler->setAttribute(PDO::ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
 
}
 
catch(PDOException $e) {
 
echo 'La base de données est indisponible, merci de réessayer ultérieurement';
 
die();
 
}
 
class Integration {
 
private function getRandomId(){
 
return str_replace('.', '', microtime(true).rand());
 
}
 
public function getNom() {
 
$query = $handler->query('SELECT * FROM table');
 
while($r = $query->fetch()) {
 
return $r->nom;
 
}
 
}
 
public function Registerppi(){
 
$ppi = self::getRandomId();
 
$nom = self::getNom();
 
$res = Kit::Registerppi(array('ppi' => $ppi,
 
'Mail' => '[email protected]',
 
'Title' => 'Test',
 
'FirstName' => 'prénom test',
 
'LastName' =>  $nom));
 
}
 
}

Re: POO et récupération de données d'une BDD

Posté : 06 juil. 2015, 15:17
par @rthur
Bonjour,

Il manque une guillemet ici :
$query = $handler->query('SELECT * FROM table);

Re: POO et récupération de données d'une BDD

Posté : 06 juil. 2015, 15:40
par ccccc77
Bonjour,
Merci de cette réponse. Petite erreur de recopiage...

Re: POO et récupération de données d'une BDD

Posté : 07 juil. 2015, 21:07
par ccccc77
En fait mon problème est de récupérer des données de ma BDD pour les insérer dans la fonction Regsiterppi qui envoie les données à l'API (nom, prénom, civilité)..
J'ai tenté avec le nom mais ça ne fonctionne pas ("Call to a member function getClientNom() on a non-object"), même chose avec $this.
Comment puis-je récupérer ces données dans ma fonction, sachant que j'arrive parfaitement à afficher ces mêmes données quand je fais un "echo" ?

Merci d'avance

Voici le code :
class Client
{						
private $civilite,$nom,$prenom;

public function __construct($dbRow)
	{
	$this->civilite = $dbRow['civilite'];
	$this->nom = $dbRow['nom'];
	$this->prenom = $dbRow['prenom'];
		
	}
	
	public function getClientNom()
	
	{
		return $this->nom;
	}
	
	public function getClientPrenom()
	
	{
		return $this->prenom;
	}
	public function getClientCivilite()
	
	{
		return $this->civilite;
	}
	private function getRandomId(){
		return str_replace('.', '', microtime(true).rand());
	}
	public function Registerppi(){
		$wallet = self::getRandomId();
		$nom->getClientNom();
		$res = Kit::Registerppi(array('ppi' => $ppi, 
												'clientMail' => '[email protected]', 
												'clientTitle' => 'civilite', 
												'clientFirstName' => 'prenom', 
												'clientLastName' => '$nom'));
		if (isset($res->lwError))
			print 'Error, code '.$res->lwError->CODE.' : '.$res->lwError->MSG;
		else
			print '<br/>Wallet created : ' . $res->wallet->ID;
	}
}

Re: POO et récupération de données d'une BDD

Posté : 07 juil. 2015, 22:41
par tof73
à priori :
'clientLastName' => $nom->getClientNom()

Re: POO et récupération de données d'une BDD

Posté : 17 juil. 2015, 23:20
par moogli
Salut,

$nom->getClientNom(); $nom n'existe pas
par contre, a priori $this->nom devrait exister

$ppi : n'existe pas, je ne sais pas ce que c'est mais il faut la déclarer dans la méthode Registerppi

$wallet n'est pas utilisée

$res = Kit::Registerppi(array('ppi' => $ppi,
'clientMail' => '[email protected]',
'clientTitle' => 'civilite',
'clientFirstName' => 'prenom',
'clientLastName' => '$nom'));

mélange de chaînes de caractère de variable dans une chaîne de caratères.
je suppose que c'est les propriétés de la classe que tu souhaites utiliser ?

self::getRandomId(); : tu n'es pas dans un contexte statique donc tu ne peux pas utiliser self il faut utiliser this pour utiliser la méthode getRamdomId().

Je t'invite a revoir les bases de la poo, et notamment les bases de la notation poo avec php afin que tu puisse t'en sortir.

Une solution a ton problème peux être :
<?php
// ne pas oublier l'import de la classe Kit
class Client
{
    private $civilite;
    private $nom;
    private $prenom;

    public function __construct(array $dbRow)
    {
        // attention sans vérifier l'existance des index dans le tableau cette façon de faire est une source d'ennuie assurée.
        $this->civilite = $dbRow['civilite'];
        $this->nom = $dbRow['nom'];
        $this->prenom = $dbRow['prenom'];

    }

    /**
     * @return mixed
     */
    public function getCivilite()
    {
        return $this->civilite;
    }

    /**
     * @param mixed $civilite
     */
    public function setCivilite($civilite)
    {
        $this->civilite = $civilite;
    }

    /**
     * @return mixed
     */
    public function getNom()
    {
        return $this->nom;
    }

    /**
     * @param mixed $nom
     */
    public function setNom($nom)
    {
        $this->nom = $nom;
    }

    /**
     * @return mixed
     */
    public function getPrenom()
    {
        return $this->prenom;
    }

    /**
     * @param mixed $prenom
     */
    public function setPrenom($prenom)
    {
        $this->prenom = $prenom;
    }

    private function getRandomId()
    {
        return str_replace('.', '', microtime(true) . rand());
    }

    public function Registerppi()
    {
        $res = Kit::Registerppi(array('ppi' => self::getRandomId(), // j'ai supposé que le ppi c'est un "id"
            'clientMail' => '[email protected]',
            'clientTitle' => $this->civilite,
            'clientFirstName' => $this->prenom,
            'clientLastName' => $this->nom));
        // l'affichage du message ne devrait pas être de la responsabilité de cette classe
        if (isset($res->lwError))
            print 'Error, code ' . $res->lwError->CODE . ' : ' . $res->lwError->MSG;
        else
            print '<br/>Wallet created : ' . $res->wallet->ID;
    }
}