begin process at 2012 02 15 17:40:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Problème avec mysql_fetch_array


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec mysql_fetch_array

jeudi 1 février 2007 à 01:26:50 | Problème avec mysql_fetch_array

mfaraday

Bonsoir,

Je me prends (un peu) la tête sur une de mes classes... en fait c'est ma classe de bdd.

Tout ce qui est connexion, selection et requête, pas de problème. Gestion des erreurs pas de problème.

Mais dès qu'il s'agit de faire un fetch_array... Le serveur me renvoie un warning: ...argument is not a valid ...

Le problème est que j'ai testé en créant une page faisant mysql_connect > select_db > query puis fetch_array et la ça passe. Je ne comprends pas... Il y a surement une variable mal définie... Alors je vous livre mon code tel quel des fois que quelqu'un aurait une idée de génie.

Flo

Mon code :

<?php


    class SQL2
        {
       
        ##    --------------------------------
        ##    Paramètres
        ##    --------------------------------
       
        ##    Paramètres de connexion
            private $u = '';    # Utilisateur
            private $p = '';    # Mot de passe
            private $b = '';    # Base
            private $h = '';    # Hote

        ##    Paramètres internes
            private $connx    = '';    # L'identification de connexion
            public $sql    = array();    # Liste des requêtes effectuées sur la session
            public $bench    = array();    # Liste les benchs effectués sur les requêtes
            private $compte    = '';    # Compte le nombre de requêtes
            public $resultat = '';    # Le résultat de la requête
       
        ##    Messages d'erreur
            private $_message = array(
            'CANT_CONNECT'
                => 'Impossible de se connecter &agrave; &laquo;&nbsp;%s&nbsp;&raquo;. Le serveur renvoie l\'erreur suivante&nbsp;: <br />[%s] %s',
            'CANT_CLOSE'
                => 'Impossible de fermer la connexion &agrave; &laquo;&nbsp;%s&nbsp;&raquo;. Le serveur renvoie l\'erreur suivante&nbsp;: <br />[%s] %s',
            'CANT_SELECT_DB'
                => 'Impossible de s&eacute;lectionner la base &laquo;&nbsp;%s&nbsp;&raquo;. Le serveur renvoie l\'erreur suivante&nbsp;: <br />[%s] %s',
            'ERROR_QUERY'
                => 'Erreur lors de l\'éxécution de la requ&ecirc;te #%s dont le texte est le suivant&nbsp;:<br />&laquo;&nbsp;%s&nbsp;&raquo;.<br /> Le serveur renvoie l\'erreur suivante&nbsp;: <br />[%s] %s',
               
            );
       
        ##    --------------------------------
        ##    Fonctions
        ##    --------------------------------
       
        ##    Constructeur de la classe
             # Initialise la classe
            # Masque les erreurs E_WARNING (Gérées à travers les exceptions)
            # Lance la connexion
            # Sélectionne la base
        public function __construct()
            {
            global $variables;
           
            $this -> u = '';
            $this -> p = '';
            $this -> b = '';
            $this -> h = '';
           
            self :: setErrReport();
            self :: connect($this -> h, $this -> u, $this -> p);
            self :: select_db($this -> b);

            $this -> resultat = '';
            $this -> sql = array();
            $this -> bench = array();
            }
       
        ##    Destructeur de la classe
        public function __destruct()
            {
            self :: close();
            error_reporting($this -> errorReporting);
            }

        ##    Connexion à la base <==> mysql_connect
        public function connect($host, $user, $pass)
            {
            try
                {
                $this -> connx = mysql_connect($host, $user, $pass);
           
                if ( isset($this -> connx) && is_resource($this -> connx) )
                    {
                    return true;
                    }
                else
                    {
                    $message = sprintf($this -> _message['CANT_CONNECT'], (isset($host) ? $host : 'localhost'), mysql_errno(), mysql_error());
                    throw new exception($message);
                    }
                }
            catch(Exception $e)
                {
                die(xhtml::_error('ERREUR :: Bdd', 'pages/styles.css', $e->getmessage()));
                }
            }
       
        ##    Récupère les informations sur les erreurs
        private function getErrReport()
            {
            $this -> ErrorReporting = error_reporting();
            }
       
        ##    Définit notre niveau d'erreur
        private function setErrReport()
            {
            self :: getErrReport();
            error_reporting($this -> ErrorReporting ^ E_WARNING);
            }
       
        ##    Ferme la connexion à la base <==> mysql_close
        public function close()
            {
            if(isset( $this -> connx ) && is_resource( $this -> connx ))
                {
                try
                    {
                    if(mysql_close($this -> connx) === FALSE)
                        {
                        $message = sprintf($this -> _message['CANT_CLOSE'], (isset($host) ? $host : 'localhost'), mysql_errno(), mysql_error());
                        throw new exception($message);
                        }
                    }
                catch(Exception $e)
                    {
                    die(xhtml::_error('ERREUR :: Bdd', 'pages/styles.css', $e->getmessage()));
                    }
                }
            }
                   
        ##    Sélectionne la base de données <==> mysql_select_db
        public function select_db($base)
            {
            if(isset( $this -> connx ) && is_resource( $this -> connx ))
                {
                try
                    {
                    if(mysql_select_db($base, $this -> connx) === FALSE)
                        {
                        $message = sprintf($this -> _message['CANT_SELECT_DB'], (isset($base) ? $base : 'UNDEFINED'), mysql_errno(), mysql_error());
                        throw new exception($message);
                        }
                    else
                        {
                        return true;
                        }
                    }
                catch(Exception $e)
                    {
                    die(xhtml::_error('ERREUR :: Bdd', 'pages/styles.css', $e->getmessage()));
                    }
                }
            }

        ##    Lance une requête à la base de données <==> mysql_query
        public function query($sql)
            {
            $bench = microtime(true);
            try
                {
                $this -> compte = count( $this -> sql) + 1;
                $this -> sql[ $this -> compte ] = $sql;
               
                if( $this -> resultat = mysql_query($this -> sql[ $this -> compte ], $this -> connx) === FALSE )
                    {
                    $message = sprintf($this -> _message['ERROR_QUERY'], $this -> compte, $this -> sql[ $this -> compte ], mysql_errno(), mysql_error());
                    throw new exception($message);
                    }
                else
                    {
                    if(isset($this -> resultat) && is_resource($this -> resultat))
                        {
                        $this -> bench[ $this -> compte ] = microtime(true) - $bench;
                        echo $this->resultat;
                        return $this -> resultat;
                        }
                    else
                        {
                        $message = sprintf($this -> _message['ERROR_QUERY_RES'], $this -> compte, $this -> sql[ $this -> compte ], mysql_errno(), mysql_error());
                        throw new exception($message);
                        }
                    }
                }
            catch(Exception $e)
                {
                die(xhtml::_error('ERREUR :: Bdd', 'pages/styles.css', $e->getmessage()));
                }
           
            }
       
       
        ##    Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
        public function fetch_array()
            {
            return mysql_fetch_array( $this -> resultat);
            }

        }
       

?>

PS. Je sais que pour la portabilité de mon code, je devrais faire une abstraction de ma classe mais vu que pour l'instant ya bug on verra plus tard :)

PPS.  Merci d'avance

lundi 5 février 2007 à 08:48:17 | Re : Problème avec mysql_fetch_array

Epoc22

Membre Club
Perso, je préfère utiliser mysql_fetch_assoc()
lundi 5 février 2007 à 10:45:46 | Re : Problème avec mysql_fetch_array

mfaraday

Lol

Ok je vais tester avec _assoc mais je suis pas sur que ce soit la qu'est le probléme... c'est plutôt comme si, lors de mon query, this->resultat n'enregistrait rien, je sais pas comment l'expliquer.

Flo

lundi 5 février 2007 à 12:54:46 | Re : Problème avec mysql_fetch_array

Epoc22

Membre Club
Euh c'était juste un avis perso mais d'après moi c'est plsu facile à comprend avec mysql_fetch_assoc et de plus, je suis mauvais en prog POO.
@++ mec.
lundi 5 février 2007 à 14:10:45 | Re : Problème avec mysql_fetch_array

mfaraday

Re

En fait je réagit à ça que maintenant mais

mysql_fetch_assoc($ressource) = mysql_fetch_array($ressource, MYSQL_ASSOC)

Bon c'est pas ça non plus

Flo
lundi 5 février 2007 à 21:09:28 | Re : Problème avec mysql_fetch_array

mfaraday

Réponse acceptée !
Bon,

En fait, j'ai décidé d'arrêter d'être blond

Alors :

if( $this -> resultat = mysql_query($this -> sql[ $this -> compte ], $this -> connx) === FALSE )

Cela ne fonctionne pas, alors :

$this -> resultat = mysql_query($this -> sql[ $this -> compte ], $this -> connx);

if( $this -> resultat )

Ca ça fonctionne !

Auto correction

Flo

lundi 5 février 2007 à 23:09:47 | Re : Problème avec mysql_fetch_array

FhX

Réponse acceptée !
if( $this -> resultat = mysql_query($this -> sql[ $this -> compte ], $this -> connx) === FALSE )

==>

if ( ($this->resultat = mysql_query(....) ) === FALSE ) {
       // erreur.
} else {
      // Ok
}
lundi 5 février 2007 à 23:13:38 | Re : Problème avec mysql_fetch_array

mfaraday

OK,

il me manquait une paiare de parenthèses. je le saurais pour la suite. merci

Flo


Cette discussion est classée dans : message, mysql, array, error, nbsp


Répondre à ce message

Sujets en rapport avec ce message

Probleme lors de l'update en MySQL [ par chatainsim ] Bonsoir, je travail sur un forum, et j'ai un ptit soucis. j'utilise ceci pour modifier la base de donnée, mais cela ne fonctionne pas. Pourtant j'ai t Entrée se transforme par "/" [ par nd25 ] Bonjour à tous !J'utilise un livre d'or à cette adresse :http://www.3monde.net/livredor/mais comme vous pouvez le voir des / apparaissent un peu parto autre moyen d'appel de donnee dans la bbd [ par KheYrO ] Bonjour,    je comprend le système avec les appel et tout (mysql_fetch_array, mysql_query,...)mais je voulaui savoir s'il y avait pas un moyen plus si passage parametres php [ par Puec ] Bonjour, Je débute en php, et je rencontre un problème.J'ai un formulaire qui contient 2 listes déroulantes contenant dont chacun des items provient d probleme affichage image [ par zizou94 ] Bonjour à tousVoivi mon deuxieme souci du jour.J'ai un code ou il y a du javascript et du php mélanger. Ce code permet l affichage de l image au passa Internal Server Error !!!! [ par djagger ] Salut !Je suis hébergé chez France Télécom.Je fais un truk tout con : découper une chaine de charactère pour l'entrer dans une BDD : $host = "monsite. Problème avec mysql_fetch_array() [ par gssk ] Bonjour   en fait je voudrais récuperer d valeurs à partir d'un id seclectioné ds une liste, l'erreur est sur le mysql_fetch_array (en rouge) est ce mysql_fetch_array, au secours.......... c amarche pas snif [ par Raugues ] Bonjour a tous bien le code que j'utilise le voici: $connexion=mysql_connect("localhost","sa","sa"); $result=mysql_select_db("DomyServ",$connexion); problème avec formulaire d'envoi de newsletter très basic [ par Broack Dincht ] bonjour J'ai écri un formulaire d'envoi de newsletter très basique. Grace à un formulaire, on inscrit l'objet et le contenu du message. Les adresses d Probléme de requete et de variable [ par chatainsim ] Bonjour, j'utilise cette fonction pour faire un remplacement de caractéres : $


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,432 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales