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 :

problème d'alimentation de 2 tables en même temps


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut problème d'alimentation de 2 tables en même temps
    Bonjour,

    je suis sur la réalisation d'une billetterie interne qui permet juste la consultation des offres.

    J'ai fait mes tables de manière suivante :
    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
    102
    103
    104
    105
     
    --
    -- Base de données: `test`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `activite`
    --
     
    CREATE TABLE `activite` (
      `idactivite` int(11) NOT NULL AUTO_INCREMENT,
      `nomactivite` varchar(250) NOT NULL,
      PRIMARY KEY (`idactivite`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
     
    --
    -- Contenu de la table `activite`
    --
     
    INSERT INTO `activite` VALUES(1, 'eurodisney');
    INSERT INTO `activite` VALUES(2, 'parc asterix');
    INSERT INTO `activite` VALUES(3, 'piscine');
    INSERT INTO `activite` VALUES(4, 'tennis');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `billet`
    --
     
    CREATE TABLE `billet` (
      `idbillet` int(11) NOT NULL AUTO_INCREMENT,
      `idactivite` int(11) NOT NULL,
      `idhotel` int(11) NOT NULL,
      `idvoyage` int(11) NOT NULL,
      `idoperateur` int(11) NOT NULL,
      `datedebut` date NOT NULL,
      `datefin` date NOT NULL,
      `description` blob NOT NULL,
      `prix` float NOT NULL,
      `reduction` float NOT NULL,
      PRIMARY KEY (`idbillet`),
      KEY `idactivite` (`idactivite`,`idhotel`,`idvoyage`,`idoperateur`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `billet`
    --
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `hotel`
    --
     
    CREATE TABLE `hotel` (
      `idhotel` int(11) NOT NULL AUTO_INCREMENT,
      `nomhotel` varchar(250) NOT NULL,
      PRIMARY KEY (`idhotel`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `hotel`
    --
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `operateur`
    --
     
    CREATE TABLE `operateur` (
      `idoperateur` int(11) NOT NULL AUTO_INCREMENT,
      `nomoperateur` varchar(250) NOT NULL,
      PRIMARY KEY (`idoperateur`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
     
    --
    -- Contenu de la table `operateur`
    --
     
    INSERT INTO `operateur` VALUES(1, 'jet tour');
    INSERT INTO `operateur` VALUES(2, 'easy jet');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `voyage`
    --
     
    CREATE TABLE `voyage` (
      `idvoyage` int(11) NOT NULL AUTO_INCREMENT,
      `nomvoyage` varchar(250) NOT NULL,
      PRIMARY KEY (`idvoyage`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `voyage`
    --
    INSERT INTO `activite` VALUES(1, 'egypte');
    INSERT INTO `activite` VALUES(2, 'martinique');
    le soucis est que lors d'un nouvelle enregistrement il me prend pas le nom de l'activité et me remplis pas mon table billet.

    voici le code

    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
     
    <?php
    // on se connecte à notre base
    $base = mysql_connect ('localhost', 'user', 'mdp');
    mysql_select_db ('base', $base) ;
    ?>
    <html>
    <head>
    <title>billet</title>
    </head>
    <body>
    <?php
    // on teste si les variables du formulaire sont bien déclarées
    if (isset($_POST['nomactivite']) &&
    isset($_POST['datedebut']) &&
    isset($_POST['datefin']) &&
    isset($_POST['description']) &&
    isset($_POST['prix']) && 
    isset($_POST['reduction'])) 
    {
     
    // on prépare la requête pour récupérer l'id de l'activite
    $sql = 'SELECT idactivite FROM activite WHERE nomactivite = "'.$_POST['nomactivite'].'"';
     
    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    // on récupère le résultat sous forme d'un tableau
    $data = mysql_fetch_array($req);
    // on libère l'espace mémoire alloué pour cette interrogation de la base
    mysql_free_result ($req);
    // on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
    $sql = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
    'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
    // on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
    mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
    // on ferme la connexion à la base
    mysql_close();
    echo 'Nous venons d\'insérer une nouvelle activite : '.$_POST['nomactivite'];
    }
    else {
    echo 'Les variables du formulaire ne sont pas déclarées';
    }
    ?>
    </body>
    </html>
    Merci par avance

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    si tu affiches

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'SELECT idactivite FROM activite WHERE nomactivite = "'.$_POST['nomactivite'].'"'; exit;
    ça te renvoie quoi ?

    Utilises les fonctions d'echappement dans tes requêtes

    mysql_real_escape_string()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'SELECT idactivite FROM activite WHERE nomactivite = "'.mysql_real_escape_string($_POST['nomactivite']).'"'; exit;
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Essai d'enlever un double cote près de values
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = 'INSERT INTO billet VALUES("'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
    'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
    A la recherche d'un film : http://chercher-un-film.com

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    Merci pour vos réponses effectivement c'était un double quote en trop .

    Par contre , comment faire si je veux alimenter toute mes base depuis mon formulaire ? déjà est ce possible ?

    mon idée serait que la personne dispose d'un formulaire unique pour l'enregistrement des données

    Merci

  5. #5
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Citation Envoyé par schranz Voir le message
    Merci pour vos réponses effectivement c'était un double quote en trop .

    Par contre , comment faire si je veux alimenter toute mes base depuis mon formulaire ? déjà est ce possible ?

    mon idée serait que la personne dispose d'un formulaire unique pour l'enregistrement des données

    Merci
    Tu fais plusieurs insert.
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sql = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
    'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
     
     
    $sql1 = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
    'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
     
    $sql2 = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
    'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';

  7. #7
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Citation Envoyé par schranz Voir le message
    comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sql = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
    'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
     
     
    $sql1 = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
    'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
     
    $sql2 = 'INSERT INTO billet VALUES(""'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
    'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
    Quel est l'intérêt d'insérer la même chose X fois ? J'ai mal compris ton besoin peut-être. Tu pourrais l'exprimer plus clairement en citant tes tables etc par exemple ?
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    En faite j'ai une table global appelé billet qui regroupe tout mes éléments
    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
     
    --
    -- Structure de la table `billet`
    --
     
    CREATE TABLE `billet` (
      `idbillet` int(11) NOT NULL AUTO_INCREMENT,
      `idactivite` int(11) NOT NULL,
      `idhotel` int(11) NOT NULL,
      `idvoyage` int(11) NOT NULL,
      `idoperateur` int(11) NOT NULL,
      `datedebut` date NOT NULL,
      `datefin` date NOT NULL,
      `description` blob NOT NULL,
      `prix` float NOT NULL,
      `reduction` float NOT NULL,
      PRIMARY KEY (`idbillet`),
      KEY `idactivite` (`idactivite`,`idhotel`,`idvoyage`,`idoperateur`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    et 4 tables appelé activité, hôtel, opérateur et voyage . Ces 4 tables ont juste un idactivité et nomactivite.

    j'aimerai en faite depuis un formulaire unique alimenter ces tables a chaque nouveau enregistrement

    Sachant que par la suite je ferai une requête ajax pour que le visiteur puisse voir selon son choix les voyage proposé par l'opérateur .

    Merci

  9. #9
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Citation Envoyé par schranz Voir le message
    En faite j'ai une table global appelé billet qui regroupe tout mes éléments
    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
     
    --
    -- Structure de la table `billet`
    --
     
    CREATE TABLE `billet` (
      `idbillet` int(11) NOT NULL AUTO_INCREMENT,
      `idactivite` int(11) NOT NULL,
      `idhotel` int(11) NOT NULL,
      `idvoyage` int(11) NOT NULL,
      `idoperateur` int(11) NOT NULL,
      `datedebut` date NOT NULL,
      `datefin` date NOT NULL,
      `description` blob NOT NULL,
      `prix` float NOT NULL,
      `reduction` float NOT NULL,
      PRIMARY KEY (`idbillet`),
      KEY `idactivite` (`idactivite`,`idhotel`,`idvoyage`,`idoperateur`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    et 4 tables appelé activité, hôtel, opérateur et voyage . Ces 4 tables ont juste un idactivité et nomactivite.

    j'aimerai en faite depuis un formulaire unique alimenter ces tables a chaque nouveau enregistrement

    Sachant que par la suite je ferai une requête ajax pour que le visiteur puisse voir selon son choix les voyage proposé par l'opérateur .

    Merci
    Donc comme je le disais, tu fais 4 insert, un pour chaque table. Je comprends pas bien la difficulté
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    Hum en faite je me suis mal exprimé car je pense que je vois la finalité de mon produit.

    pour te donner un exemple
    on va dire que j'enregistre une activité appelé sport donc quand j'enregistre ma table activité va me créer un id et le nom sport ensuite le reste des informations va dans la table billet jusque la tout va bien

    Mon but serait au final que donc la table billet arrive a récupérer les 4 id s'il y a 4 enregistrement car en faite l'idéal serait de faire 4 formulaire spécifique et par la suite pour l'affichage j'ai juste a recuperer dans une liste de lection le nom du sport et en ajax affichier le complément d'information

    Peut etre que je me complique aussi la vie donc si tu vois une meilleur solution je t'écoute

    Merci

  11. #11
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Citation Envoyé par schranz Voir le message
    Hum en faite je me suis mal exprimé car je pense que je vois la finalité de mon produit.

    pour te donner un exemple
    on va dire que j'enregistre une activité appelé sport donc quand j'enregistre ma table activité va me créer un id et le nom sport ensuite le reste des informations va dans la table billet jusque la tout va bien

    Mon but serait au final que donc la table billet arrive a récupérer les 4 id s'il y a 4 enregistrement car en faite l'idéal serait de faire 4 formulaire spécifique et par la suite pour l'affichage j'ai juste a recuperer dans une liste de lection le nom du sport et en ajax affichier le complément d'information

    Peut etre que je me complique aussi la vie donc si tu vois une meilleur solution je t'écoute

    Merci
    Nan j'ai beau essayé, j'arrive pas à comprendre
    Tu veux pas mettre le code du formulaire ? Et nous faire un scénario test précis ?
    Le but c'est quoi ? Qu'un utilisateur réserve un billet pour une activité ? Que toi tu ajoutes des nouvelles activités ?
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  12. #12
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    Voici mes différents code ca sera plus simple alors

    le premiere est le backoffice la ou j'ai mes 4 formulaire pour effectuer les enregistrements . Pour répondre à ta question c'est sur cette page que le service va remplir pour une activité par exemple Eurodisney du 01/08/2011 au 30/08/2011 parc de loisir prix 30euro 7% de réduction.

    backoffice.php
    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
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
     
    <html>
      <head>
        <title>backoffice</title>
      </head>
    <body>
    <form name="insertion" action="traitement.php" method="POST">
    <fieldset>activite</fieldset>
     
      <table border="0" align="center" cellspacing="2" cellpadding="2">
       <tr align="center">
          <td>nom activite</td>
          <td><input type="text" name="nomactivite"></td>
        </tr>
        <tr align="center">
          <td>date debut</td>
          <td><input type="text" name="datedebut"></td>
        </tr>
        <tr align="center">
          <td>date fin</td>
          <td><input type="text" name="datefin"></td>
        </tr>
        <tr align="center">
          <td>description</td>
          <td><input type="text" name="description"></td>
        </tr>
        <tr align="center">
          <td>prix</td>
          <td><input type="text" name="prix"></td>
        </tr>
       <tr align="center">
          <td>reduction</td>
          <td><input type="text" name="reduction"></td>
        </tr>
     
        <tr align="center">
          <td colspan="2"><input type="submit" value="insérer"></td>
        </tr>
      </table>
    </form>
    </form>
     
     
    <form name="nomoperateur" method="POST">
    <fieldset>hotel</fieldset>
      <table border="0" align="center" cellspacing="2" cellpadding="2">
       <tr align="center">
          <td>nom hotel</td>
          <td><input type="text" name="nomactivite"></td>
        </tr>
        <tr align="center">
          <td>date debut</td>
          <td><input type="text" name="datedebut"></td>
        </tr>
        <tr align="center">
          <td>date fin</td>
          <td><input type="text" name="datefin"></td>
        </tr>
        <tr align="center">
          <td>description</td>
          <td><input type="text" name="description"></td>
        </tr>
        <tr align="center">
          <td>prix</td>
          <td><input type="text" name="prix"></td>
        </tr>
       <tr align="center">
          <td>reduction</td>
          <td><input type="text" name="reduction"></td>
        </tr>
     
        <tr align="center">
          <td colspan="2"><input type="submit" value="insérer"></td>
        </tr>
      </table>
    </form>
     
     
     
    <form name="nomoperateur" method="POST">
    <fieldset>voyage</fieldset>
      <table border="0" align="center" cellspacing="2" cellpadding="2">
       <tr align="center">
          <td>nom voyage</td>
          <td><input type="text" name="nomvoayge"></td>
        </tr>
        <tr align="center">
          <td>date debut</td>
          <td><input type="text" name="datedebut"></td>
        </tr>
        <tr align="center">
          <td>date fin</td>
          <td><input type="text" name="datefin"></td>
        </tr>
        <tr align="center">
          <td>description</td>
          <td><input type="text" name="description"></td>
        </tr>
        <tr align="center">
          <td>prix</td>
          <td><input type="text" name="prix"></td>
        </tr>
       <tr align="center">
          <td>reduction</td>
          <td><input type="text" name="reduction"></td>
        </tr>
     
        <tr align="center">
          <td colspan="2"><input type="submit" value="insérer"></td>
        </tr>
      </table>
    </form>
     
     
     
     
     
    <form name="nomoperateur" method="POST">
    <fieldset>operateur</fieldset>
      <table border="0" align="center" cellspacing="2" cellpadding="2">
       <tr align="center">
          <td>nom operateur</td>
          <td><input type="text" name="nomoperateur"></td>
        </tr>
     
        <tr align="center">
          <td>date debut</td>
          <td><input type="text" name="datedebut"></td>
        </tr>
        <tr align="center">
          <td>date fin</td>
          <td><input type="text" name="datefin"></td>
        </tr>
        <tr align="center">
          <td>description</td>
          <td><input type="text" name="description"></td>
        </tr>
        <tr align="center">
          <td>prix</td>
          <td><input type="text" name="prix"></td>
        </tr>
       <tr align="center">
          <td>reduction</td>
          <td><input type="text" name="reduction"></td>
        </tr>
     
        <tr align="center">
          <td colspan="2"><input type="submit" value="insérer"></td>
        </tr>
      </table>
    </form>
    </body>
    </html>
    la page suivante est celle qui est chargé d'effectué la requête en récupérant donc le nom eurodisney ainsi que son id pour l'ajouter a la table billet

    traitement.php
    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
     
    <?php
    // on se connecte à notre base
    $base = mysql_connect ('localhost', 'root', 'root');
    mysql_select_db ('igesa', $base) ;
    ?>
    <html>
    <head>
     
    </head>
    <body>
    <?php
    // on teste si les variables du formulaire sont bien déclarées
    if (isset($_POST['nomactivite']) &&
    isset($_POST['datedebut']) &&
    isset($_POST['datefin']) &&
    isset($_POST['description']) &&
    isset($_POST['prix']) && 
    isset($_POST['reduction'])) 
    {
     
    // on prépare la requête pour récupérer le numero du propriétaire
    $sql = 'SELECT idactivite FROM activite WHERE nomactivite = "'.$_POST['nomactivite'].'"';
     
     
    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    // on récupère le résultat sous forme d'un tableau
    $data = mysql_fetch_array($req);
     
    // on libère l'espace mémoire alloué pour cette interrogation de la base
    mysql_free_result ($req);
     
    // on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
    $sql = 'INSERT INTO billet VALUES("'.$data['idbillet'].'" ,"'.$data['idactivite'].'" ,"'.$data['idhotel'].'" ,"'.$data['idvoyage'].'" , "'.$data['idoperateur'].'", "'.$_POST[
    'datedebut'].'", "'.$_POST['datefin'].'", "'.$_POST['description'].'", "'.$_POST['prix'].'", "'.$_POST['reduction'].'")';
     
    // on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
    mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    // on ferme la connexion à la base
    mysql_close();
    }
    else {
    echo 'Les variables du formulaire ne sont pas déclarées';
    }
    ?>
    </body>
    </html>
    pour fini la page que verra l'utilisateur je cherche juste comment depuis un menu select affiche a la fois le nom de mon activite depuis la table activite ainsi que le reste des information de la table billet et faire ma requete ajax pour choisir en fonction du voyage le nom de l'opérateur.


    billetterie.php
    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
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    <?php
      //connection au serveur
      $cnx = mysql_connect( "localhost", "root", "root" ) ;
     
      //sélection de la base de données:
      $db  = mysql_select_db( "billetterie" ) ;
     ?>
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
     
    <div style="left;">
      <p>activité
        <select>
     
    <?php
    $query="select * from activite ";
    $result=mysql_query($query);
    while($var=mysql_fetch_array($result)){
    echo '<option value="'.$var["nomactivite"].'">'.$var["nomactivite"].'</option>';
    }//fin while
    ?>
        </select>
      </p>
     
    <p>date début : <input type="text" name="datedebut"/> </p> 
     
    <p>date fin : <input type="text" name="datefin"/> </p>
     
    <p>description : <br /><textarea ></textarea></p>
     
    <p>prix : <input type="text" name="datefin"/> </p>
     
    <p>reduction : <input type="text" name="datefin"/> </p>
     
    </div>
     
     
     
    <div style="left;">
      <p>hotel
        <select>
     
    <?php
    $query="select * from hotel ";
    $result=mysql_query($query);
    while($var=mysql_fetch_array($result)){
    echo '<option value="'.$var["nomhotel"].'">'.$var["nomhotel"].'</option>';
    }//fin while
    ?>
        </select>
      </p>
     
    <p>date début : <input type="text" name="datedebut"/> </p> 
     
    <p>date fin : <input type="text" name="datefin"/> </p>
     
    <p>description : <br /><textarea ></textarea></p>
     
    <p>prix : <input type="text" name="datefin"/> </p>
     
    <p>reduction : <input type="text" name="datefin"/> </p>
     
    </div>
     
    <div style="left;">
      <p> nom voyage :   
    <select>
    <?php
    $query="select * from voyage ";
    $result=mysql_query($query);
    while($var=mysql_fetch_array($result)){
    echo '<option value="'.$var["nomvoyage"].'">'.$var["nomvoyage"].'</option>';
    }//fin while
    ?>
        </select>
    </p>
     
    <p> nom operateur :     
     
     <select>
    <?php
    $query="select * from operateur ";
    $result=mysql_query($query);
    while($var=mysql_fetch_array($result)){
    echo '<option value="'.$var["nomoperateur"].'">'.$var["nomoperateur"].'</option>';
    }//fin while
    ?>
        </select>   
     
      </p>  
     
     
     
     
    <p>date début : <input type="text" name="datedebut"/> </p> 
     
    <p>date fin : <input type="text" name="datefin"/> </p>
     
    <p>description : <br /><textarea ></textarea></p>
     
    <p>prix : <input type="text" name="datefin"/> </p>
     
    <p>reduction : <input type="text" name="datefin"/> </p>
     
    </div>
    </body>
    </html>
    je rajoute egalement le sql de ma table

    table test
    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
    102
    103
    104
    105
    106
     
     
    --
    -- Base de données: `test`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `activite`
    --
     
    CREATE TABLE `activite` (
      `idactivite` int(11) NOT NULL AUTO_INCREMENT,
      `nomactivite` varchar(250) NOT NULL,
      PRIMARY KEY (`idactivite`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
     
    --
    -- Contenu de la table `activite`
    --
     
    INSERT INTO `activite` VALUES(1, 'eurodisney');
    INSERT INTO `activite` VALUES(2, 'parc asterix');
    INSERT INTO `activite` VALUES(3, 'piscine');
    INSERT INTO `activite` VALUES(4, 'tennis');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `billet`
    --
     
    CREATE TABLE `billet` (
      `idbillet` int(11) NOT NULL AUTO_INCREMENT,
      `idactivite` int(11) NOT NULL,
      `idhotel` int(11) NOT NULL,
      `idvoyage` int(11) NOT NULL,
      `idoperateur` int(11) NOT NULL,
      `datedebut` date NOT NULL,
      `datefin` date NOT NULL,
      `description` blob NOT NULL,
      `prix` float NOT NULL,
      `reduction` float NOT NULL,
      PRIMARY KEY (`idbillet`),
      KEY `idactivite` (`idactivite`,`idhotel`,`idvoyage`,`idoperateur`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `billet`
    --
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `hotel`
    --
     
    CREATE TABLE `hotel` (
      `idhotel` int(11) NOT NULL AUTO_INCREMENT,
      `nomhotel` varchar(250) NOT NULL,
      PRIMARY KEY (`idhotel`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `hotel`
    --
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `operateur`
    --
     
    CREATE TABLE `operateur` (
      `idoperateur` int(11) NOT NULL AUTO_INCREMENT,
      `nomoperateur` varchar(250) NOT NULL,
      PRIMARY KEY (`idoperateur`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
     
    --
    -- Contenu de la table `operateur`
    --
     
    INSERT INTO `operateur` VALUES(1, 'jet tour');
    INSERT INTO `operateur` VALUES(2, 'easy jet');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `voyage`
    --
     
    CREATE TABLE `voyage` (
      `idvoyage` int(11) NOT NULL AUTO_INCREMENT,
      `nomvoyage` varchar(250) NOT NULL,
      PRIMARY KEY (`idvoyage`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `voyage`
    --
    INSERT INTO `activite` VALUES(1, 'egypte');
    INSERT INTO `activite` VALUES(2, 'martinique');
    En tous cas merci de ton aide

  13. #13
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Déjà je préconiserai plusieurs choses pour améliorer ton code :

    - sors le html du php, c'est pas beau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="'.$var["nomactivite"].'">'.$var["nomactivite"].'</option>';
    - tu n'as pas besoin de plusieurs requêtes pour sélectionner plusieurs données. Tu peux réunir toutes tes requêtes en une seule, en faisant des jointures.
    - une fois ceci fait, il n'y a a priori pas de souci pour afficher ce que tu souhaites
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  14. #14
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    Pour le code php l'idéal est de la placer avant de code en html c'est ca mais sur la même page ?

    pour la requête peux tu juste m'aider à l'optimiser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql ='SELECT idactivite,nomactivite,idhotel,nomhotel,idvoyage,nomvoayge,idoperateur,nomoperateur FROM activite,hotel,voyage,operateur where nomactivite = "'.$_POST['nomactivite'].'" and nomhotel = "'.$_POST['nomhotel'].'" and nomoperateur = "'.$_POST['nomoperateur'].'" and nomvoyage = "'.$_POST['nomvoyage'].'" INNER JOIN billet ON activite = billet.activite and INNER JOIN billet ON hotel = billet.hotel and INNER JOIN billet ON voyage = billet.voyage and INNER JOIN billet ON operateur = billet.operateur';
    merci

  15. #15
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql = 'SELECT a.idactivite,nomactivite,idhotel,nomhotel,v.idvoyage,v.nomvoyage,o.idoperateur,o.nomoperateur 
    FROM activite AS a
    INNER JOIN hotel AS h ON h.idactivite = a.idactivite
    INNER JOIN billet AS b ON b.idactivite = a.idactivite
    INNER JOIN operateur AS o ON idoperateur = b.idoperateur
    INNER JOIN voyage AS v ON v.idvoyage = b.idvoyage
    WHERE a.nomactivite = "'.$_POST['nomactivite'].'" AND h.nomhotel = "'.$_POST['nomhotel'].'" AND o.nomoperateur = "'.$_POST['nomoperateur'].'" AND v.nomvoyage = "'.$_POST['nomvoyage'].'"'
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  16. #16
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    merci syl2095 pour ton aide mais dans ta requete il n'y a que la table activite pris en compte et mon but serait d'intégrer mes 4 tables.(au passage je comprend mieux le tuto sql expliqué sur ce site

    je joins ma mcd car autant tout reprendre depuis le début s'il le faut.

    Merci pour la patience en tout cas
    Images attachées Images attachées  

Discussions similaires

  1. Problème pour utiliser trois tables en même temps
    Par drdoom21 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/04/2011, 09h32
  2. Grant sur toutes les tables en même temps
    Par jer64 dans le forum SQL
    Réponses: 3
    Dernier message: 25/09/2006, 07h59
  3. Réponses: 7
    Dernier message: 05/06/2006, 13h44
  4. Requête sur deux tables en même temps
    Par will89 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/04/2006, 11h01
  5. Comptez sur deux tables en même temps
    Par genova dans le forum Langage SQL
    Réponses: 12
    Dernier message: 13/09/2004, 18h58

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