problème avec ma classe

WRInaute discret
bonsoir
j'essais de créer une classe me permetant de pouvoir par la suite l'adapter à plusieurs cas!

Voilà
Code:
unction requete ($requete)
    {
        // Exécution de la requête 
        $result = mysql_query ($requete, $this->connect);
        
        // Vérification de la requête
        if (!$result)
        {
            // Affichage du message d'erreur
            echo "Erreur : Impossible d'effectuer la requête au serveur.";
            exit; 
        }
        else
        {
            // Initialisation de l'attribut de requête
            $this->requete = $result;
        }
    }

En inserant ce fichier mis a part j'aimerais donc pouvoir aller plus loin dans la requete mysql.

Code:
$result = $database->requete ("SELECT COUNT(*) AS ip_exist FROM staterror404 WHERE ip='" . $ip . "' AND urlRef='" . $http_referer . "' ");
$count = $database->mysql_fetch_array($result);

j'aimerais exploiter le résultat que j'ai dans $result mais j'ai droit a une erreur :
Fatal error: Call to undefined function: mysql_fetch_array() in c:\easyphp1-7\testphp\testpao\index.php on line 36
 
WRInaute impliqué
La méthode mysql_fetch_array n'existe pas sur $database.

$count = mysql_fetch_array($database->requete);

Cela devrait fonctionner tout simplement.

Ta méthode requete() ne retourne rien, il n'y a pas de "return".
 
WRInaute accro
Code:
function requete ($requete)
    {
        // Exécution de la requête
        $result = @mysql_query ($requete, $this->connect);
       
        // Vérification de la requête
        if (!$result)
        {
            // Affichage du message d'erreur
            exit("Erreur : Impossible d'effectuer la requête au serveur.");
        }
        else
        {
            // Initialisation de l'attribut de requête
            return $this->requete = $result;
        }
    }
Mais je pense que sauvegade le résultat est inutile.
Je fais allusion à cela: $this->requete = $result;
 
WRInaute discret
alors j'ai ajouté le return dans la méthode function requete ($requete) comme indiqué!

Mais en executant la page, rien ne s'affiche, je comprends pas:
je devrais avoir le résulat de ma requete count qui devrait s'afficher...
 
WRInaute accro
Code:
$result = $database->requete ("SELECT COUNT(*) AS ip_exist FROM staterror404 WHERE ip='" . $ip . "' AND urlRef='" . $http_referer . "' ");
$count = $database->mysql_fetch_array($result);

Remplace par:

Code:
$result = $database->requete ("SELECT COUNT(*) AS ip_exist FROM staterror404 WHERE ip='" . $ip . "' AND urlRef='" . $http_referer . "' ");
$val_rq = $database->mysql_fetch_array($result);
$count = $val_rq['ip_exist'];

Ceci fonctionnera à condition que ta requête soit bonne.
Tu devrais acheter un bouquoin ou apprendre sur le net.
Sans base solide tu n'arrivera jamais à rien, et il n'y aura
pas toujours quelqu'un pour tout te faire.

EDIT:
Je suppose que $database->mysql_fetch_array($result);, est une fonction que tu à créé dans ta class. Sinon il est certain que ça ne fonctionnera pas.

Laisse tombé les class pour le moment et aprend la programmantion en ligne. Ce sera déjà un bon début.
 
WRInaute discret
en fait j'ai une classe mere sgbd et une classe fille mysqlsgbd
Code:
class MySQL extends SGBD 
{
    // Méthode connect()
    function connect ()
    {
        // Connection à MySQL
        $connect = mysql_pconnect ($this->SGBD_host, $this->SGBD_login, $this->SGBD_password);

        // Vérification de la connection
        if (!$connect)
        {
            // Affichage du message d'erreur
            echo "Erreur : Connection à MySQL impossible.";
            exit; 
        }

        // Connection à la base de données
        if (!mysql_select_db ($this->SGBD_base, $connect))
        {
            // Affichage du message d'erreur
            echo "Erreur : Connection à la base de données impossible.";
            exit; 
        }
        
        // Initialisation de l'attribut de connection
        $this->connect = $connect; 
    }
 
    // Méthode requete()
    function requete ($requete)
    {
        // Exécution de la requête 
        $result = mysql_query ($requete, $this->connect);
		
        
        // Vérification de la requête
        if (!$result)
        {
            // Affichage du message d'erreur
            echo "Erreur : Impossible d'effectuer la requête au serveur.";
            exit; 
        }
        else
        {
            // Initialisation de l'attribut de requête
            $this->requete = $result;
        }
    }

    // Méthode deconnect()
    function deconnect ()
    {
        // Déconnection de la base de données 
        mysql_close ($this->connect); 
    }
}
?>

Voilà mais en faisant comme ceci ensuite ;
Code:
$SQL = "MySQL";
$database = new $SQL('root', '', 'localhost', 'test');
$database->connect();
$result = $database->requete ("SELECT COUNT(*) AS ip_exist FROM staterror404 WHERE ip='" . $ip . "' AND urlRef='" . $http_referer . "' ");
$count = mysql_fetch_array($database->requete);

echo $count['ip_exist'];

çà ne marche pas, rien ne s'affiche.

Sinon je m'interesse à la pao, je m'y connais assez en php pour faire le pas, malgrès que ce en soit pas si facile ;(
 
WRInaute accro
Dans ta table je ne vois pas les variables déclarées...
Et la fonction "requete" n'a pas été modifiée par le code indiqué, autrement dit pas de return.
 
WRInaute discret
voilà le code que j'ai sur ma page de test =W test.php
Code:
include ("SGBD.class.php");

/* Initialisation de la variable du SGBD correspondant */
$SQL = "MySQL";

// Inclusion de la classe fille du SGBD correspondant
include ($SQL.".SGBD.class.php");

$database = new $SQL('root', '', 'localhost', 'test');

$ip = $_SERVER["REMOTE_ADDR"];
$http_referer = "http://127.0.0.1";
$http_request = $_SERVER["REQUEST_URI"];
$timestamp = time();

// Connection à la base de données
$database->connect();
$result = $database->requete ("SELECT COUNT(*) AS ip_exist FROM staterror404 WHERE ip='" . $ip . "' AND urlRef='" . $http_referer . "' ");
$count = mysql_fetch_array($database->requete);
echo $ip.'<br />';
echo $http_referer;
echo $count['ip_exist'];


// Déconnection de la base de données
$database->deconnect();
J'ai essayé de mettre un return mais çà change rien en fait
 
Discussions similaires
Haut