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 :

Conflit dans base de données [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 123
    Par défaut Conflit dans base de données
    Bonjour à tous,

    Je vous écris puisque j'ai un soucis avec lequel je me bat depuis maintenant 2 jours, je ne m'en sort pas...

    Je souhaite insérer dans ma base un événement suite à la saisie d'informations dans un formulaire. Cet événement sera inséré dans la table "evenement".

    Voici le formulaire :

    Nom : Sans titre3.png
Affichages : 436
Taille : 9,8 Ko

    Dans un premier temps, il faut renseigner le nom d'une tournée. Ces noms sont présents dans la table "tournee". Au lieu de récupérer le nom de cette tournée (ce qui est affiché), je récupère l'id de celle-ci.
    il faut ensuite renseigner la ville, l'adresse, le lien, et la description.

    Lors de la création de ma base de données, j'ai décidé de créer plusieurs tables avec des relations. Par exemple, la clé primaire de la table "tournee" est "id_tournee". Cet "id_tournee" est aussi présent dans la table "evenement" afin de définir automatiquement la tournée à laquelle appartient tel ou tel événement.

    Mon code ne fonctionnant pas, j'ai alors décidé de tester ma requête directement dans phpmyadmin et voici le résultat :

    Nom : Sans titre.png
Affichages : 488
Taille : 66,8 Ko

    Le soucis est donc celui de cette erreur car je pense que mon code est correct :

    Code php : 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
    57
    58
    59
    60
    61
    62
    63
    64
     
    <form  class="formajoutevent" action="" method="post" enctype="multipart/form-data">
                <select name="tournee" required>
                    <?php
                        try
                        {
                            $bdd = new PDO('mysql:host=localhost;dbname=medrano2017;charset=utf8', 'root', '');
                        }
                        catch(Exception $e)
                        {
                            die('Erreur : '.$e->getMessage());
                        }
                        $reponse = $bdd->query('SELECT * FROM tournee');
     
                        while ($donnees = $reponse->fetch())
                        {
                        ?>
                        <option value="<?php echo $donnees['id_tournee'];?>"><?php echo $donnees['nom_tournee'];?></option>
                        <?php
                        }
                        $reponse->closeCursor();
                    ?>
                </select>
     
                <!--<input type="file" name="affiche" />-->
     
                <input type="text" name="ville" placeholder="Ville de l'événement" required>
     
                <input type="text" name="adresse" placeholder="Adresse de l'événement" required>
     
                <input type="text" name="lienresa" placeholder="Lien de réservation" required>
     
                <textarea type="text" name="description" placeholder="Plus d'informations..."  required></textarea>
     
                <input class="ajoutertournee" type="submit" value="Ajouter">
            </form>
     
            <?php
     
            //var_dump( $_POST['tournee'] );
            //var_dump( $_POST['adresse'] );
            //var_dump( $_POST['adresse'] );
            //var_dump( $_POST['lienresa'] );
            //var_dump( $_POST['description'] );
     
                if(isset($_POST['ville']) && isset($_POST['adresse']) && isset($_POST['lienresa']) && isset($_POST['description']))
                {
                    try
                    {
                        $bdd = new PDO('mysql:host=localhost;dbname=medrano2017;charset=utf8', 'root', '');
                    }
                    catch(Exception $e)
                    {
                       die('Erreur : '.$e->getMessage());
                    }
                    $reponse = $bdd->query('INSERT INTO evenement (id_tournee, ville_event, adresse_event, lien_resa_event, description_event) VALUES ("'.$_POST['tournee'].'","'.$_POST['ville'].'","'.$_POST['adresse'].'","'.$_POST['lienresa'].'","'.$_POST['description'].'")');
     
                    //header('Location: ../index.php');
                }
                else
                {
                    echo 'erreur';
                }
            ?>

    Voici les structures de mes tables, ainsi que le schéma relationnel :
    Table "evenement" :
    Nom : Sans titre2.png
Affichages : 448
Taille : 87,5 Ko

    Table "tournee" :
    Nom : tournee.png
Affichages : 456
Taille : 57,9 Ko

    Schéma relationnel :
    Nom : Sans titre.png
Affichages : 453
Taille : 23,3 Ko

    Merci d'avance à tout le monde !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Je pense que vous vous êtes trompé dans la relation entre evenement et seance.
    Comme le montre votre message d'erreur de façon très explicite, vous avez créé une clé étrangère qui dit que l'id_event de evenement doit être présent dans seance(id_event).

    J'imagine que c'était l'inverse que vous souhaitiez implémenter.
    => Modifiez votre clé étrangère au niveau de l'id_event

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 123
    Par défaut
    Hum, en effet j'ai modifié le sens de cette relation et maintenant je peux en ajouter !
    Merci !

    Cependant, je croyais mon code bon, et il ne l'est pas, mon événement ne s'ajoute toujours pas dans la base....

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Vous n'êtes pas vraiment dans le bon forum, et encore moins pour des questions de code PHP, mais avez-vous commit ? (je ne vois pas de validation dans votre code)

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 123
    Par défaut
    Bonjour,

    Je ne fait jamais de commit(), sur les autres pages l'ajout à la base se passe correctement c'est pourquoi ici je ne comprends pas...

  6. #6
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Salut, un seul appel à ta base de données suffit (tu peux le mettre en dehors de ton form) pas besoin de créer autant qu'il y a de requête...
    Juste en bas de ta connexion à la BDD, ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    Pour les éventuelles erreurs telles que retournées dans PHPMYADMIN
    PS: Essaie d'utiliser autant que possibles les requêtes préparées pour tes requêtes avec passage de variable et évites de les concaténer directement dans ta requête

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/10/2005, 18h24
  2. [VB.NET]Champ image dans base de donnée access
    Par dankes dans le forum Windows Forms
    Réponses: 10
    Dernier message: 06/10/2005, 15h31
  3. [VB.NET] filtre dans base de donnée
    Par speedtug dans le forum Windows Forms
    Réponses: 7
    Dernier message: 21/09/2005, 17h12
  4. Réponses: 8
    Dernier message: 11/05/2005, 14h48
  5. Conflit entre bases de données
    Par BRODU dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/10/2004, 11h40

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