submit en restant sur la méme page

Eléphanteau du PHP | 14 Messages

29 déc. 2009, 18:50

salut tout le monde. en fait j'ai créé un formulaire qui importe des données depuis ma base de données et les affiche par page; le nombre de pages = au nombre d'enregistrements. si je me trouve sur la page 4 parexple et que je clique sur le bouton submit du formulaire il me retourne a la page 1 or je veux rester sur la page 4....Si quelqu'un peut me donner un coup de main please!!!

Mammouth du PHP | 672 Messages

30 déc. 2009, 10:04

Bonjour.

Là comme ça, c'est un peu difficile de se prononcer.
Sans sortir la boule de cristal, je te propose donc quelques pistes :

- Passer en paramètre le numéro de page (par un champ caché, par exemple).
Il suffit ensuite de l'utiliser au retour...

- Utiliser de l'AJAX : le bouton de validation envoie une requête pour valider le formulaire sans recharger la page en cours.
Attention dans ce cas, à penser aux utilisateurs qui n'ont pas JS activé...

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 10:30

Comment accèdes-tu à tes pages via l'URL (comme cela http://monsite.com/index.php?page=4).
Si oui, tu peux changer dans ton formulaire la balise action ce qui te donnera (à vérifier) :
<form action="http://monsite.com/index.php?page=4" method="post ou get a toi de choisir">
Si tu n'utilise pas les url pour accéder à ta page, utilises dans ta page qui est la cible de ton formulaire la fonction header.
De ce faites tu feras :
<?php
if ($_POST["page_formulaire"] == "page_4")
{
  header ("Location: mapage4.php");
  exit();
}
?>
et dans ton formulaire tu places un champ caché (caché pour l'utilisateur) mais pas invisible
<input type="hidden" name="page_formulaire" value="page_4" />


Edit : rectificatifs
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 14 Messages

30 déc. 2009, 10:58

bonjour! merci de vos réponses mais il ya une variable $numéropage qui tourne en boucle. étant donné qu'il ya beaucoup de page je ne peux pas à chaque fois indiquer le numéro de page. je vous propose de regarder mon code:

<?php

include('connections/link.php');
mysql_select_db($base, $id_connect);

$elmtpage=1;


$req_total=mysql_query('SELECT COUNT(*) AS total FROM personne');
$rep_total=mysql_fetch_assoc($req_total);
$total=$rep_total['total'];

$elmtpage=ceil($total/$elmtpage);

if(isset($_GET['page']))
{
$pagecourante=intval($_GET['page']);

if($pagecourante>$nombreDePages)
{
$pagecourante=$nombreDePages;
}
}
else
{
$pagecourante=1;
}

$premiereEntree=($pagecourante-1)*$elmtpage;


$retour_page=mysql_query('SELECT * FROM personne ORDER BY num LIMIT '.$premiereEntree.', '.$emltpage.'');

while($donnees_page=mysql_fetch_assoc($retour_page))
{

?>
<form name="pers" action="personne.php"" method="POST">
<table height="398" border="10%" align="center">

<caption><h1>Fiche de personne</h1></caption>
<tr align="center">
<th>numero</th>
<td><input type="text" name="num" value="<?php echo(''.$donnees_page['num'].'') ;?>"></td>
</tr>
<tr align="center">
<th>nom</th>
<td><input type="text" name="nom" value="<?php echo(''.$donnees_page['nom'].'') ;?>"></td>
</tr>
<tr align="center">
<th>prenoms</th>
<td><input type="text" name="prenoms" value="<?php echo(''.$donnees_page['prenoms'].'') ;?>"></td>
</tr>
<tr align="center">
<th>date naiss</th>
<td><input type="text" name="datenaiss" value="<?php echo(''.$donnees_page['datenaiss'].'') ;?>"></td>
</tr>
<tr align="center">
<th>sexe</th>
<td><input type="text" name="sexe" value="<?php echo(''.$donnees_page['sexe'].'') ;?>"></td>
</tr>

<tr align="center">
<td colspan="2"><input type="submit" value="valider"></td>
</tr>
</table>
</form><?

}

echo '<p align="center">Page : ';
for($i=1; $i<=$nombreDePages; $i++)
{
if($i==$pagecourante)
{
echo ' [ '.$i.' ] ';
}
else
{
echo ' <a href="personne.php?page='.$i.'">'.$i.'</a> ';
}

}


Ce code marche bien sauf si je valide par le bouton submit il me retourne à la 1ère page............Merci de votre contribution
Modifié en dernier par dadon le 30 déc. 2009, 11:12, modifié 1 fois.

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 11:04

Avant de te répondre (et avant que tu te fasses gronder par les modos), utilises les outils pour dire qu'il s'agit de PHP ou HTML, ... ce sera plus clair pour nous de lire ton code
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 11:07

Au passage tu as un formulaire sur chaque page ? Si oui c'est débile...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 14 Messages

30 déc. 2009, 11:16

effectivement j'avais fait une erreur au moment de la copie....dsolé...sisi j'ai chaque page un formulaire.....est ce que il ya une autre possibilité?

Eléphanteau du PHP | 14 Messages

30 déc. 2009, 11:38

le probléme en est que je dois faire des traitements formulaire par formulaire(fiche par fiche).....Mais aussi s'il ya une possibilité de rester sur une méme page de type formulaire avec des "input type= text" et d'importer depuis la base de données les infos de la fiche et un bouton suivant qui assure la navigation des infos?????? je serais vraiment partant....

ViPHP
ViPHP | 1996 Messages

30 déc. 2009, 11:49

Hmm c'est pas très propre comme solution mais c'est un début...
Tu peux pointer vers une seule page qui traite le formulaire et qui ensuite te redirige vers la page de ton choix via header. De ce fait tu n'auras q"un seul formuliare à traiter, à protéger , à injecter. Ensuite les reste c'est que de l'affichage. Tu peux aussi utiliser hidden des champs input
Si on reprend ton code :

Au passage :
$req_total=mysql_query('SELECT COUNT(*) AS total FROM personne');
$rep_total=mysql_fetch_assoc($req_total);
$total=$rep_total['total']; //tu es sûr que cela marche çà ?
Ton code :
<?php

include('connections/link.php');
mysql_select_db($base, $id_connect);

$elmtpage=1;


$req_total=mysql_query('SELECT COUNT(*) AS total FROM personne');
$rep_total=mysql_fetch_assoc($req_total);
$total=$rep_total['total']; //tu es sûr que cela marche çà ?

$elmtpage=ceil($total/$elmtpage);

if(isset($_GET['page']) && !isset($_POST["page_courante_retour_formulaire"]))
{
	$pagecourante=intval($_GET['page']);
	if($pagecourante>$nombreDePages)
		$pagecourante=$nombreDePages;
}

if (isset($_POST["page_courante_retour_formulaire"]) && !isset($_GET['page']))
{
	$pagecourante=intval($_POST["page_courante_retour_formulaire");
}

if (empty($pagecourante))
	$pagecourante=1; //par défaut car intval mettra 0 si pas un entier


$premiereEntree=($pagecourante-1)*$elmtpage;


$retour_page=mysql_query('SELECT * FROM personne ORDER BY num LIMIT '.$premiereEntree.', '.$emltpage.'');

while($donnees_page=mysql_fetch_assoc($retour_page))
{

?>
<form name="pers" action="personne.php" method="POST">
<input type="hidden" name="page_courante_retour_formulaire" value="<?php echo $pagecourante; ?>" />
<table height="398" border="10%" align="center">

<caption><h1>Fiche de personne</h1></caption>
<tr align="center">
<th>numero</th>
<td><input type="text" name="num" value="<?php echo(''.$donnees_page['num'].'') ;?>"></td>
</tr>
<tr align="center">
<th>nom</th>
<td><input type="text" name="nom" value="<?php echo(''.$donnees_page['nom'].'') ;?>"></td>
</tr>
<tr align="center">
<th>prenoms</th>
<td><input type="text" name="prenoms" value="<?php echo(''.$donnees_page['prenoms'].'') ;?>"></td>
</tr>
<tr align="center">
<th>date naiss</th>
<td><input type="text" name="datenaiss" value="<?php echo(''.$donnees_page['datenaiss'].'') ;?>"></td>
</tr>
<tr align="center">
<th>sexe</th>
<td><input type="text" name="sexe" value="<?php echo(''.$donnees_page['sexe'].'') ;?>"></td>
</tr>

<tr align="center">
<td colspan="2"><input type="submit" value="valider"></td>
</tr>
</table>
</form><?

}

echo '<p align="center">Page : ';
for($i=1; $i<=$nombreDePages; $i++)
{
	if($i==$pagecourante)
		echo ' [ '.$i.' ] ';
	else
	echo ' <a href="personne.php?page='.$i.'">'.$i.'</a> ';
}
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 14 Messages

30 déc. 2009, 12:10

je vais l'essayer......thanks

Eléphanteau du PHP | 14 Messages

30 déc. 2009, 12:28

Je vous REMERCIE 1000fois....Ça a marché.....yavé une accolade manquante: $pagecourante=intval($_POST["page_courante_retour_formulaire"]). A bientot

Eléphanteau du PHP | 14 Messages

30 déc. 2009, 13:18

En fait au lieu que les numéros de page s'affiche d'aprés ce code:
for($i=1; $i<=$nombreDePages; $i++)
{
if($i==$pagecourante)
{
echo ' [ '.$i.' ] ';
}
else
{
echo ' <a href="personne.php?page='.$i.'">'.$i.'</a> ';
}

}

Je voudrais créer à la place des boutons précédent et suivant......Est ce possible?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 déc. 2009, 13:25

C'est tout à fait possible.... tu connais le nombre de pages maximum, tu connais la page qui est actuellement consulté. Il ne te reste qu'à définir quand est ce que le bouton précédent peut être affiché (à priori si tu n'es pas sur la première page) et quand le bouton suivant doit être affiché (vraissemblablement si tu n'es pas sur la dernière page), et afficher les liens qui vont bien dans ces deux cas :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 14 Messages

30 déc. 2009, 13:33

merci de votre réponse. pouvez vous me lancer sur une piste svp........

Mammouth du PHP | 672 Messages

30 déc. 2009, 13:42

:google:

ICI par exemple...