tableau et formulaire

Par falla3, il y a 9 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire
Au fait je voudrais que les éléments de mon tableau ne se rafraîchisse pas

je m'explique...
j'ai crée un formulaire dans lequel j'ai une colonne d'une table de ma bdd,
quand je selectionne un élément de mon formulaire et je click sur valider il affiche mes résultats sur la ligne1 de mon tableau
quand je selectionne un autre élément du formulaire et que je click sur valider, il affiche mes résultats sur la ligne2 ainsi de suite
donc à la fin j'aurai un tableau...
mon problème est quand je sélectionne un autre élement de mon formulaire, au lieu qu'il m'affiche mes résultas sur la ligne2, il écrase la ligne1 et l'affiche là-bas...
jsp été assez clair ds mes explications...
Grosso modo je veux que mon tableau ne se rafraichisse

Entourez votre code avec ce symbole ``` <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post"> <select name="" id="" style="width: 154px"> <option value=""> ----- Choisir ----- </option> <?php $reponse = pg_query("SELECT * From mabase"); $chaine2=''; while($donnees = pg_fetch_array($reponse)) { $chaine1=$donnees['colonne']; if ($chaine1!=$chaine2) { ?> <option value="<?php echo $donnees['colonne']; ?>"><?php echo $donnees['colonne'];?></option> <?php $chaine2=$donnees['colonne']; } } ?> </select> <input type="submit" value="valider" name="ok"> </form> </td> </tr> </div> </section_milieu> <section_droite> <div id="section_droite"> <center> <h1 style="width: auto; font-size: 30px;">titre</h1> </center> <table id="#" cellpadding="4" style ="font-size:10pt; margin-left:30" bgcolor="#EEEEFF" border="1"> <tr> <th align="center">colonne1</th> <th align="center">colonne2</th> </tr> <?php echo $sel_org; $reponse = pg_query("SELECT * FROM mabase where colonne1 = trim('".$sel_org."')"); while($donnees = pg_fetch_array($reponse)) { ?> <tr> <td><?php echo $donnees['colonne1'];?></td> <td rowspan="2"><?php echo $donnees['colonne2'];?></td> <?php } ?> </table> </div> </section_droite>

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

24 réponses

Kareylo, il y a 9 ans

Remplis un tableau (en php ou en javascript) avec toutes les données et affiche les dans le tableau (en HTML)

falla3, il y a 9 ans

merci de votre réponse mais au fait c'est ck je fais déjà, j'ai crée mon tableau et il est rempli lorsque je choisis un élément de mon formulaire et que je clik sur valider tout ça c ok mon probème c'est quand je choisis un autre élément de mon formulaire et que je le valide au lieu d'afficher les résulats sur la ligne d'apres il l'affiche sur la 1ere ligne cki va l'écraser

Kareylo, il y a 9 ans

Fait un peu de javascript pour bloquer l'évênement lors du click sur le bouton, ça doit venir du rafraichissement de la page.

Sinon, il y a aussi la technique de remplir la variable $_SESSION, ce qui permet de transmettre les données de pages en pages

falla3, il y a 9 ans

Vous n'auriez pas un exemple à me proposer? cela fait des jours que j'essaie de régler ce probème

Kareylo, il y a 9 ans

Tu pourrais mettre la partie du code qui fait le traitement des données ? J'entends par là, le morceaux de code où tu met tes données dans un tableau.

Mais en gros, ça doit ressembler à ça :

$_SESSION['datas'] = array($_POST['nom_du_champ]);
falla3, il y a 9 ans
<!-- creation du formulaire--> <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post"> <select name="organes" id="organe" style="width: 154px"> <option value=""> ----- Choisir -------- </option> <?php //for ($i = 0; $i < $_GET['']; $i++){ //requete pour selectionner la table et la colonne a mettre dans le formulaire //tr=0; //tr=tr+1; //tr++; $reponse = pg_query("SELECT * From bdd"); $chaine2=''; // on boucle sur la réponse while($donnees = pg_fetch_array($reponse)) { $chaine1=$donnees['lib_long']; if ($chaine1!=$chaine2) { ?> <option value="<?php echo $donnees['lib_long']; ?>"><?php echo $donnees['lib_long'];?></option> <?php $chaine2=$donnees['lib_long']; } } ?> </select> <input type="submit" value="valider" name="ok"/> </form> //pour le traitemenent de mon tableau <table class="dTable" id="choiceList" cellpadding="4" style ="font-size:10pt; margin-left:10" bgcolor="#EEEEFF" border="1"> <tr> <th class="c1">id</th> <th class="c2">vers</th> <th class="c3">type</th> <th class="c4">form</th> </tr> </thead> <tbody> <?php //requete pour selectionner un element dans le formulaire de la colonne lib_long et afficher echo $sel_org; $reponse = pg_query("SELECT * FROM idrc where lib_long = trim('".$sel_org."')"); //{ //on boucle sur l'ensemble des données // for ($donnees=0; $donnees <1; $donnees++){ while ($donnees = pg_fetch_array($reponse)) { ?> <tr > <td class="c1" style="height: 28px"><?php echo $donnees['id'];?></td> <td class="c2" style="height: 28px"><?php echo $donnees['vers'];?></td> <td class="c3" style="height: 28px"><?php echo $donnees['type];?></td> <td class="c4" style="height: 28px"><?php echo $donnees['form'];?></td> </tr> <?php } ?> </table>
Kareylo, il y a 9 ans

Tu ne récupères jamais les données envoyées en post ?
Par exemple, je tombe sur une variable '$sel_org' sans savoir où elle est déclarée.

falla3, il y a 9 ans
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $sel_org = $_POST["organes"]; ?> **** je l'ai déclaré dans le head. et je recuperes aussi les données envoyées en POST
Kareylo, il y a 9 ans

tu dois mettre $_POST['organes'] dans la session à cet endroit là!

if ($_SERVER["REQUEST_METHOD"] == "POST") { $_SESSION['organes'][] = trim($_POST["organes"]);

Et au niveau de ta requête pour récupérer les données pour ton tableau :

//requete pour selectionner un element dans le formulaire de la colonne lib_long et afficher echo $sel_org; $reponse = pg_query("SELECT * FROM idrc where lib_long IN ({$_SESSION['organes']})"); //{ //on boucle sur l'ensemble des données // for ($donnees=0; $donnees <1; $donnees++){ while ($donnees = pg_fetch_array($reponse)) {

Tu pourrais aussi faire le même principe, mais avec les cookies.

falla3, il y a 9 ans

Je réussis déjà à faire la récup des données mon probleme se pose au niveau de l'affichage du tableau
comment je peux faire si je veux que
quand je selectionne un élément de mon formulaire et je click sur valider il affiche mes résultats sur la ligne1 de mon tableau
quand je selectionne un autre élément du formulaire et que je click sur valider, il affiche mes résultats sur la ligne2 ainsi de suite
donc à la fin j'aurai un tableau...
mon problème est quand je sélectionne un autre élement de mon formulaire, au lieu qu'il m'affiche mes résultas sur la ligne2, il écrase la ligne1 et l'affiche là-bas...

Kareylo, il y a 9 ans

Tu pourrais stocker les résultats de ta requête dans la session ou en cookies et ils seront toujours dans l'odre dans lequel tu veux.

Donc, au lieu de stocker le choix en session, tu mets les données récupérées par ta requête SQL

if ($_SERVER["REQUEST_METHOD"] == "POST") { $organe = trim($_POST["organes"]); $reponse = pg_query("SELECT * FROM idrc where lib_long IN ({$organe})"); $_SESSION['organes'][] = pg_fetch_array($reponse);

Et ensuite, tu boucles sur les données de la session

falla3, il y a 9 ans
<td class="c1" style="height: 28px"><?php echo $_SESSION['organes']['id_tab'];?></td>

il ne récupere plus ls données de ma bdd

Kareylo, il y a 9 ans

$_SESSION['organes'] est un tableau !
Tu dois le parcourir pour avoir accès aux données, comme ceci:

<?php foreach($_SESSION['organes'] as $data){ ?> <td class="c1" style="height: 28px"><?php echo $data['id_tab'];?></td> <?php } ?>

Bien entendu, c'est à adapter selon tes besoins

falla3, il y a 9 ans

merci Kareylo
ça marche mais ça s'affiche toujours sur la 1ere ligne

Kareylo, il y a 9 ans

Oublie pas de mettre les TR entre chaque nouvelle ligne

falla3, il y a 9 ans

il y'a les tr pourtant...
et si j'ajoute une ligne qui s'incrémente?

falla3, il y a 9 ans

ou svp comment je peux dire "si je sélectionne un autre élement du formulaire , mettre les résultats dans une 2'eme ligne du tableau" ?

Kareylo, il y a 9 ans

Tu as bien session_start(); au début du fichier ?

falla3, il y a 9 ans

Non j'en ai pas

Kareylo, il y a 9 ans

Ajoute le (C'est une fonction PHP), ça permettra de garder la session, et donc de ne pas perdre les données.

falla3, il y a 9 ans

okei je te tiens au courant merciii

falla3, il y a 9 ans

je les ai mis mais j'ai des warnings...
j'ai vérifié s'il ya pas d'espaces ect.

falla3, il y a 9 ans

et j'ai toujours les memes résultats (affichage en 1ere ligne)
je comprend vraimenet plus..

Kareylo, il y a 9 ans

Tu dois mettre le session_start() avant toute balise HTML dans ton code.