[RESOLU] Remplir input text avec POST

Eléphanteau du PHP | 13 Messages

15 mars 2017, 14:08

Bonjour,
Je veux que quand j'appuie sur un bouton, un input text sera rempli automatiquement avec les valeurs de ma db.
<input type="text"  class="inline" name="something" value="<?php echo(isset($_POST['something'])) ? htmlspecialchars($_POST['something']) : '' ?>"/>
if(isset($_POST[$row2['id']])){
    $_POST['something'] = $row2['name'];
 }
Ca fonctionne. Enfin, seulement si l'input text se trouve EN-DESSOUS de la déclaration du if, mais si il se trouve au-dessus, les valeurs ne vont jamais s'afficher.
Je suppose que c'est parce que le code continue de s'exécuter après le if et ne recommence pas à 0 ?

Le soucis c'est que je ne peux pas déplacer le input text pour un soucis de mise en page, ni le if pour un soucis de code.

Je me demandais donc si il y avait un moyen que ça fonctionne ?

Merci.

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8733 Messages

15 mars 2017, 14:42

salut,

Le code est exécuté de façon séquentielle, donc de haut en bas.

en php tu n'as pas d'autre choix que d'avoir les valeurs avant de les afficher (tu te déshabilles avant de t’asseoir sur les toilettes et pas l'inverse ;) ).

une solution pourrait être de set les valeurs en JS mais bon c'est pas terrible.

Le plus simple c'est de déplacer ton code qui sélectionne les données avant l'affichage du formulaire.

pour info c'est pas une bonne idée de mettre une valeur dans le tableau $_POST, comment fait-tu pour différencier la saisie de l'utilisateur de ce qu'il y a en base ?

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 13 Messages

15 mars 2017, 17:03

Puisque c'est de haut en bas j'ai juste créer un autre foreach un peu plus haut et ça fonctionne, merci:)
La valeur que je met dans le tableau POST c'est la valeur qui doit être afficher quand j'appuie sur le bouton. Ça ne doit pas différencier la valeur qu'il affiche de base et celle que l'utilisateur rentre puisque ce sont les mêmes.

Par contre j'ai autre petit soucis, une fois appuyé sur le buton, la valeur de base s'affiche et là on peut la changer. J'aimerai que lorsque on appuie sur un autre bouton, il remplace sa valeur base par la nouvelle dans ma base de donnée SANS supprimer la row ou en ajouter une nouvelle.

J'ai vu que ça se fait avec UPDATE, mais le problème c'est qu'il faut que mon programme sache quelle row remplacer. J'ai un bouton pour afficher pour chaque rows et un bouton pour envoyer. Je sais pas si c'est compréhensible ?^^
foreach($result as $row2){
   if(isset($_POST[$row2['id']])){
      $_POST['something'] = $row2['name'];
      $_POST['comment'] = $row2['comment'];
   }
   if(isset($_POST['submit'])){                                  
            //UPDATE la db where $row['id']
   }
}
Je vois pas comment faire rappeler à mon programme quel bouton contenant l'id de la row a été cliqué juste avant. Une idée?

Mammouth du PHP | 1207 Messages

16 mars 2017, 10:10

tu peux stocker la valeur récupèré en base aussi dans un champs caché ensuite dans une boucle tu compare les deux et tu trouve le / les ligne(s) impactée(s)

Eléphanteau du PHP | 13 Messages

16 mars 2017, 16:55

Salut, j'y ai pensé mais je n'ai jamais manipulé ça.

J'ai stocké la valeur de la row dans une variable SESSION et j'arrive à la récupérer.
Est-ce une bonne idée ? Je suis obliger de faire un session_start rien que pour ça... Je n'utilise pas les sessions sinon dans mon programme. ça va pas manger trop de "ressources" ?

Merci;)

Mammouth du PHP | 1207 Messages

16 mars 2017, 16:58

Une session fonctionnera tout aussi bien. un session start ne devrait pas utiliser beaucoup de ressource et n'avoir aucun impact sur le temps d'éxécution.

Eléphanteau du PHP | 13 Messages

17 mars 2017, 09:37

D'acc, merci ;)