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 :

Plusieurs enregistrements à la fois dans une même table


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Points : 34
    Points
    34
    Par défaut Plusieurs enregistrements à la fois dans une même table
    Bonjour,

    J'ai une table LIVRES (lid,livre,ldescr,auteur_id), AUTEURS (aid,auteur,adescr) et GENRES (gid,genre), ainsi qu'une table intérmediaire GENRES_LIVRES (genre_id,livre_id) qui permet d'avoir plusieurs genres pour un livre.
    Donc pour le livre qui a l'ID '1', il y a par exemple dans la table intérmediaire les genres avec l'id '4' et '7'. Ce qui donnera dans la table intermediaire, deux enregistrements comme suit:
    genre_id livre_id
    4 1
    7 1

    J'arrive bien à afficher les données GENRES en faisant des relations entre les tables. Par contre, pour l'enregistrement via un formulaire, je ne vois pas comment procédé. J'ai une liste de case a cocher dans le formulaire d'ajout qui ressemble à ca:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php 
    $sql5 = 'SELECT * FROM genres';
    $req5 = mysql_query($sql5) or die('Erreur SQL !<br>'.$sql5.'<br>'.mysql_error());
     
    while($data5 = mysql_fetch_assoc($req5))
        {
    echo '<input type="checkbox" name="genres" value="'.$data5['id_genre'].'">'.$data5['genre'].'';
    } ?>
    Pour récupérer les données, j'utilise en géneral le _POST mais la, étant donné qu'il y a plusieurs enregistrements à ajouter à la table intermédiaire, je ne vois pas comment faire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(isset($_POST['genres']))      $genres=$_POST['genres'];
    else      $genres="";
    Comment dois-je formuler ma requête INSERT INTO pour plusieurs enregistrements ?

    Merci par avance.

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Attention, toutes les cases à cocher de ton formulaire auront le même nom (genres). Tu ne pourras alors en récupérer qu'une (la dernière ?)

    Un code de ce style serait plus approprié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while($data5 = mysql_fetch_assoc($req5))
            echo '<input type="checkbox" name="genre_'.$data5['id_genre'].'"/>'.$data5['genre'];
    Tu récupéreras ainsi toutes les valeurs pour traitement.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux aussi bien créer un groupe de case à cocher en récupérant leurs valeurs dans un tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($data5 = mysql_fetch_assoc($req5))
        {
    echo '<input type="checkbox" name="genres[]" value="'.$data5['id_genre'].'">'.$data5['genre'].'';
    }
    Tu récupères le résultat dans un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tab_genres = $_POST['genres'];
    foreach ($tab_genre as $genre)
    {
      //traitement d'un genre
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [2008R2] Calcul de durée entre plusieurs enregistrements dans une même table
    Par mikmik60 dans le forum Développement
    Réponses: 2
    Dernier message: 20/10/2014, 13h28
  2. Copier un enregistrement dans une même table
    Par slammer dans le forum Langage SQL
    Réponses: 11
    Dernier message: 04/05/2010, 23h17
  3. Réponses: 4
    Dernier message: 21/11/2007, 12h19
  4. [MySQL] Conversion de plusieurs dates dans une même table MySQL
    Par laetiheu dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/08/2007, 09h49
  5. [Requête] plusieurs champs dans une même table ayants la même source
    Par Christophe93250 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/04/2006, 16h18

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