Résultats de 1 à 8 sur 8

Sujet : Urgent : Poo

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695

    Urgent : Poo

    Je suis en train de faire la 3ème partie de mon article sur la POO en PHP et actuellement je fais une classe de connection à une base de données, et mon script ne marche pas, cela marque :

    Warning: Missing argument 1 for sgbd() in f:\\xosc\\moteurprog.com\\SGBD.class.php on line 20

    Warning: Missing argument 2 for sgbd() in f:\\xosc\\moteurprog.com\\SGBD.class.php on line 20

    Warning: Missing argument 3 for sgbd() in f:\\xosc\\moteurprog.com\\SGBD.class.php on line 20

    Warning: Missing argument 4 for sgbd() in f:\\xosc\\moteurprog.com\\SGBD.class.php on line 20

    Je n\'arrive pas à trouver d\'ou vient le problème, voici mon code source :

    Code:
    <?php
    /* Fichier : SGBD.class.php */
    // Création de la classe mère 
    class SGBD
       {
            // Attribut du login du SGBD 
            var $SGBD_login;
            // Attribut du password du SGBD 
            var $SGBD_password;
            // Attribut de l\'hôte du SGBD 
            var $SGBD_host;
            // Attribut du nom de la base de données 
            var $SGBD_base;
            // Attribut de connection
            var $connect;
            // Attribut de requête
            var $requete; 
    
            // Définition du constructeur 
            function SGBD ($login, $password, $host, $base)
                {
                    // Vérification des variables
                     if (empty ($login) | empty ($host) | empty ($base))
                        {
                            // Affichage du message d\'erreur 
                            echo \"<b>Erreur :</b> Une ou plusieurs variable(s) n\'ont pas été renseigné.\";
                            exit;
                        }
    
                    else {
                            // Initialisation des attributs 
                            $this->SGBD_login = $login;
                            $this->SGBD_password = $password;
                            $this->SGBD_host = $host;
                            $this->SGBD_base = $base;
                        }
                }
        }
    ?>
    Code:
    <?php
    /* Fichier : MySQL.SGBD.class.php */
    // Création de la classe fille 
    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 \"<b>Erreur :</b> Connection à MySQL impossible\";
                            exit;
                        }
    
                    // Connection à la base de données
                    if (!mysql_select_db ($this->SGBD_base, $connect))
                        {
                            // Affichage du message d\'erreur
                            echo \"<b>Erreur :</b> 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 \"<b>Erreur :</b> Impossible d\'effectuer la requête au serveur\";
                            exit;
                        }
                    else {
                            // Initalisation 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); 
                }
        }
    ?>
    Code:
    <?php
    /* Fichier : SGBD.php */
    // Inclusion de la classe mère
    include (\"SGBD.class.php\");
    
    // Création d\'un nouvel objet de la classe SGBD
    /* Les informations sont adaptés à mon serveur, à vous de les modifier pour quelles correspondent avec votre SGBD */ 
    $SGBD = new SGBD (\'root\', \'\', \'localhost\', \'test\');
    
    /* Initialisation de la variable du SGBD correspondant */
    $SQL = \"MySQL\";
    
    // Inclusion de la classe fille du SGBD correspondant
    include ($SQL.\".SGBD.class.php\");
    
    // Création d\'un nouvel objet de la classe fille
    $database = new $SQL();
    
    // Connection à la base de données
    $database->connect();
    
    // Déconnection de la base de données
    $database->deconnect();
    ?>
    Pitié c urgent !!!

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    Tu px citer la ligne 20 de SGDB.php ???

    Sinon,

    (empty ($login) | empty ($host) | empty ($base))
    Ne correspond pas à ce que tu recherches : ici tu effectues un OU binaire, le OU logique est plutôt ||, soit :

    (empty ($login) || empty ($host) || empty ($base))

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695
    Merci j\'ai modifier mais cela ne change rien, j\'ai toujour sle meme message derreur

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    28
    Salut,

    l\'erreur se trouve pas ds SGBD.class.php mais dans le fichier qui appelle le constructeur de la classe SGBD. Ton constructeur doit prendre 4 argument et tu appelle le constructeur sans argument.

    // Création d\'un nouvel objet de la classe fille
    $database = new $SQL();

    or

    1 - ta classe MYSQL extends SGBD (le probleme du constructeur est la)

    2 - tu as ecris
    /* Les informations sont adaptés à mon serveur, à vous de les modifier pour quelles correspondent avec votre SGBD */
    $SGBD = new SGBD (\'root\', \'\', \'localhost\', \'test\');

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


    pour corriger le probleme, tu devrais ecrire
    $database = new $SQL(\'root\', \'\', \'localhost\', \'test\');

    Note : tu remarques que c pas logique d\'avoir à preciser 2 fois codes de connexions dans un meme programme.

    note: propose ta solution aux developpeur de ATTILA-PHP ou ATTILA-TENGRIS, ils seront intéressé peut etre pour l\'utiliser ta classe.


    bonne chance

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695
    Merci beau coup user2222, ca marche !!


    et a propos de Attila-PHP, c un portail c ca?
    Comment le sais tu quil pourrait etre interressé?

    Parceque en fait, cette classe est sensé etre un exmple pour les newbies afin dapprend à utiliser les classes en PHP ! (dailleur jappren en meme temps lol je pensais pas vraiment la distibuer, mais si il la veulent, je veux bien (mais faudrait la perfectionner quan dmeme)

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695
    C\'ayest ! jai postez le troisième article sur la POO, (encore merci à user2222),

    Il y a la classe SQL corrigé + Une classe denvoi demail + les commentaires qui vont avec !

    http://www.moteurprog.com/?url=article_affiche.php&ID_article=66

  7. #7
    Membre MP
    Inscrit
    août 2013
    Messages
    28
    Salut,

    content pour toi.

    Je fait partie du groupe de developpement de Attila PHP. C pour ca, et je sais qu\'il recherchait des gens pour le developpement. Le projet Attila Tengri a ete reecrit pour utiliser des classes (POO) de partout.

    Et puis, ils se posaient des petites questions relatives a la gestion des SGBD multiples et à la gestion des magic_quotes.

    Bon courage pour ton site.


    :wink:

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695
    Je leur en ai parlé aucune nouvelle, si tu pouvais directement leur adressé un mot ;-)

    merci

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé