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 :

Incrémentation nom champ de formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 65
    Points
    65
    Par défaut Incrémentation nom champ de formulaire
    Bonjour,

    J'ai un petit souci avec mon formulaire. Je tente de faire des modifications. Pas de problème pour les champs sans cas particuliers. J'affiche bien toutes les lignes ingrédients dont les données sont stockées dans la table ingredients (bdd mysql).

    Comme il y a plusieurs ingredients, je pensais incrémenter le nom des champs afin que dans le premier enregistrement, le champ s'appelle q1, puis dans le deuxième q2 etc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $i = 0; //incrémentation pour la liste des ingredients
    while ($tabIng = mysql_fetch_array($resIng)){
    	echo "<input type='text' name='q".$i."' size='5' value='".$tabIng['quantite']."'></td>";
    	$i += 1;
    }
    Mais quand je fais un echo de $_POST['q1'] dans la page php appelée, il n'affiche aucune valeur. J'espère que j'ai été assez claire pour que vous puissiez comprendre.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    salut,

    et en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $i = 0; //incrémentation pour la liste des ingredients
    while ($tabIng = mysql_fetch_array($resIng)){
     
    echo "<input type='text' name='q".$i."' size='5' value='"echo $tabIng['quantite']."'></td>";
    $i++;
    }

  3. #3
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    un echo dans un echo ? original
    mais un peu faux

    pour que ton premier champ s'appelle q1, faut initialiser $i à 1 pas à 0
    et tu fermes à chaque fois une colonne (</td>) que tu n'ouvres pas
    et pour l'incrémentation, y a plus simple : $i++;

    à part ça le echo m'a l'air juste, à part que normalement on met les valeurs des attributs HTML entre double quotes, pas entre simple quotes mais bon ça tu peux laisser filer pour le moment
    Dia [ Page DVP ] [ Site pro ]

  4. #4
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 65
    Points
    65
    Par défaut
    J'ai voulu ne pas tout mettre pour ne pas encombrer, c'est pour ça qu'il manquait des bouts de tableau, excusez-moi. Je mets cette fois mon bout de code sans en enlever. Sachez que le début et la fin du tableau ne sont pas là mais ils existent dans le code.

    Pour le $i, en fait, peu m'importait qu'il commençait à 1 ou à 0. J'ai fait le test sur l'affichage de q1 car je savais qu'il devait existait. Je le mets toutefois à 1, après ton post Dia_Fr, ça me fait penser que c'est peut-être plus cohérent.

    Oui $i++; c'est effectivement plus simple, je me remets à programmer et on dirait que je n'ai pas retenu les solutions les plus évidentes depuis tout ce temps !

    J'ai mis de simples quotes dans mon formulaire html car les champs sont dans un echo qui ouvre déjà son texte avec doubles quotes. Je ne peux donc pas mettre de simples quotes. A moins que tu vois une façon plus sympa et plus lisible de coder ça.

    Le echo dans un echo, ben, j'ai tenté mais je ne sais pas comment l'écrire cet echo. En effet, dans ton exemple Maysa, tu fais l'echo sur le value mais ça en fait, ça ne me pose pas de problème, ce serait sur le name qu'il faudrait le faire. Et j'ai toutes les difficultés du monde à le faire sans avoir de parse error. Snirfle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $i = 1; //incrémentation pour la liste de noms des ingrédients
    while ($tabIng = mysql_fetch_array($resIng)){
    	echo "<tr><td class='txt2' align='right'><input type='text' name='q".$i."' size='5' value='".$tabIng['quantite']."'></td>";
    	echo "	  <td class='txt2'><input type='text' name='u".$i."' size='2' value='".$tabIng['unite']."'>";	
    	echo "	  <td class='txt2'><input type='text' name='ing".$i."' size='80' value='".$tabIng['nomIng']."'></td></tr>";
    	echo "	  <INPUT TYPE='HIDDEN' NAME='id".$i."' VALUE='".$tabIng['idIng']."'>"; 
    	$i++;
    }

  5. #5
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    pour le coup de quotes en fait t'as juste à inverser, càd que tu ouvers/fermes ton echo avec des simples et dedans tu mets des doubles mais bon, à la limite ça tu verras quand t'auras réglé ton problème actuel

    pour le code que tu montres, je vois pas d'erreur (mais ptete que y en a et que je la vois pas...)

    à l'affichage tu as bien le nombre voulu de champs texte ?

    ton code a bien cet aspect là ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form name="monFormulaire" action="maPageTraitement.php" method="post">
    <table>
    //while
    </table>
    </form>
    si c'est bien ça, dans maPageTraitement.php, fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
    ça t'affichera toutes les données transmises par méthode post
    Dia [ Page DVP ] [ Site pro ]

  6. #6
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 65
    Points
    65
    Par défaut
    Eh bien, tout en manipulant mon code, j'obtiens enfin un retour sur mon echo. Je ne sais pas comment exactement mais ça fonctionne !

    Je vous remercie de votre aide !

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

Discussions similaires

  1. Obtiention #Nom ? dans un champ de formulaire
    Par steph_p dans le forum IHM
    Réponses: 9
    Dernier message: 05/09/2008, 10h48
  2. Champ de formulaire avec nom de la forme a[b][c][x]
    Par Baldurien dans le forum Struts 2
    Réponses: 5
    Dernier message: 01/03/2007, 17h47
  3. Recuperer le nom d'un champ de formulaire
    Par blueice dans le forum Langage
    Réponses: 18
    Dernier message: 10/01/2006, 10h42
  4. nom d'un champs de formulaire dynamique
    Par wil4linux dans le forum ASP
    Réponses: 2
    Dernier message: 22/09/2005, 17h42
  5. Réponses: 4
    Dernier message: 13/09/2005, 11h50

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