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 :

Inserer et d'afficher les informations provenant d'un formulaire


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    developpeur web
    Inscrit en
    Août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : developpeur web

    Informations forums :
    Inscription : Août 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Inserer et d'afficher les informations provenant d'un formulaire
    Bonjour à tous,

    Je dois réaliser un script en (MySQL et PHP) qui doit insérer et afficher les informations en provenance d’un formulaire à partir de trois tables différentes.
    Je dois afficher le pseudo du membre (table membre), le titre de la salle(table salle), le commentaire et la date (table avis).

    La table 1 avis :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE IF NOT EXISTS `avis` (
      `id_avis` int(5) NOT NULL AUTO_INCREMENT,
      `id_salle` int(5) NOT NULL,
      `id_membre` int(5) NOT NULL,
      `note` int(2) DEFAULT NULL,
      `date` datetime DEFAULT NULL,
      `commentaire` text,
      PRIMARY KEY (`id_avis`),
      KEY `fk_avis_salle1_idx` (`id_salle`),
      KEY `fk_avis_membre1_idx` (`id_membre`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

    Table 2 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE IF NOT EXISTS `membre` (
      `id_membre` int(5) NOT NULL AUTO_INCREMENT,
      `pseudo` varchar(15) DEFAULT NULL,
      `mdp` varchar(32) DEFAULT NULL,
      `nom` varchar(20) DEFAULT NULL,
      `prenom` varchar(20) DEFAULT NULL,
      `email` varchar(30) DEFAULT NULL,
      `sexe` enum('m','f') DEFAULT NULL,
      `ville` varchar(20) DEFAULT NULL,
      `cp` int(5) DEFAULT NULL,
      `adresse` varchar(30) DEFAULT NULL,
      `statut` int(1) DEFAULT NULL,
      PRIMARY KEY (`id_membre`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

    Table 3 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE IF NOT EXISTS `salle` (
      `id_salle` int(5) NOT NULL AUTO_INCREMENT,
      `pays` varchar(20) NOT NULL,
      `ville` varchar(20) NOT NULL,
      `adresse` text NOT NULL,
      `cp` varchar(5) NOT NULL,
      `titre` varchar(200) NOT NULL,
      `description` text NOT NULL,
      `photo` varchar(200) NOT NULL,
      `capacite` int(3) NOT NULL,
      `categorie` varchar(20) NOT NULL,
      PRIMARY KEY (`id_salle`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;

    J’essaie avec ce script mais je n’arrive pas à récupérer les informations contenues dans les tables salle et membre, je ne sais pas si ce script convient pour faire ce petit travail :
    Ou si vous connaissez la méthode à utiliser pour ce genre d’exercice...
    Merci d'avance
    Cordialement
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    <?php
     
    //CECI EST LE SCRIPT QUI NE FONCTIONNE PAS
    $sql = executeRequete("INSERT INTO avis(id_avis,id_salle,id_membre,note,date,commentaire)
          SELECT '.mysql_insert_id().',m.id_membre,m.pseudo,s.id_salle,now(),s.titre
          FROM  membre m, salle s
          WHERE m.id_membre = id_membre
          AND s.id_salle = id_salle ");
     
     
    }
     
     
    //LE RESTE FONCTIONNE PARFAITEMENT BIEN
    echo debug($sql);
    var_dump($sql);    
    ?>
     
    <!-- FORMULAIRE AVIS -->
     
        <form method="post" action="" >
            <fieldset>
                <legend><h2> FORMULAIRE</h2></legend>
     
                <label for="pseudo">Pseudo :</label>
                <input type="text" name="pseudo" id="pseudo" value="<?php if(isset($_POST['pseudo'])) {echo $_POST['pseudo'];}?>"/>
                <br/><br/>
                <label for="note">Note :</label> 
                <select name="note" id="note" >
                <option>20</option>
                <option>19</option>
                <option>18</option>
                <option>17</option>
                <option>16</option>
                <option>15</option>
                <option>14</option>
                <option>13</option>
                <option>12</option>
                <option>11</option>
                <option>10</option>
                <option>09</option>
                <option>08</option>
                <option>07</option>
                <option>06</option>
                <option>05</option>
                <option>04</option>
                <option>03</option>
                <option>02</option>
                <option>01</option>
                <option>00</option>
                </select>
                <br/>
                <br/>
                <label for="commentaire">Commentaire</label>
                <br/>
                <textarea name="commentaire" id="commentaire" rows="10" cols="63" value="<?php if(isset($_POST['commentaire'])) {echo $_POST['commentaire'];}?>">
                </textarea>
                <br />
                <input type="submit" name="valider" value="Valider" />
     
            </fieldset>
     
        </form>
     
    <div class="clear"></div>    
    <fieldset>    
     
               <?php
     
                    $resultat = executeRequete("SELECT a.id_avis,a.id_membre,a.id_salle,a.commentaire,a.note,
                    date_format(date, '%d-%m-%Y') AS dateFr,
                    date_format(date, '%H:%i:%s') AS  heurFr, 
                    s.id_salle,s.titre,m.id_membre,m.pseudo
                    FROM avis a,membre m,salle s 
                    WHERE a.id_membre=m.id_membre AND a.id_salle=s.id_salle
                    ORDER BY date DESC LIMIT 0,3");
     
                    echo '<legend><h2>Il y a '.$resultat->num_rows.' commentaires</h2></legend>';
     
     
    //var_dump($resultat);    
                    while ($commentaire = $resultat->fetch_assoc())
                    {
                        echo '<div class="message">';
     
                        echo'<div class="titre">  La '.
                              $commentaire['titre'].'  '.$commentaire['note'].'/20 <br/>Par '.
                              $commentaire['pseudo'].' le '.
                              $commentaire['dateFr']. ' a '.
                              $commentaire['heurFr'].'</div>';
                        echo '<div class="contenu">'.
                              $commentaire['commentaire']. '</div>';
     
                        echo '</div><hr/>';      
     
                    }
     
    ?>
     
    </fieldset>    
    </div>

  2. #2
    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
    ça aiderait d'avoir 1) le message d'erreur (parce que a priori, tu dois en avoir un) et 2) la code de la fonction executerRequete().

    Mais là tout de suite, je peux dire que mettre mysql_insert_id() directement à l'intérieur d'une requête INSERT n'est pas une bonne idée.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    developpeur web
    Inscrit en
    Août 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : developpeur web

    Informations forums :
    Inscription : Août 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Voici la fonction qui se trouve dans le fichier fonctions et je fais un require_once() pour l'appel de cette fonction
    ____________________________________
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /*j'évite d'utiliser pour la requête $resultat pcq hormis ce code il y a d'autres scripts qui permettent de faire autre chose dans la page et à la place j'ai mis $sql pour faire des tests facilement  */
     
    function executeRequete($req)
    {
      global $mysqli;
      $resultat = $mysqli->query($req);
      if(!$resultat)
      {
        die('Erreur sur la requete.<br/> : ' .$mysqli->error.'<br/>');
      }
      return $resultat;
    j'ai modifié la requête pour respecter les colonnes de la table AVIS:
    celle-ci fonctionne à moitié, mais en dupliquant l'enregistrement contenu dans la table, l'enregistrement que j'ai rentré manuellement dans la table AVIS sans les ID de la table SALLE et MEMBRE...
    Dans la console MYSQL J'ai testé la portion de la requête SELECT elle m'affiche bien toutes les infos, mais lorsque j'utilise le formulaire en ligne rien ne fonctionne.

    Je ne sais pas s'il y a une autre méthode qui permet de résoudre ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    //la requête que j'ai modifié
     
    $sql = executeRequete("INSERT INTO avis(id_avis,id_salle,id_membre,note,date,commentaire)
       SELECT 'last_insert_id()',m.pseudo,s.titre,a.note,now(),a.commentaire
       FROM  membre m, salle s,avis a
       WHERE m.id_membre = a.id_membre
       AND s.id_salle = a.id_salle ");
    AU fait ce que je cherche c'est de récupérer les ID de la table membre et de la table salle, afin de pouvoir afficher le pseudo du membre(de la table MEMBRE)qui laisse un commentaire d'appréciation à propos de la salle qu'il a loué, le nom de la salle qu'est la colonne titre (de la table SALLE), le commentaire, la note et la date (de la table AVIS), j'ai crée cette requête dans le but de récupérer les informations contenues dans les 3 tables, mais pour cela j'ai besoin des ID pour la jointure dans SELECT, il faudra faire la requête d'insertion dans la table AVIS lorsque le formulaire sera validé...

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/08/2007, 07h46
  2. [AJAX] Liste déroulante pour afficher les informations en ajax div ?
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 17/11/2006, 09h06
  3. afficher les informations texte depuis mysql
    Par arti2004 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 26/02/2006, 16h54
  4. [IdHTTP] Récupérer les informations provenant d'une serveur
    Par newbie57 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 24/11/2005, 12h33
  5. Afficher les informations du système
    Par orisis dans le forum Windows
    Réponses: 8
    Dernier message: 10/06/2004, 15h10

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