problème avec ma classe

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

mailer
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 158
Inscription: Dim Juin 26, 2005 19:36

problème avec ma classe

Message le Jeu Fév 23, 2006 21:25

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

Voilà
Code: Tout sélectionner
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: Tout sélectionner
$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

petit-ourson
WRInaute passionné
WRInaute passionné
 
Messages: 843
Inscription: Lun Mai 31, 2004 15:19

Message le Jeu Fév 23, 2006 21:58

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".

mailer
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 158
Inscription: Dim Juin 26, 2005 19:36

Message le Jeu Fév 23, 2006 22:31

je dois mettre un return dans requete ?
peux tu me montrer un exemple ?

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Fév 23, 2006 23:11

Code: Tout sélectionner
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;

mailer
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 158
Inscription: Dim Juin 26, 2005 19:36

Message le Ven Fév 24, 2006 9:00

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...

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Ven Fév 24, 2006 9:15

Code: Tout sélectionner
$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: Tout sélectionner
$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.

mailer
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 158
Inscription: Dim Juin 26, 2005 19:36

Message le Ven Fév 24, 2006 19:18

en fait j'ai une classe mere sgbd et une classe fille mysqlsgbd
Code: Tout sélectionner
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: Tout sélectionner
$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 ;(

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Ven Fév 24, 2006 20:14

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.

mailer
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 158
Inscription: Dim Juin 26, 2005 19:36

Message le Ven Fév 24, 2006 20:50

voilà le code que j'ai sur ma page de test =W test.php
Code: Tout sélectionner
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


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité