Bonjour je suis entrain de coder un logiciel avec system de connexion en vb je vien de créer la bdd je suis entrain de faire le fichier php il arrive bien a se connecter a la bdd mais quand je veux voir si le user existe sa me marque error voici le code

<?php

$action = new action;
if ($action->userExist("test"))
    echo "OK";
else
    echo "error";

class action
{
    public $bdd;

    public function action ()
    {
        try { $this->bdd = new PDO('mysql:host=localhost;dbname=', '', ''); }
        catch (Exception $ex) { die('ERROR:ERROR_BDD_CONNECTION'); }
    }

    public function userExist($user)
    {
        $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array('$user'));
        if (empty($data['User']))
            return (false);
        else
            return (true);
    }

    private function executeQuery($query, $args, $fetch = true)
    {
        $response = $this->bdd->prepare($query);
        $response->execute($args);
        if ($fetch)
        {
            $data = $response->fetch();
            $response->closeCursor();
            return ($data);
        }
        else
            return ($response);

    }

j'ai effacer les info de connexion pour eviter d'avoir de probleme merci d'avance a se qui seront me dire d'ou vien l'erreur

19 réponses


SLK
Réponse acceptée

Salut,

J'ai créé une BDD de test pour voir,
et moi j'ai "OK",
pas "error"

je vien de rentrer ton code et toujours erreur

Tu as copié le code de BetaWeb,
mais tu as quand même pensé à rectifier les 2 erreurs mentionnées par Carouge10 n'est-ce pas ?

  • new Action()
  • array("$user")

    ou array($user) tout simplement

j'ai bie rentrer les identifient

On parle bien des 3 informations manquantes ? (nom de la BDD, ton login, ton pass)

Sur PHPMyAdmin,
déconnecte toi et reconnecte toi avec le login et le pass que tu as mis, pour vérifier que ce sont les bons.

Toujours sur PHPMyAdmin tu as bien :

  • Une base de données qui porte le bon nom.
  • Avec une table 'Users'.
  • Dans cette table tu as une insertion qui à la valeur 'test' dans le champ 'User'.

    ?

Bonjour,

Il manque les parentèses lors de la création de la classe.

$action = new action();
RDZ
Auteur

merci pour ta reponse mais je vien de tester sa marque toujours error

Attention à l'utilisation des " et ' qui est différentes.
" permet de d'insérer des variables dans une chaines alors que ' ne le permet pas.

array('$user') != array("$user")
RDZ
Auteur

je vien de tester j'ai mis

    public function userExist($user)
    {
        $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array("$user"));
        if (empty($data['User']))
            return (false);
        else
            return (true);
    }

mais toujours error

il vous faut procéder au debuggage ligne par ligne.
que donne un var_dump($data); juste après l'action executeQuery??

Que donnes les logs ?

RDZ
Auteur

je vien de tester dit moi si c sa

    public function userExist($user)
    {
        $data = $this->executeQuery ("SELECT * FROM Users WHERE User = ?;", array("$user"));
        var_dump($data); 
        if (empty($data['User']))
            return (false);
        else
            return (true);
    }

le message : bool(false) error

Salut,

Tu es sûr de bien être connecté à ta base de données ?
Aussi, évite d'appeler une méthode de classe de la même façon que la classe elle-même c'est pas super propre ;)
Je pense d'ailleurs qu'il s'agit de ton __construct() et que tu t'es trompé ;)

RDZ
Auteur

oui je suis bien connecté a la bdd je vais vite fait tout regarde pour voir si je trouve l'erreur

D'ailleurs, pourquoi ne pas nous donner le détail de l'erreur ? Tu utilises quoi pour débugguer ?

RDZ
Auteur

ba je le poste sur mon hebergeur et du coup sa maffiche juste erreur et sa devrait afficher OK

RDZ
Auteur

je regarde un tuto pour faire cela et le mec qui a fait le tuto lui sa marche j'ai tout inspecter le code et tout est comme lui mais lui sa marche mais pas moi

Tu as débug toutes tes variables ? TUu es sûr que tu es bien connecté à ta base de données ?

RDZ
Auteur

comment je peut voir si je suis bien co a la bdd?

var_dump($this->bdd);
RDZ
Auteur

voila le message object(PDO)#2 (0) { } error

Ca ne nous en dit pas beaucoup plus .. mais à mon avis la connection à la BDD n'est pas effective, d'autant plus que tu ne renseignes NUL PART le nom de la base de données à laquelle il faut se connecter...

Essaye ceci, et pense à renseigner les infos pour te connecter à ta base de données :


$action = new Action;
if ($action->userExist("test"))
    echo "OK";
else
    echo "error";

class Action
{
    public $bdd;

    public function __construct ()
    {
        try {
            $this->bdd = new PDO('mysql:host=localhost;dbname=', '', ''); // RENSEIGNE LES INFOS DE CONNEXION ICI !!!
        } catch (Exception $ex) {
            die('ERROR:ERROR_BDD_CONNECTION');
        }
    }

    public function userExist($user)
    {
        $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array('$user'));
        if (empty($data['User']))
            return (false);
        else
            return (true);
    }

    private function executeQuery($query, $args, $fetch = true)
    {
        $response = $this->bdd->prepare($query);
        $response->execute($args);
        if ($fetch)
        {
            $data = $response->fetch();
            $response->closeCursor();
            return ($data);
        }
        else
            return ($response);

    }

L'autre GROS souci est que tu as vraisemblablement pompé le code sur un tutoriel sans réellement comprendre ce que tu faisais..

RDZ
Auteur

de mon coter j'ai bie rentrer les identifient ses juste que je les est pas publier sur le forum sinon je vien de rentrer ton code et toujours erreur

Salut, Quel est le contenu de $data après l'éxecution de ta requête?