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 de données dans formulaire d'édition [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Par défaut Envoi de données dans formulaire d'édition
    Bonjour,

    j'ai créé un formulaire en php. ce formulaire une fois compléter est envoyé dans une bdd.

    j'ai de l'autre coté créé un formulaire d'édition qui me renvoi les valeurs de la bdd et que je peux donc modifier.

    le formulaire fonctionne bien pour une partie mais une seconde partie n'est pas encore opérationnel.

    en fait, j'ai des champs associés à des locuteurs. ces champs correspondent à la table "locuteurs" et il peut en avoir plusieurs.

    pour un formulaire je peux avoir plusieurs locuteurs et donc plusieurs champs "id" par exemple.

    je veux pouvoir modifier ces données mais ma méthode ne fonctionne pas elle ne prend en compte que le dernier élément du tableau.

    voici une partie du code :

    formulaire-modification1.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
    <?php
     
    			$requete_locuteurs =mysql_query("SELECT * FROM locuteurs WHERE (`locuteurs`.`id_fiche` = '$id')");
     
    			$nombre_loc = 0;
     
    			while($loc=mysql_fetch_assoc($requete_locuteurs))
    			{
     
    				$nombre_loc++;
     
    				$id_loc=$loc["id"];
     
     
    				echo "<tr><td><b><i>Locuteur $nombre_loc </i></b></td><td bgcolor=\"#006699\"></td></tr>";
     
    				echo "<tr><td>Identifiant : </td><td><input type=\"text\" size=\"50\" name=\"id[]\" value=\"$id_loc\"></td></tr>";
     
     
     
    			}
     
    			?>
    dans le script ci dessus jaffiche toute les valeurs dépendant du nombre de locuteurs.

    formulaire-modification2.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
    for ($i=0 ; $i < count($_POST["id"]) ; $i++ ) {
     
     
    	$id_loc = addslashes($_POST["id"][$i]); // récupère l'id
     
    	//requete 2 : table locuteurs
    	$sql2 = "UPDATE locuteurs
                SET 
                id = '$id_loc'
                WHERE id_fiche = '$id' " ;
     
    }
     
     
     
     
     
     
     
    //exécution de la requête SQL:
    $requete2 = mysql_query($sql2, $cnx) or die( mysql_error() ) ;
    dans le script ci dessus je tente de modifier ma table locuteurs mais ce code ne modifie que la dernière valeur.
    si j'ai deux locuteurs et que je modifie le second en inscrivant Paul les deux champs id correspondant à la fiche auront pour valeur Paul.

    merci de votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    C'est que tu exécutes la requête après la boucle for et la requête exécuté c'est la valeur de la dernière itération.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,
    C'est que tu exécutes la requête après la boucle for et la requête exécuté c'est la valeur de la dernière itération.
    j'ai testé cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for ($i=0 ; $i < count($_POST["id"]) ; $i++ ) {
     
    $id_loc = addslashes($_POST["id"][$i]); // récupère l'id
    //requete 2 : table locuteurs
    	$sql2 = "UPDATE locuteurs
                SET 
                id = '$id_loc'
                WHERE id_fiche = '$id' " ;
     
    $requete2 = mysql_query($sql2, $cnx) or die( mysql_error() ) ;
     
     
    }
    mais j'ai toujours le même resultat.
    à savoir je ne récupère que la dernière valeur.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    WHERE id_fiche = '$id'
    La valeur de $id reste inchangé au cour de la boucle donc c'est le seul qui est modifié.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    La valeur de $id reste inchangé au cour de la boucle donc c'est le seul qui est modifié.
    alors je te donne un exemple de ce qu'il y a dans ma table

    id_fiche ----- id
    1 =====> paul

    1 =====> gérard


    ma requete doit modifier les champs "id" qui ont le même "id_fiche"
    cet "id_fiche" me permet de savoir à quel fiche les locuteurs sont associés.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    si j'ai deux locuteurs et que je modifie le second en inscrivant Paul les deux champs id correspondant à la fiche auront pour valeur Paul.
    peux tu donner le schema de tes tables pasque je ne vois pas l'interet d'avoir dans une meme table avec deux id_fiches identique et ton id à paul

    (doublons de ligne...)

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

Discussions similaires

  1. Réponses: 26
    Dernier message: 08/08/2007, 13h33
  2. Réponses: 15
    Dernier message: 10/04/2006, 15h06
  3. ajout donnée dans formulaire
    Par gregius dans le forum Access
    Réponses: 2
    Dernier message: 09/01/2006, 11h12
  4. saisie de données dans formulaire
    Par philpaul dans le forum Access
    Réponses: 4
    Dernier message: 15/09/2005, 13h13
  5. Réponses: 4
    Dernier message: 29/11/2004, 16h51

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