IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Cannot declare class


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Avril 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2019
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Cannot declare class
    Bonjour à tous,

    Me revoilà avec toujours mon envie de remettre mon site vieux d'il y a 10 ans à jour.

    J'ai réussi pour un premier à changer les requêtes MYSQL en MYSQLI, tout va bien ! Merci aux gens d'ici qui m'ont aidé !

    J'ai donc souhaité appliquer le même code à un second site mais les choses se compliquent notamment à cause de la fonction d'appel de connexion à la base de données. En effet, mon code est dans un fichier bdd.php que j'appelle dans fonctions.php et index.php (qui appelle lui aussi fonctions.php). A l'époque, pas de souci puisque j'utilisais simplement le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $db = mysql_connect("$serveur", "$bddlogin", "$bddmdp");
    mysql_select_db("$base", $db);


    Mais maintenant, j'utilise le code ci-dessous pour la connexion et pour changer mes requêtes mysql_query en mysqli_query.

    J'obtiens l'erreur suivante :
    Fatal error: Cannot declare class DB, because the name is already in use in bdd.php on line 77
    Mon idée est alors d'ajuster le script pour dire de créer cette classe DB seulement si elle n'existe pas déjà mais je fais quelque chose de faux puisque ça ne change pas l'erreur. J'avoue que je ne m'y connais pas du tout en class ou méthode, ça se ressentira sûrement dans mon code. Est-ce que quelqu'un a une idée ? En vous remerciant !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    define("MYSQL_SERVER_NAME",$db_host );
    define("MYSQL_USER_NAME",$db_user);
    define("MYSQL_USER_PASSWORD",$db_pass);
    define("DATABASE_NAME",$db_name);
     
    if(method_exists('DB','read'))
    {
     
    echo "oui";
    }
     
    else {
     
    echo "non";
     
     
    class DB {
      private static $instance = null;
     
     const HOST = MYSQL_SERVER_NAME;
     const USER = MYSQL_USER_NAME;
     const PASW = MYSQL_USER_PASSWORD;
     const DBNA = DATABASE_NAME;
     
      public static function connect() {  
        if(is_null(self::$instance)) {
          self::$instance = new mysqli(self::HOST,self::USER,self::PASW, self::DBNA); 
        } 
        return self::$instance;
      } // public static function connect() 
    } // class DB
     
     function x_mysql_query($query) {
       return mysqli_query(DB::connect(),$query);
     } 
     
     function x_mysql_error() {
       return mysqli_error(DB::connect());
     } // function x_mysql_error() 
     
     function x_mysql_num_rows($result) {
       return mysqli_num_rows($result);
     } // function x_mysql_num_rows($result)
     
     function x_mysql_fetch_array($result) {
       return mysqli_fetch_array($result);
     } // function x_mysql_fetch_array($result)
     
     function x_mysql_insert_id() {
       return mysqli_insert_id(DB::connect());
     } // function x_mysql_insert_id() 
     
     function x_mysql_affected_rows() {
       return mysqli_affected_rows(DB::connect());
     } // function x_mysql_affected_rows() 
    }

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,
    Citation Envoyé par Steff_Butterfly Voir le message
    J'avoue que je ne m'y connais pas du tout en class ou méthode, ça se ressentira sûrement dans mon code.
    Tu dois potasser un peu de théorie avant de t'embarquer sur les classes et autres joyeusetés sinon c'est mort, cela va te prendre des semaines.
    Là par exemple, tu redéfinis le code de la classe DB et des fonctions à chaque fois que tu inclus le fichier, ce qui est interdit.
    Il te manque le résultat de class_exists() pour réorienter le code correctement.

    Après il faut aussi te poser la question de comment tu vas inclure l’implémentation de ta classe où que tu sois dans ton code (mécanisme qui s'appelle autoloading). Tiens un peu de lecture par ici

    En 10 ans, PHP a tellement évolué dans le bon sens, qu'il faut passer un peu de temps pour saisir les nouveaux concepts et nouvelles syntaxes.

Discussions similaires

  1. Declaration classe et méthode c++ cli
    Par Blunt dans le forum C++/CLI
    Réponses: 7
    Dernier message: 10/07/2007, 23h02
  2. [Wamp] cannot redeclare class maClasse
    Par pcdj dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 10/01/2007, 08h03
  3. [Debutant].Declaration classe externe ?
    Par SebRs dans le forum Débuter
    Réponses: 1
    Dernier message: 19/04/2006, 19h21
  4. Cannot redeclare class...
    Par DeezerD dans le forum Langage
    Réponses: 4
    Dernier message: 02/11/2005, 18h51
  5. No MST is currently in progress, cannot declare a
    Par antigone dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/07/2003, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo