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 :

Impossible de créer des tables liées via php ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut Impossible de créer des tables liées via php ?
    Bonjours, j'ai un problème étrange...
    Voilà, j'ai un système de module dans mon appli php. Quand j'ajoute un module, j'exécute un fichier contenant les tables sql à créer.
    Les tables sans clés étrangères ne pause pas de problème, mais vous l'aurez deviné, c'est pas le cas avec.
    Pourtant dans phpMyAdmin, tout ce passe nickel , avec ou sans clés.

    voici les tables et la commande:
    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
     
    CREATE TABLE IF NOT EXISTS `text_template` (
      `id_text_template` varchar(20) NOT NULL,
      `label` varchar(200) NOT NULL,
      PRIMARY KEY (`id_text_template`)
    ) ENGINE=InnoDB;
     
     
    CREATE TABLE IF NOT EXISTS `text_panel` (
      `id_panel` int(11) NOT NULL,
      `id_text_template` varchar(20) NULL,
      `content` longtext NOT NULL,
      PRIMARY KEY (`id_panel`),
      FOREIGN KEY (`id_panel`) REFERENCES `panel` (`id_panel`) ON DELETE CASCADE,
      FOREIGN KEY (`id_text_template`) REFERENCES `text_template` (`id_text_template`) ON UPDATE CASCADE
    ) ENGINE=InnoDB;
     
    CREATE TABLE IF NOT EXISTS `text_component` (
      `id_text_component` int(1) NOT NULL,
      `id_text_template` varchar(20) NULL,
      `sound` varchar(300) NULL,
      `mute` tinyint(1) NOT NULL,
      PRIMARY KEY (`id_text_component`),
      FOREIGN KEY (`id_text_template`) REFERENCES `text_template` (`id_text_template`) ON UPDATE CASCADE
    ) ENGINE=InnoDB;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->exec(file_get_contents('component/text/install.txt'));
    Une idée du pourquoi php ou mysql refuse de créer les tables??

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Que fait cette méthode exec au juste ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut
    salut Benjamin Delespierre!

    La méthode exec est juste une méthode délégué d'un objet PDO.
    Je me demande si il ne faudrait pas créer les tables une part une, et non toute d'un coup ....?

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Par défaut, PHP t'empêche d'exécuter plusieurs requêtes d'un seul coup.

    Ce que tu peux faire, c'est surcharger cette méthode pour qu'elle découpe la requête selon le séparateur ; et exécute tous les morceaux les uns après les autres mais c'est terriblement dangereux. Sois sûr de ce que tu fais. Si tu dispose des transaction (table InnoDB) alors cette opération est en revanche pratiquement sans risque car tu pourras toujours revenir en arrière.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut
    Ok merci beaucoup Benjamin Delespierre, j'étais sur la bonne voix

    Mais ça me laisse perplexe, sans clés étrangère, et en MYISAM, tout était exécuté.
    Cela voudrais dire que sans transaction possible, php effectuer la requête, et que avec, il refuse. Ça devrait logiquement être le contraire non?

    Enfin merci beaucoup !

    a++

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Tu as réussi à faire passer un exec multi-requêtes avec PDO ??

Discussions similaires

  1. [AC-2010] Impossible de créer des relations avec une table liée à Outlook
    Par lagratteCchouette dans le forum Modélisation
    Réponses: 4
    Dernier message: 26/01/2014, 21h44
  2. [AC-2007] Créer un enregistrement avec des tables liées sur SQL Server
    Par NEfanda dans le forum Access
    Réponses: 2
    Dernier message: 29/04/2010, 19h31
  3. Réponses: 1
    Dernier message: 19/08/2009, 21h20
  4. Créer un bouton pour gérer la source des tables liées
    Par Fredo67 dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/02/2008, 10h31

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