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


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

falla3
Auteur

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

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
Auteur

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

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
Auteur
<!-- 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>

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
Auteur
    <?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

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
Auteur

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...

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
Auteur
<td class="c1" style="height: 28px"><?php echo $_SESSION['organes']['id_tab'];?></td>

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

$_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
Auteur

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

Oublie pas de mettre les TR entre chaque nouvelle ligne

falla3
Auteur

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

falla3
Auteur

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" ?

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

falla3
Auteur

Non j'en ai pas

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

falla3
Auteur

okei je te tiens au courant merciii

falla3
Auteur

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

falla3
Auteur

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

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