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 :

formulaire multichamp et mysql [MySQL]


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
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Par défaut formulaire multichamp et mysql
    ncore une tentative pour avoir une répponse à ma question. Je n'ai surement pas été assez clair les deux premières fois.

    Voici je veux enregistrer dans ma BD mysql les données de champs que j'ai créer grace à une boucle while

    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
    46
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Document sans titre</title>
    </head>
     
    <body>
     
    <form name="form1" method="post" action="">
    <input name="nombre_champ" type="text" id="nombre_champ" size="5">
    nombre de champs
    <input type="submit" name="Submit" value="Envoyer">
    </form>
    <form name="form2" method="post" action="">
     
     
     
    <?php
    // pas très original mais bon ça fait le travail
    $nombre_champs=$_POST['nombre_champ'];
     
    while ($champstotal<=$nombre_champs)
    {
     
    if ($nombre_champs=="")
    {
    echo " vous devez remplir le premier champ";
    }
    else
    {
     
    echo "<input name='champ$champstotal ' type=text id=champ><br>";
    }
     
    $champstotal++;
     
    }
    echo " vous avez créer $nombre_champs";
    ?>
    <input type="submit" name="Submit" value="Envoyer">
    </form>
     
    <p>&nbsp;</p>
    </body>
    </html>
    Dans ma bd seulement le dernier champ est enregistrer meme quand j'utilise un id int(11) auto_increment Primary_key.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 138
    Par défaut
    c'est normal à chaque tour de boucle tu écrase ta donnée précédente mais cette donnée précédente tu ne l'envoie pas à ta bdd...
    Il faut que tu envoie tes champs à chaque fois...

  3. #3
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Par défaut Je ne comprends pas tres bien
    Comme mes champs sont vide avant de les avoir créer, comment puis-je faire pour, une fois qu'ils sont remplis les envoyer dans ma bd sans avoir 10 bouton enregistrer par exemple....

    EX: je créer grace a $nombre_camps, 8 champs qui porteront autonatiquement le nom champ1 jusqu'a champ8. Je remplit alors les champs et envoie le tout à la bd.

    Comment puis-je faire ce que tu me propose dans ces circonstance.



    merci de ton aide

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 138
    Par défaut
    tu mets une requête "insert into" dans ta boucle comme ça pour chaque champ il va t'enregistrer ça dans ta base de données...

  5. #5
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 94
    Par défaut voici le code modifier mais toujours rien
    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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Document sans titre</title>
    </head>
     
    <body>
     
    <form name="form1" method="post" action="">
      <input name="nombre_champ" type="text" id="nombre_champ" value="0" size="5">
      nombre de champs
      <input type="submit" name="Submit" value="Envoyer">
    </form>
    <form name="form2" method="post" action="">
     
     
     
    <?php
    // pas très original mais bon ça fait le travail
    $nombre_champs=$_POST['nombre_champ'];
    mysql_connect("localhost","root","root");
    mysql_select_db("champ");
    $champstotal=0;
     
    while ($champstotal<=$nombre_champs)
    {
     
    if ($nombre_champs=="")
    {
    echo " vous devez remplir le premier champ";
    }
    else
    {
     
      echo "<input name='$champstotal' type=text id=champ><br>";
     
      $insert="INSERT INTO mes_champs (id,champ) VALUES('',$champstotal)";
      mysql_query($insert);
     
     } 
    echo $tata;
    $champstotal++;
      mysql_close();
    }
    echo " vous avez créer $nombre_champs";
    ?>
    <input type="submit" name="Submit" value="Envoyer">
    </form>
     
    <p>&nbsp;</p>
    </body>
    </html>

  6. #6
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonsoir,
    Il faut utiliser la fonction foreach(), ce qui peut donner dans ton cas un truc comme ceci :
    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
     
    <?php
    if(isset($_POST['champs'])) {
    $hostname = "localhost";
    $database = "champ";
    $username = "root";
    $password = "root";
    $CnxChamps = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
     
    $tab_champs = $_POST['champs'] ;
    foreach($tab_champs as $champs) {
    $insertSQL = "INSERT INTO mes_champs (champ) VALUES('$champs')";
    mysql_select_db($database, $CnxChamps);
    $Result1 = mysql_query($insertSQL, $CnxChamps) or die(mysql_error());
    }
    }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Document sans titre</title>
    <script language="javascript" type="text/javascript">
    function validation() {
    if(document.getElementById('nombre_champs').value == "") {
       alert("Vous devez indiquer un nombre de champs !") ;
       document.getElementById('nombre_champs').focus();
       return false;
       }
    }
    </script>
    </head>
     
    <body>
    <?php if (!isset($_GET['nombre_champs'])) {
    echo '<form name="form1" method="get" action="test.php" onsubmit="return validation();">' ;
    echo '<input name="nombre_champs" type="text" id="nombre_champs" value="" size="5"> Nombre de champs';
    echo '<input type="submit" name="submit" value="Envoyer">' ;
    echo '</form>';
    }
    ?>
     
    <?php if (isset($_GET['nombre_champs'])) { 
    $i = 1 ;
    $nombre_champs = $_GET['nombre_champs'];
     
    echo '<form name="form2" method="post" action="test.php">' ;
    while ($i <= $nombre_champs)
    {
    echo '<input name="champs[]" type=text><br>';
    $i++;
    } 
    echo 'Vous avez créé "'.$nombre_champs.'" champs<br>';
    echo '<input type="submit" name="submit" value="Envoyer">';
    echo '</form>';
    }
    ?>
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Générateur automatique de formulaires pour base MySQL
    Par Redman dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/03/2010, 09h16
  2. [MySQL] formulaire php- source mysql
    Par romain.barraud dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/04/2007, 18h36
  3. [SGBD] Traitement Données Formulaire Vers BDD Mysql
    Par Thierry8 dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 29/03/2006, 23h22
  4. problème formulaire et base MySQL
    Par remy34 dans le forum ASP
    Réponses: 4
    Dernier message: 23/03/2006, 09h56
  5. Formulaire et requete Mysql
    Par BtsInfo dans le forum Requêtes
    Réponses: 17
    Dernier message: 10/01/2006, 08h06

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