IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

query, session et classe..


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 55
    Par défaut query, session et classe..
    Bonjour,

    apres maintes recherches rien trouvé.. donc help, je craque!

    je vous explique.. j'ai une classe MysqlHelper qui me permet de me connecter à ma base mysql.. je met le résultat dans une session.. jusque la tout va bien..

    //On se connecte à la base de données
    $_SESSION['sql'] = new mysqlHelper();
    $_SESSION['sql']->setMysqlHost('localhost');
    $_SESSION['sql']->setMysqlUser('root');
    $_SESSION['sql']->setMysqlPassword('');
    $_SESSION['sql']->setMysqlDatabase('planning');
    $_SESSION['sql']->MysqlConnect();

    puis dans un autre fichier je veux faire un select..

    /********************************
    / MySql Select
    *********************************/
    public function MysqlSelect ($tablename, $idname='', $id='')
    {
    if ($idname != '' AND $id != '')
    {
    $this->mysqlQuery = 'SELECT * FROM '.$tablename.' WHERE '.$idname.' = "'.$id.'"';
    }
    else
    {
    $this->mysqlQuery = 'SELECT * FROM '.$tablename;
    }
    return ($this->mysqlQuery);
    }

    j'y fais donc appel.. cela construit bien mon select :

    $_SESSION['sql']->MysqlSelect('param','idTypeParam',2);

    puis je veux faire ma requete :

    /********************************
    / MySql Query
    *********************************/
    public function MysqlQuery ()
    {
    $this->mysqlResult = @mysql_query ('SELECT * FROM param WHERE idTypeParam = "2"');
    if (!$this->mysqlResult)
    {
    $this->MysqlErr('Vérifiez la requête : '.$this->mysqlQuery.'<br>');
    //On se redirige vers la page d'erreur
    return 0;
    }
    return ($this->mysqlResult);
    }

    et la ca me pete à la figure.. impossible de lui faire executer la requete.. j'ai bien verifié la construction du select elle est correcte, je l'ai executé directement sous phpmyadmin. Deja je ne sais pas à quoi sert le "@" devant le mysql_query (code recupéré sur le forum php à http://www.developpez.net/forums/sho...t=14617&page=2 --> mysqlHelper) et ensuite de toute façon il ne veut pas l'executer.. si je vire le @ il me dit que je n'ai pas le droit de me connecter à la base..

    Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\planning\systeme\sql\mysqlHelper.php on line 337

    ma session n'est pas fermée.. ni ma connexion close, donc logiquement je suis tjrs connecté à la base..


  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Par défaut
    Bonjour,

    le @ sert juste a virer le message d'erreur. Apparemment, ta connexion n'est pas bonne. Vérifie si les login, mot de passe et base de données sont les bons paramètres et si tu as les droits d'accès.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 55
    Par défaut
    Citation Envoyé par Steph82
    Bonjour,

    le @ sert juste a virer le message d'erreur. Apparemment, ta connexion n'est pas bonne. Vérifie si les login, mot de passe et base de données sont les bons paramètres et si tu as les droits d'accès.
    Le truc c'est qu'il y a un test à la connexion

    /********************************
    / Connexion to MySQL Server
    *********************************/
    public function MysqlConnect ()
    {
    if ($this->mysqlIsConnected == FALSE)
    {
    $this->mysqlConnextionId = @mysql_connect($this->getMysqlHost(), $this->getMysqlUser (), $this->getMysqlPassword());
    if (!$this->mysqlConnextionId)
    {
    $this->MysqlConnexionErr();
    $this->mysqlIsConnected = FALSE;
    return 0;
    }
    }
    $selectDb = @mysql_select_db($this->getMysqlDatabase($this->mysqlConnextionId));
    if (!$selectDb)
    {
    $this->MysqlErr ('Impossible de sélectionner la base : <b>'.$this->getMysqlDatabase().'</b>');
    $this->mysqlIsConnected = FALSE;
    $this->MysqlClose();
    return 0;
    }
    $this->mysqlIsConnected = TRUE;
    }

    et donc moi lors de la création de ma connexion je fais un test..

    // si la connexion s'est mal faite erreur
    if ($_SESSION['sql']->getMysqlIsConnected() == FALSE ) {
    //On se redirige vers la page d'erreur
    header("Location: /planning/systeme/erreur/erreurConnexion.php?codeErreur=1\n\n");
    } else {
    header("Location: /planning/collaborateur/ConsultCongesCollab.php?ssMenuChoisi=conges\n\n");
    }

    or il ne passe pas dans la page d'erreur..

    de plus lorsque j'essaye de faire une connexion "en dur" à l'endroit ou je veux faire mon select..

    $connexion=@mysql_connect("localhost","root","");
    $base=@mysql_select_db("planning",$connexion);
    $sql = "select * from param";
    $selection = @mysql_query($sql);
    echo $resultat=@mysql_num_rows($selection);

    ca ca marche et me renvoie le bon résultat.. à n'y rien comprendre..

    la session perd elle la connexion au fil des pages? mais logiquement non..

    bon... en rajoutant

    $_SESSION['sql']->MysqlConnect(); juste avant de faire mon
    $selection = $_SESSION['sql']->MysqlQuery();

    du coup maintenant une fois sur deux ca marche.. et quand ca ne marche pas j'ai le message :

    [FONT=arial,helvetica]Impossible de sélectionner la base : planningErreur SQL :
    Erreur no SQL :
    [/FONT]
    [FONT=arial,helvetica]Vérifiez la requête : SELECT * FROM param WHERE idTypeParam = "2"
    Erreur SQL :
    Erreur no SQL :
    [/FONT]
    ................

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Par défaut
    Enlève les @ pour bien voir les erreurs et fait un echo de chaque paramètre (login, bdd,...) pour voir s'il y'en a un qui saute.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 55
    Par défaut
    Citation Envoyé par Steph82
    Enlève les @ pour bien voir les erreurs et fait un echo de chaque paramètre (login, bdd,...) pour voir s'il y'en a un qui saute.
    j'ai rajouté :

    echo $_SESSION['sql']->getMysqlHost().'<br/>';
    echo $_SESSION['sql']->getMysqlUser().'<br/>';
    echo $_SESSION['sql']->getMysqlPassword().'<br/>';
    echo $_SESSION['sql']->getMysqlDatabase ().'<br/>';
    echo $_SESSION['sql']->getMysqlIsConnected().'<br/>';

    et j'obtiens..

    localhost
    root

    planning
    1

    il n'a donc perdu aucune info.. mais apparement la connexion ne reste pas.. j'ai essayé avec la fonction
    mysql_pconnect() Ouvre une connexion persistante à un serveur MySQL.


    mais ca donne exactement la même chose..

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Par défaut
    Essaie de mettre la selection de bdd en dur là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             $selectDb = @mysql_select_db($this->getMysqlDatabase($this->mysqlConnextionId));
    Pense bien aux balises code car c'est la galère de s'y retrouver avec les accolades.

Discussions similaires

  1. Beans Session pour classes Entity
    Par Car0le dans le forum NetBeans
    Réponses: 12
    Dernier message: 04/02/2015, 07h32
  2. Pb Session : entity class not found
    Par fagma dans le forum Hibernate
    Réponses: 4
    Dernier message: 03/05/2011, 10h05
  3. Sessions et Classes dans App_Code
    Par cinemania dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/07/2010, 13h50
  4. [EJB Session] class not found exception ?
    Par champion dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 11/02/2005, 23h46
  5. [VB.NET] Server.MapPath et Session dans une classe
    Par nancy54 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/09/2004, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo