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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    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 émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    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;

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

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    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'].'")';

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    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 confirmé

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

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    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 confirmé
    Inscrit en
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    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 confirmé

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

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    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.

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