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

SQL Procédural MySQL Discussion :

Insérer plusieurs lignes en même temps.


Sujet :

SQL Procédural MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Insérer plusieurs lignes en même temps.
    Bonjour,

    Je voudrais grâce à un formulaire "ajout de nouvelles", ajouter en un clic unique plusieurs nouvelles ayant les mêmes valeurs.
    Ma table de données est la 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
    -- Structure de la table `calendrier`
    -- 
     
    DROP TABLE IF EXISTS `calendrier`;
    CREATE TABLE IF NOT EXISTS `calendrier` (
      `id` int(11) NOT NULL auto_increment,
      `jour` int(11) NOT NULL default '0',
      `mois` int(11) NOT NULL default '0',
      `annee` int(11) NOT NULL default '0',
      `evenement` text NOT NULL,
      KEY `id` (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=2 ;
     
    -- 
    -- Contenu de la table `calendrier`
    -- 
     
    INSERT INTO `calendrier` (`id`, `jour`, `mois`, `annee`, `evenement`)
    VALUES (1, 25, 12, 2005, 'HO HO HO...\nJoyeux Noël !!!');
    INSERT INTO `calendrier` (`id`, `jour`, `mois`, `annee`, `evenement`)
    VALUES (2, 12, 3, 2006, '- Ceci est un test !!!');
    Or j'aimerai dans un formulaire pouvoir pour chaque jour différent d'un mois sélectionné, ajouter les événements correspondants et les inclure dans la base de données d'un coup (et non jour par jour) avec un "id" qui s'incrémente automatiquement par rapport à la dernière nouvelle présente dans la base de données.

    J'espère être assez clair et avoir une solution.

    Merci beaucoup pour l'aide éventuelle.

    Puis-je le faire avec une fonction insere? Dois-je passe

  2. #2
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    La syntaxe seul de l'insert permet cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO `laTable` (`champ1`,` champ2`, `champ...`)
    VALUES
    ('valeur1', 'valeur2', 'valeur...'),
    ('valeur1', 'valeur2', 'valeur...');
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut A moitié réussi
    Bonjour,

    J'ai effectué la démarche avec INSERT INTO.... et là j'arrive à mettre ds ma base de données mes 6 nouvelles d'un seul coup. Mais dans la base de données ne vient s'inscrire que les id (jour, mois, annee et evenement) et non les chiffres et texte envoyés.

    Voici mon code 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
    <?php require_once('../Connections/root.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
     
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
      $insertSQL = sprintf("INSERT INTO calendrier (jour, mois, annee, evenement) 
      								VALUES ('jour', 'mois', 'annee', 'evenement'),
      										('jour2', 'mois', 'annee', 'evenement2'),
    									 	('jour3', 'mois', 'annee', 'evenement3'),
    										('jour4', 'mois', 'annee', 'evenement4'),
    										('jour5', 'mois', 'annee', 'evenement5'),
    										('jour6', 'mois', 'annee', 'evenement6')",
     
     
                           GetSQLValueString($_POST['jour'], "date"),
                           GetSQLValueString($_POST['mois'], "date"),
                           GetSQLValueString($_POST['annee'], "date"),
                           GetSQLValueString($_POST['evenement'], "text"));
     
      mysql_select_db($database_root, $root);
      $Result1 = mysql_query($insertSQL, $root) or die(mysql_error());
     
      $insertGoTo = "ajouts des nouvelles pour l'agenda effectué.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
    ?>
     
    Voici mon formulaire simplifié:
     
      <td><label for="mois"></label>
            <select name="mois" id="mois">
              <option value="1" selected="selected">janvier</option>
              <option value="2">février</option>
              <option value="3">mars</option>
              <option value="4">avril</option>
              <option value="5">mai</option>
              <option value="6">juin</option>
              <option value="7">juillet</option>
              <option value="8">août</option>
              <option value="9">septembre</option>
              <option value="10">octobre</option>
              <option value="11">novembre</option>
              <option value="12">décembre</option>
                            </select></td>
          <td><label for="label">Année:</label></td>
          <td><label for="annee"></label>
    <select name="annee" id="annee">
              <option value="2008" selected="selected">2008</option>
              <option value="2009">2009</option>
              <option value="2010">2010</option>
              <option value="2011">2011</option>
                            </select></td>
        </tr>
        <tr>
          <td><div align="center">Jour(s):</div></td>
          <td>Evénement(s):</td>
        </tr>
        <tr>
          <td><label for="jour"></label>
            <div align="center">
              <select name="jour" id="jour">
                <option value="1" selected="selected">1</option> etc…
    …          </select>
          </div></td>
          <td colspan="4"><label for="evenement"></label>
            <textarea name="evenement" cols="130" rows="5" id="evenement"></textarea></td>
        </tr>
        <tr>
          <td><div align="center">
            <select name="jour2" id="jour2">
              <option value="1" selected="selected">1</option> etc…
            </select>
          </div></td>
          <td>&nbsp;</td>
          <td><textarea name="evenement2" cols="130" rows="5" id="evenement2"></textarea></td>
        </tr>  et ainsi de suite jusqu’à” jour6” et “evenement6”
          <td><label for="envoi"></label>
          <input type="submit" name="envoi" id="envoi" value="ENVOYER LES INFORMATIONS POUR L'AGENDA" /></td>
      </table>
      <input type="hidden" name="MM_insert" value="form1" />
    </form>

    Peut-on me dire ce qui ne va pas?

    Merci

  4. #4
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par palisse Voir le message
    Mais dans la base de données ne vient s'inscrire que les id (jour, mois, annee et evenement) et non les chiffres et texte envoyés
    C'est à dire ?
    Je ne comprends pas vraiment ce qui se passe.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Pas les bonnes données qui s'affichent.
    Bonjour,

    Je vais essayer d'être plus clair. Ma table regroupe 5 colonnes: id - jour - mois - année et événement (une zone de texte ici de 5 lignes).

    J'ai réussi à bâtir un formulaire qui me permet d'envoyer 5 lignes (jour - événement sont différents mais mois et année sont les mêmes). Le but est de mettre dans ma BDD les événements journaliers du mois.

    Or quand je regarde le résultat, dans ma table, les lignes sont bien intégrées mais au lieu d'avoir les jours, mois, année et événement (ex: 6 - 8 - 2008 - début des vacances), j'ai la valeur par défaut ou le nom de l'id (l'ex cité donnera dans ma BDD: jour - mois - annee - evenement, et non 6 - 8 - 2008 - début des vacances).

    J'espère être plus clair dans ma réponse.

    Et merci pour l'aide apportée.

Discussions similaires

  1. [XL-2010] Sélectionner plusieurs ligne en même temps
    Par Mrfreeze117 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/01/2015, 14h54
  2. [MySQL] insérer plusieurs lignes dans une même table
    Par brahda dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/05/2011, 15h56
  3. Réponses: 2
    Dernier message: 01/05/2011, 12h31
  4. Editer plusieurs lignes en même temps dans Eclipse
    Par fourchette dans le forum Eclipse
    Réponses: 2
    Dernier message: 26/01/2011, 12h48
  5. Insertion de plusieurs lignes en même temps
    Par hajoura89 dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 26/08/2010, 14h01

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