Problème due à une boucle while...

Signaler
Messages postés
59
Date d'inscription
samedi 14 avril 2007
Statut
Membre
Dernière intervention
2 avril 2010
-
Messages postés
18
Date d'inscription
mercredi 18 octobre 2000
Statut
Membre
Dernière intervention
5 août 2009
-
Bonjour à tous !

Je panique car je tente de récupérer une variable dans un champ input de type text et je n'y parviens pas... Voici donc mon code pour plus de clarté :
$selEntrees = mysql_query("SELECT * FROM admin_entrees");
   while ($readEntrees = mysql_fetch_array($selEntrees)) {
      echo '<tr>';
      echo '<td style="padding: 0 15px 5px 0;" colspan="5">'.htmlentities($readEntrees['Intitule_Entrees']).'</td>';
      echo '<td style="padding: 0 5px 5px 0;">'.$readEntrees['Prix'].' €</td>';
      echo '<td style="padding: 0 5px 5px 0;"></td>';
      echo '</tr>';
      echo '<tr>';
      echo '<td style="padding: 0 5px 5px 0;" colspan="3">Intitulé : </td>';
      echo '<td style="padding: 0 5px 5px 0;"></td>';
      echo '<td style="padding: 0 5px 5px 0;">Prix : ';
      echo '<td style="padding: 0 5px 5px 0;"></td>';
      echo '<td style="padding: 0 5px 5px 0;"><td>';
      echo '</tr>';
   }


Là où je bloque, c'est au niveau de la récupération des valeurs contenues dans mes 2 derniers input de type text !!!

Est-ce possible de faire cela comme ça ??? Est-ce que je ne suis pas en train de me fourvoyer totalement ???? Et si ma solution pour nommer mes inputs dans la boucle n'est pas foireuse... quelle est la solution ????

Merci d'avance à tous ceux qui pourront m'aider dans cette quête qui me semble insoluble !!!

6 réponses

Messages postés
59
Date d'inscription
samedi 14 avril 2007
Statut
Membre
Dernière intervention
2 avril 2010

Petite précision...

Ce sont les valeurs dans les name qui me posent problème ; ainsi que la façon de les traiter pour que chaque champ soit bien identifié lors d'éventuels changements dans les valeurs ! (oula, je ne sais pas si c'est vraiment clair ce que j'explique là... ?)

Bref, le but est finalement d'avoir les valeurs des name afin d'isoler la partie de l'ID comme suit : intituleEntrees1 dont 1 est la valeur de l'ID pour le traiter en mysql du genre update... where id = le 1 de intituleEntrees1 !

Encore merci d'avance à ceux de bonne volonté qui peuvent me venir en aide !
Messages postés
18
Date d'inscription
mercredi 18 octobre 2000
Statut
Membre
Dernière intervention
5 août 2009

Hello,

Pour être franc, je ne comprends pas très bien ce que tu veux dire.
Mais, en voyant ton code, je me demande si tu n'as pas fait d'inversions entre les quotes et double quotes :

J'aurais plutôt écrit comme ça :


      echo "<tr>";
      echo "<td style='padding: 0 15px 5px 0;' colspan='5'>".htmlentities($readEntrees["Intitule_Entrees")."</td>";



Tu ne reçois pas un message d'erreur à ce niveau là ?

En relisant ta question, il me semble un peu mieux comprendre ce que tu veux.
Par contre, pour la solution, je ne sais pas trop t'aider.
En fait, ca revient à récupèrer le nom d'un champ dont tu ne connais pas le nom exact. (si j'ai bien compris)
Si tu expliques un peu dans quel but tu veux faire ça, ce serait peut-être plus facile pour t'aider.

InTheMix
Messages postés
59
Date d'inscription
samedi 14 avril 2007
Statut
Membre
Dernière intervention
2 avril 2010

Salut InTheMix !

Tout d'abord, je te confirme que je ne reçois pas d'erreur au niveau de l'interprétation entre les quotes et les doubles-quotes !

Sinon, tu as visiblement saisi le sens de ma question : il est vrai que je ne connais pas le nom exact des champs qui sont dans la boucle puisqu'en l'occurrence, j'ai 12 entrées en base. Ce qui fait que mes champs de formulaire se répètent autant de fois.

Ceci-dit, pour pouvoir traîter ces champs individuellement, j'ai besoin de parvenir à les identifier.

Suis-je plus clair ???? As-tu tout au moins un début de solution à m'apporter ???

Dans le but de faire avancer le chmilblique, j'ai tenté de bouclé sur les élément via un foreach, mais je ne dois pas bien m'y prendre car cela me génère une erreur !

Bref... HELP !!
Messages postés
18
Date d'inscription
mercredi 18 octobre 2000
Statut
Membre
Dernière intervention
5 août 2009

oui, en fait, si j'ai bien compris :

Ta table admin_entrees contient un certain nombre d'enregistrements.
(Dans ce cas-ci, 12).

Tu affiche des éléments dans un tableau formaté html.
A priori, un enregistrement par ligne.
Sur chaque ligne, il y a un bouton supprimer et un bouton modifier.
Tu veux que si l'on clique sur l'un des boutons d'une ligne, tu retrouves de quelle ligne (ou plus précisément) quel enregistrement il s'agit pour pouvoir effectuer l'action.

Tu as un input qui correspond à "prixEntrees".
Par rapport à la variable PHP que tu as placé dans "name", je déduis qu'il s'agit de l'identifiant du record dans ta table puisque le nom est ID ?

Je pense que je serais plutôt parti sur un formulaire par ligne.
Et à la place de :

echo '<td style="padding: 0 5px 5px 0;"></td>';


j'aurais mis :

echo "<td style='padding: 0 5px 5px 0;'></td>";


Ensuite, en début de script, vérifier la valeur de la variable POST["prixEntrees"] et effectuer le traitement qui correspond à sa valeur.

if(!empty($_POST["prixEntrees"]))
{
   ... traitement
}


Et, à la place d'incrémenter le nom de l'input, tu peux incrémenter le nom des formulaires pour ne pas te retrouver avec plusieurs formulaires 'identiques' sur la même page.

J'espère que ca pourrait t'aider.


InTheMix
Messages postés
59
Date d'inscription
samedi 14 avril 2007
Statut
Membre
Dernière intervention
2 avril 2010

Merci pour tes réponses InTheMix,

Mais... Oulaaaa ! Je t'avoue que je n'ai pas vraiment compris le sens de ta dernière phrase... incrémenter le nom des formulaires pour ne pas avoir plusieurs formulaires identiques sur la même page... là, ça me dépasse un peu !

Sinon, la ligne du tableau que tu prends en exemple n'est certainement pas la meilleur. Si tu regarde la précédente, on a aussi un input, mais de name="intituleEntrees'.$readEntrees['ID'].'" pour bien différencier les name de cette ligne et de celle que tu as pris en exemple.

Cela-dit, d'après ce que je peux comprendre, il est impossible de récupérer indépendamment les nom dans chaque input généré par la boucle.

S'il faut donc que j'en passe par des champs cachés, je vais agir comme tu me le conseilles ! Ce que je testerai dans la soirée.

En tout cas, encore merci pour tes réponses !
Messages postés
18
Date d'inscription
mercredi 18 octobre 2000
Statut
Membre
Dernière intervention
5 août 2009

Récupèrer le name directement est possible en javascript je pense. Mais la combinaison du javascript et php dans ce cas précis serait sûrement assez compliquée à faire puisque les deux langages ne sont pas interprétés de la même façon, ni au même moment.

Sinon tu peux aussi afficher le contenu du array POST et faire un traitement sur les noms retournés mais bof...

Et pour expliquer ma dernière phrase, par incrémentation, je voulais dire faire quelque chose du style :

form name=form1
puis form2
...

En bref, utiliser un compteur pour modifier le nom de chaque form.

Pas de quoi pour mes réponses.
Peut-être que quelqu'un d'autre trouvera de meilleures solutions que moi.

Bonne soirée


InTheMix