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 pour récupèrer les champs d'un formulaire qui se trouve dans un while [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut Problème pour récupèrer les champs d'un formulaire qui se trouve dans un while
    Bonjour à tous!!!


    j'ai cette erreur et je ne comprend pas: Notice: Undefined index: lib_var2 in d:mondossier\modifie.php on line 11 => Je n'arrive pas à récupèrer les champs de mon formulaire quyi se trouve dans ma boucle while

    Voici mon code concernant mon 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
    35
    36
    37
     
    <form action="modifie.php" name="Form" method="post">
    			<table width="173" height="97" bgcolor="#D50000">
    				<tr>
    					<th width="143"><input type="text" value="<?php echo $lib_var1; ?>" name="lib_var1"/></th>
     
    				</tr>
     
    				<?php
    				//Pointeur de lecture
    				mysql_data_seek($sql, 0);
    				$i=0 ;
    				while($data =mysql_fetch_array($sql))
    				{
     
    					$lib_var2 = $data ['lib_var2'];
    					echo $lib_var2;
     
     
    				?>
    					<tr>
    						<td><input type="text" value="<?php echo $lib_var2;?>" name="<?php echo $lib_var2;?>" /></td>
    					</tr>
    				<?php
    				$i=$i+1;	
    				}	
     
    				?>
    				<input type="hidden" value="<?php echo $i;?>" name="i" />
    				<input type="hidden" value="<?php echo $id_var;?>" name="var" />
     
    				<tr>
    					<td> <input type="submit" value="      Modifier      "	name="Modifier" /></td>
    				</tr>
     
    		  </table>  
    		</form>

    Mon code qui où je récupèrer les champs de mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    $requete= mysql_query("UPDATE maTable SET  lib_champ1 ='".$_POST['lib_var1']."' WHERE id_champ=". $_POST['id_var']);
     
    for($i=0; $i<=$_POST['i'];$i++)
    {
    	echo $_POST['lib_var2'];
     
    }
    Merci d'avance pour votre aide

  2. #2
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    quel est le résultat de ceci ?


  3. #3
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    J'ai quand même le message d'erreur

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 54
    Points
    54
    Par défaut valeur par défaut
    Salut
    Je pense que tu dois donner une valeur par défaut à ta variable. Pour cela essaies de mettre ça en haut de ta page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(!(isset ($data ['lib_var2'];)))
    {
        $lib_var2="";
    }
    else
    {
        $lib_var2=$data ['lib_var2'];
    }

  5. #5
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    j'ai testé et j'ai toujour le message d'error

  6. #6
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    de toute façon quoi qu'il arrive ma variable à une valeur par défaut.

  7. #7
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    tu n'a pas répondue à ma question

    que vaux : echo $lib_var2; ???


    l'erreur est explicite, $_POST['lib_var2'] n'existe pas!

    et c'est logique !

    tu as $lib_var2 qui à chaque boucle prend une valeur différente,

    disons :

    boucle 1 : $lib_var2 = "Paul"
    boucle 2 : $lib_var2 = "Jacque"
    boucle 3 : $lib_var2 = "Henry"

    pour les récupérer, il ne faudra pas faire $_POST['lib_var2'],
    il faudra faire $_POST['Paul'], $_POST['Jacque'], $_POST['henry']

  8. #8
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    dans mon formulaire ma variable est egal à titi et et quand je modifie sa valeur dans le formulaire il vaut toto mais le problème c'est lorsque j'envoie les champs dans mon autre page pour pouvoir effectué la requete de mofication (update), la va variable $_POST['lib_var2'] n'existe pas. Il ne la reconnais pas et je ne comprend pas alors que les autres champs je les récupère bien.

  9. #9
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    petite suggestion :

    sur ton navigateur, lance la page ou le formulaire est créé, puis accede au code sources de cette page, Affichage/Code source

    et copie nous le code

  10. #10
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    voici le code source:

    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
     
     
     
    <form action="modifiephp" name="Form" method="post">
    			<table width="173" height="97" bgcolor="#D50000">
     
     
    				<tr>
    					<th width="143"><input type="text" value="Titi?" name="lib_var1"/></th>
     
    				</tr>
    				<tr>
    					<td><hr /></td>
    				</tr>
    									<tr>
    						<td><input type="text" value="ghghg" name="ghghg" /></td>
    					</tr>
    									<tr>
    						<td><input type="text" value="hghghg" name="hghghg" /></td>
    					</tr>
    									<tr>
    						<td><input type="text" value="ghghghg" name="ghghghg" /></td>
    					</tr>
    								<input type="hidden" value="3" name="i" />
    				<input type="hidden" value="34" name="var" />
    								<tr>
    					<td> <input type="submit" value="      Modifier      "	name="Modifie"   /></td>
    					<td><a href="FAQ.php">Retour </a></td>
     
    				</tr>
     
    		  </table>  
    		</form>

  11. #11
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <td><input type="text" value="ghghg" name="ghghg" /></td>
    </tr>
    <tr>
    <td><input type="text" value="hghghg" name="hghghg" /></td>
    </tr>
    <tr>
    <td><input type="text" value="ghghghg" name="ghghghg" /></td>

    tu vois bien que la variable que tu veux appelé ne s'appelle pas : $_POST['lib_var2']
    mais elles s'apellent : $_POST['ghghg'], $_POST['hghgh'] et enfin $_POST['ghghghg']

    tu ne devrais pas donner un nom dynamique à tes input

    donne leur un nom fixe ! genre champ1, ou prenom s'il s'agit d'un prenom, quelque chose de compréhensif pour toi comme pour toi quand 3mois après tu retournera sur ton code

  12. #12
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    Merci beaucoup c'était ça l'erreur.
    Je pensais qu'il fallais leur donner un nom dynamique puisqu'elle était dans une boucle mais grâce à toi j'ai constaté que c'est pas le cas.
    Encore merci

  13. #13
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    Ravi d'avoir servi

  14. #14
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    euh... Autre problème: je récupère que le dernièr champs de mon formulaire alors que je souhaite récupère tous les champs

  15. #15
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    je devine que tu as appelé tout tes champs avec le même nom.

    dans ce cas, le "name" de l'input se devra d'être semi dynamique.

    du genre name="champ-<? echo $i; ?>"

    donc au total :


    Code php : 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
    <form action="modifie.php" name="Form" method="post">
    			<table width="173" height="97" bgcolor="#D50000">
    				<tr>
    					<th width="143"><input type="text" value="<?php echo $lib_var1; ?>" name="lib_var1"/></th>
    					
    				</tr>
    				
    				<?php
    				//Pointeur de lecture
    				mysql_data_seek($sql, 0);
    				$i=0 ;
    				while($data =mysql_fetch_array($sql))
    				{
    				
    					$lib_var2 = $data ['lib_var2'];
    					echo $lib_var2;
    					
    					
    				?>
    					<tr>
    						<td><input type="text" value="<?php echo $lib_var2;?>" name="champ-<?php echo $i;?>" /></td>
    					</tr>
    				<?php
    				$i=$i+1;	
    				}	
    				
    				?>
    				<input type="hidden" value="<?php echo $i;?>" name="i" />
    				<input type="hidden" value="<?php echo $id_var;?>" name="var" />
    				
    				<tr>
    					<td> <input type="submit" value="      Modifier      "	name="Modifier" /></td>
    				</tr>
    			
    		  </table>  
    		</form>

    et au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    if(!(isset ($data ['lib_var2'];)))
    {
        $lib_var2="";
    }
    else
    {
        $lib_var2=$data ['lib_var2'];
    }
    tu fera :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $i=0;
    while( isset( $_POST['champ-'.$i] ) ) {
    $meschamps[$i] = $_POST['champ-'.$i];
    $i++;
    }

    et ici : $meschamps[0] = la valeur du champ 1, $meschamps[1] = la valeur du champ 2 et ainsi de suite...

  16. #16
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    je récupère bien tous mes champs mais le problème maintenant c'est que dans ma base donnée je récupère toujours le dernier champs.

    Voici ma requete update:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    $req= "UPDATE matable";
    $i=0;
    while( isset( $_POST['champ-'.$i] ) ) {
    //$meschamps[$i] = $_POST['champ-'.$i];
     $req.= "SET  lib_champ ='".$_POST['champ-'.$i]."'" ;
    $i++;
    }
     $req.="WHERE id_champ=". $_POST[var];
     
    $result=mysql_query($req);

  17. #17
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    en php tu as trois champs sur ton exemple,

    et en sql tu n'a qu'un seul champ!

    processus réalisé :

    Insertion dans le champ1 la valeur1
    Insertion dans le champ1 la valeur2
    Insertion dans le champ1 la valeur3

    à chaque fois il remplace! donc c'est normal que tu n'aies que le dernier champ!

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    peux tu nous montrer ton php pour le formulaire et pour le traitement

  19. #19
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    Merci beaucoup!!!
    ça fonctionne. :-)
    J'ai récupèrer les id correspondant aux différentes valeur de la variable lib_var2 ensuite dans ma boucle je fesait mon update matable set lib_champ=lib_var2 where id = id que je récupère grâce à mon formulaire.

    MERCI BEAUCOUP!!!!!

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

Discussions similaires

  1. problème pour récupérer les variables GEt d'un formulaire
    Par ouldfella dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/01/2010, 10h22
  2. Réponses: 2
    Dernier message: 07/10/2008, 22h21
  3. Réponses: 1
    Dernier message: 07/06/2006, 18h56
  4. Réponses: 2
    Dernier message: 14/04/2006, 18h40
  5. Réponses: 10
    Dernier message: 16/11/2005, 08h33

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