Problème de class et requête SQL ( class database )
Hors ligneHametsu Le 12/02/2006 à 11:22 Profil de Hametsu Configuration de Hametsu

Bonjour,
grâce à la mise à jour de la class database et mysql, il est desormais possible d'effectuer un mysql_num_rows pour verifier la présence d'une donnée inscrite ou non dans la bdd comme un membre par exemple.
Mais j'ai une exception, lorsque j'effectue ce code :

    


<?php
public
function isRegister_pseudonyme($pseudonyme_user) {
          $sQuery = "SELECT * FROM `" . $this -> _table_user . "` WHERE `pseudonyme` = '" . $pseudonyme_user . "'";
          $this -> _connect -> connect ();
          $this -> _connect -> query ( $sQuery );
          $this -> _connect -> close ();
          if ($this -> _connect -> num_rows ( $sQuery ) == 1) {
               return TRUE;
          }
          else {
               return FALSE;
          }
     }
    
     public
function isRegister_mail($mail_user) {
          $sQuery = "SELECT * FROM `" . $this -> _table_user . "` WHERE `mail` = '" . $mail_user . "'";
          $this -> _connect -> connect ();
          $this -> _connect -> query ( $sQuery );
          $this -> _connect -> close ();
          if ($this -> _connect -> num_rows ( $sQuery ) == 1) {
               return TRUE;
          }
          else {
               return FALSE;
          }
     }
?>


_connect contient l'instance de la class mysql extends database.
Voilà c'est mon fichier dao, que j'appel dans mon fichier model chargé de vérifié les données du fichier action :p

donc ici, je dois vérifier si le pseudo, puis le mail n'est pas déjà présent.

Mais j'obtiens ceci :

Exception Object
(
    [message:protected] => mysql :: query ()1046 : No database selectedSELECT * FROM `user` WHERE `mail` = 'quentin.berlemont@hotmail.fr'
    [string:private] =>
    [code:protected] => 0
    [file:protected] => /Users/Quentinb/Sites/lib/core/Database.class.php
    [line:protected] => 113
    [trace:private] => Array
        (
            [0] => Array
                (
                    [file] => /Users/Quentinb/Sites/lib/core/Database.class.php
                    [line] => 113
                    [function] => query
                    [class] => database
                    [type] => ::
                )

            [1] => Array
                (
                    [file] => /Users/Quentinb/Sites/model/dao/UserModelDao.class.php
                    [line] => 48
                    [function] => query
                    [class] => mysql
                    [type] => ->
                    [args] => Array
                        (
                            [0] => SELECT * FROM `user` WHERE `mail` = 'quentin.berlemont@hotmail.fr'
                        )

                )

            [2] => Array
                (
                    [file] => /Users/Quentinb/Sites/model/UserModel.class.php
                    [line] => 95
                    [function] => isRegister_mail
                    [class] => UserModelDao
                    [type] => ->
                    [args] => Array
                        (
                            [0] => quentin.berlemont@hotmail.fr
                        )

                )

            [3] => Array
                (
                    [file] => /Users/Quentinb/Sites/model/UserModel.class.php
                    [line] => 16
                    [function] => isValid_Mail
                    [class] => UserModel
                    [type] => ->
                    [args] => Array
                        (
                            [0] => quentin.berlemont@hotmail.fr
                        )

                )

            [4] => Array
                (
                    [file] => /Users/Quentinb/Sites/actions/register.action.php
                    [line] => 15
                    [function] => register_user
                    [class] => UserModel
                    [type] => ->
                    [args] => Array
                        (
                            [0] => hametsu
                            [1] =>
                            [2] =>
                            [3] => quentin.berlemont@hotmail.fr
                        )

                )

            [5] => Array
                (
                    [file] => /Users/Quentinb/Sites/index.php
                    [line] => 17
                    [args] => Array
                        (
                            [0] => /Users/Quentinb/Sites/actions/register.action.php
                        )

                    [function] => require_once
                )

        )

)

Alors que si je met sois un pseudo déjà utilisé, soit un mail déjà utilisé ça marche, mais pas les 2 simultanément.
Merci d'éclairer mon chemin ;)
Hors ligneAnthony Le 12/02/2006 à 12:57 Profil de Anthony Configuration de Anthony

Admin
Salut,

l'erreur No database selectedSELECT * FROM `user` WHERE `mail` = 'quentin.berlemont@hotmail.fr' signifie que tu as oublié un mysql_select_db('base') dans ton code PHP.

Sinon évite le SELECT * et ne récupères que les champs dont tu as besoin (optimisation).

a +
--

Hors ligneHametsu Le 12/02/2006 à 17:22 Profil de Hametsu Configuration de Hametsu

Oui j'avais su traduire, mais le problème, c'est que c'est gérer par la classe de malalam et que une des deux fonctions marche mais des que les 2 doivent être appellé ca coince...
pour l'histoire du ' * ' c'est juste pour vérifier si un champ est déjà présent avec celui qui veut s'enregistrer...
pour l'optimisation, comme j'aime bien ce site j'avais penser mettre le squellette de mon application dans le forum, pour que vous jugiez mon travail, qui est je précise mon premier site web, et la première fois que je découvre les class...
histoire que je laisse pas de grande faille de sécuritée :)
Hors ligneAnthony Le 12/02/2006 à 18:50 Profil de Anthony Configuration de Anthony

Admin
Je vois pas trop quel est ton problème en fait, il faudrait que Malalam passe faire un tour ;-)
--

Hors ligneHametsu Le 12/02/2006 à 21:04 Profil de Hametsu Configuration de Hametsu

effectivement, moi non plus, utilisées séparement ces 2 fonctions marchent. Mais si je mets un pseudo et un mail déjà enregistré donc elles sont appellées toutes les 2 elles foirent ^
Hors ligneMalalam Le 13/02/2006 à 10:17 Profil de Malalam Configuration de Malalam

Hello,

j'ai aussi rencontré ce problème après la dernière modification sur ce code, malheruesement...et je ne sais pas d'où il vient encore. Les modifications apportées l'ont été pour la même erreur, mais provoquée lors de l'utilisation de mssql...maintenant, ça marche bien sur mssql, mais l'erreur est lancée par mysql.
Vraioment, aucune idée du pourquoi.
Je l'ai résolue curieusement, en ne fermant pas la connexion avant un num_row, ou un fetch_rows, fetch_array etc...mais juste après (sous mysql).

Essaye ça, puis je vais re-jeter un oeil (je n'ai pas vraiment eu le temps depuis, de réflêchir au problème...mais je me doute qu'il vient du constructeur de database).
Hors ligneHametsu Le 13/02/2006 à 12:27 Profil de Hametsu Configuration de Hametsu

okay, je vais regarder ça :)
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels