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 :

envoi d'un formulaire dans une BDD [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut envoi d'un formulaire dans une BDD
    Bonjour tous le monde,
    Je viens vers vous car mon amis google n'a pas résolu mon problème .

    J'ai actuellement un formulaire qui dois afficher par exemple 3 utilisateurs et je dois mettre sur chaque utilisateur leur état via un menu déroulant par exemple "présent" "absent". Et quand j'appuie sur le bouton "submit" il doit m'ajouter autant de présence que d'utilisateur mais c'est pas le cas il m'ajoute que un état celui de la dernière personne du listing.



    Voici le code du formulaire

    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
    <?php
    $query_users = "SELECT * FROM agent, service, utilisateurs WHERE agent.nservice = service.nservice = utilisateurs.nservice AND lservice = 'informatique'"; // Tri la table agent sur le champs Nservice
    $users = mysql_query($query_users, $dbprotect) or die(mysql_error());
        while( $result = mysql_fetch_object( $users ) )
        {
    ?>
    <form action="crea.php" method="post">
    <table width="495" border="1">
      <tr>
        <td width="109">Entrez la Date:</td>
        <td width="215"> <input type="text" name="date" size="20"></td>
      </tr>
      <tr>
        <td>Agent:</td>
        <td><input type="text" size="10" name="agent" value="<?php echo ($result->nom);?>"> <select name="etat">
    <option>Pr&eacute;sent</option>
    <option>Cong&egrave;s Annuels</option>
    <option>Cong&egrave;s Exceptionnel</option>
    <option>Mission</option>
    <option>R&eacute;cup&eacute;ration</option>
    </select></td>
      </tr>
      <tr>
        <td>Chef de service</td>
        <td><input type="text" size="10" name="login" value="<?php echo ($result->login);?>"></td>
    </table>
    <input type="hidden" name="nservice" value="<?php echo ($result->nservice);?>"
    <?php
    }
    ?><br>
    <input type="submit" value="valider" name="valider">
    </form>
     
    <?php } // fin de l'affichage conditionnel?>


    crea.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
    <?php require_once('connexion.php'); ?>
    <?php
    if(isset($_POST['valider']))
    {
     
    $nservice=$_POST['nservice'];
    $date=$_POST['date'];
    $agent=$_POST['agent'];
    $etat=$_POST['etat'];
    $login=$_POST['login'];
     
    $valider=$_POST['valider'];
     
    $requete ="INSERT INTO presence (id,nservice,date,agent,etat,login) values ('','$nservice','$date','$agent','$etat','$login')";
     
    mysql_query($requete);
    mysql_close();
    echo "La date à bien été prise en charge pour vos agent";
    }
    else
    echo "Merci de bien remplir le formulaire";
    ?>

    J'espère ne pas avoir créer de doublons dans ma demande.

    Merci de votre aide future

  2. #2
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    Normal, les 3 inputs des utilisateurs portent le même nom.
    Php récupère donc le dernier...

    Une solution serait de créer un incrément sur le nom de tes inputs et de les récupérer ensuite en fonction de cet incrément...

    Ou alors d'ajouter dans le nom de l'input l'id du client modifié et alors de récupérer une sous-chaine du nom pour ton traitement d'ajout

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Points : 537
    Points
    537
    Par défaut
    Salut,
    nommes tes input avec des crochets, de cette manière tu recevras un tableau de variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input type="text" size="10" name="agent[]" value="<?php echo ($result->nom);?>"> 
    <select name="etat[]">
    etc.
    dans ton code php,
    $agent et $etat deviennent alors des arrays

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par beeboo Voir le message
    Salut,
    nommes tes input avec des crochets, de cette manière tu recevras un tableau de variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input type="text" size="10" name="agent[]" value="<?php echo ($result->nom);?>"> 
    <select name="etat[]">
    etc.
    dans ton code php,
    $agent et $etat deviennent alors des arrays

    ca me met des array partout dans ma base

  5. #5
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par rems033 Voir le message
    Normal, les 3 inputs des utilisateurs portent le même nom.
    Php récupère donc le dernier...

    Une solution serait de créer un incrément sur le nom de tes inputs et de les récupérer ensuite en fonction de cet incrément...

    Ou alors d'ajouter dans le nom de l'input l'id du client modifié et alors de récupérer une sous-chaine du nom pour ton traitement d'ajout
    Essaie son idée elle me semble bonne ^^
    ►Ne pas oublier le

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Points : 537
    Points
    537
    Par défaut
    Citation Envoyé par angelusflm Voir le message
    ca me met des array partout dans ma base
    Ben c'est sûr qu'il faut pas les mettre comme un bourrin sans les traiter. Il te suffit de boucler dessus pour faire tes insertion/mise à jour.

    Un peu de créativité, que diable.

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    C'est bon ça fonctionne j'ai tout simplement ajouter un for

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Je rebondi sur ma résolution

    Le code fonctionne très bien mais j'aimerai juste retiré le <input type="text" name="date"> de ma boucle pour éviter qu'elle s'affiche pour chaque agent. Et faire un input date "général".

    Pour le moment j'ai ça

    Mon formulaire
    <?php
    $query_users = "SELECT * FROM utilisateurs,agent WHERE utilisateurs.nservice = '1' AND agent.nservice = '1'"; // Tri la table agent sur le champs Nservice
    $users = mysql_query($query_users, $dbprotect) or die(mysql_error());
    $indice = 0;
    while( $result = mysql_fetch_object( $users ) )
    {
    ?>
    <form action="crea.php" method="post">
    <table width="495" border="1">
    <tr>
    <td>Entrez la date</td>
    <td><input type="text" name="date<?php echo $indice;?>"></td>
    </tr>
    <tr>
    <td>Agent:</td>
    <td><input type="text" size="20" name="agent<?php echo $indice;?>" value="<?php echo ($result->nom);?> <?php echo ($result->prenom);?>"> <select name="etat<?php echo $indice;?>">
    <option>Pr&eacute;sent</option>
    <option>Cong&egrave;s Annuels</option>
    <option>Cong&egrave;s Exceptionnel</option>
    <option>Mission</option>
    <option>R&eacute;cup&eacute;ration</option>
    </select></td>
    </tr>
    <tr>
    <td>Matricule</td>
    <td><input type="text" size="10" name="nchrono<?php echo $indice;?>" value="<?php echo ($result->nchrono);?>"></td>
    </tr>
    <tr>
    <td>Chef de service</td>
    <td><input type="text" size="10" name="login<?php echo $indice;?>" value="<?php echo ($result->login);?>"></td>
    </tr>
    </table>

    <input type="hidden" name="nservice<?php echo $indice;?>" value="<?php echo ($result->nservice);?>"

    <?php

    $indice++;
    }

    ?>
    <br>
    <input type="hidden" name="numIndice" value="<?php echo $indice;?>"/>
    <input type="submit" value="valider" name="valider">
    </form>
    <a href="consultation.php">Consulter/Modifier</a>

    ma page crea.php
    <?php require_once('connexion.php'); ?>
    <?php
    if(isset($_POST['valider']))
    {

    $indice = $_POST['numIndice'];
    $valider = $_POST['valider'];

    if ( $indice > 0 ) {

    for ( $i=0; $i < $indice; $i++ )
    {

    $nservice=$_POST['nservice'.$i];
    $agent=$_POST['agent'.$i];
    $date=$_POST['date'.$i];
    $nchrono=$_POST['nchrono'.$i];
    $etat=$_POST['etat'.$i];
    $login=$_POST['login'.$i];

    $requete ="INSERT INTO presence (id,nservice,date,agent,nchrono,etat,login) values ('','$nservice','$date','$agent','$nchrono','$etat','$login')";

    mysql_query($requete);

    }

    mysql_close();
    echo "La date à bien été prise en charge pour les ".$indice." agent";

    }

    }
    else
    echo "Merci de bien remplir le formulaire";
    ?>
    retournez au <a href="accueil.php">menu principal</a>

    Maintenant voila la modification que j'ai faite et qui ne marche pas

    <?php
    $query_users = "SELECT * FROM utilisateurs,agent WHERE utilisateurs.nservice = '1' AND agent.nservice = '1'"; // Tri la table agent sur le champs Nservice
    $users = mysql_query($query_users, $dbprotect) or die(mysql_error());
    $indice = 0;
    ?>
    <form action="crea.php" method="post">
    Entrez la Date <input type="text" name="date<?php echo $indice;?>">
    <?php

    while( $result = mysql_fetch_object( $users ) )
    {
    ?>
    <table width="495" border="1">
    <tr>
    <td>Agent:</td>
    <td><input type="text" size="20" name="agent<?php echo $indice;?>" value="<?php echo ($result->nom);?> <?php echo ($result->prenom);?>"> <select name="etat<?php echo $indice;?>">
    <option>Pr&eacute;sent</option>
    <option>Cong&egrave;s Annuels</option>
    <option>Cong&egrave;s Exceptionnel</option>
    <option>Mission</option>
    <option>R&eacute;cup&eacute;ration</option>
    </select></td>
    </tr>
    <tr>
    <td>Matricule</td>
    <td><input type="text" size="10" name="nchrono<?php echo $indice;?>" value="<?php echo ($result->nchrono);?>"></td>
    </tr>
    <tr>
    <td>Chef de service</td>
    <td><input type="text" size="10" name="login<?php echo $indice;?>" value="<?php echo ($result->login);?>"></td>
    </tr>
    </table>

    <input type="hidden" name="nservice<?php echo $indice;?>" value="<?php echo ($result->nservice);?>"

    <?php

    $indice++;
    }

    ?>
    <br>
    <input type="hidden" name="numIndice" value="<?php echo $indice;?>"/>
    <input type="submit" value="valider" name="valider">
    </form>
    <a href="consultation.php">Consulter/Modifier</a>

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    C'est bon en faite c'est tout bête

    Dans me formulaire j'enlève <?php echo $indice;?>
    Entrez la Date <input type="text" name="date">



    Et dans mon traitement crea.php

    Je transforme
    f(isset($_POST['valider']))
    {

    $indice = $_POST['numIndice'];
    $valider = $_POST['valider'];

    if ( $indice > 0 ) {

    for ( $i=0; $i < $indice; $i++ )
    {

    $nservice=$_POST['nservice'.$i];
    $agent=$_POST['agent'.$i];
    $date=$_POST['date'.$i];
    $nchrono=$_POST['nchrono'.$i];
    $etat=$_POST['etat'.$i];
    $login=$_POST['login'.$i];
    en
    f(isset($_POST['valider']))
    {

    $indice = $_POST['numIndice'];
    $valider = $_POST['valider'];
    $date = $_POST['date'];

    if ( $indice > 0 ) {

    for ( $i=0; $i < $indice; $i++ )
    {

    $nservice=$_POST['nservice'.$i];
    $agent=$_POST['agent'.$i];
    $nchrono=$_POST['nchrono'.$i];
    $etat=$_POST['etat'.$i];
    $login=$_POST['login'.$i];

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

Discussions similaires

  1. [MySQL] Insertion des données du formulaire dans une BDD
    Par OG__fenomeno dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/05/2013, 11h52
  2. [PHP 5.0] formulaire oui non pour envoie dans une bdd
    Par micker dans le forum Langage
    Réponses: 5
    Dernier message: 10/03/2011, 15h56
  3. Envoi de formulaire dans une BDD
    Par soultaken dans le forum Langage
    Réponses: 2
    Dernier message: 02/06/2010, 20h52
  4. Réponses: 2
    Dernier message: 04/07/2007, 17h10
  5. [Conception] Pb d insertion dans une BDD des données d un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 02/06/2006, 18h18

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