Bonjour,
Voila je rencontre un petit problème avec mon code.
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>
Décrivez ici ce que vous cherchez à obtenir
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
Remplis un tableau (en php ou en javascript) avec toutes les données et affiche les dans le tableau (en HTML)
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
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]);
<!-- 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.
<?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.
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
<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
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" ?
Ajoute le (C'est une fonction PHP), ça permettra de garder la session, et donc de ne pas perdre les données.
et j'ai toujours les memes résultats (affichage en 1ere ligne)
je comprend vraimenet plus..