avis sur des transferts de donné

pingoo
Invité n'ayant pas de compte PHPfrance

03 juil. 2005, 11:58

Bonjours,
Je viens graçe à votre Forum de limiter le nombre d'affichage de ma base de données et de le diviser en page par page.
La ou ca bloc c'est que je part d'un formulaire de recherche avec les valeur envoyées en POST, et lorsque l'on passe à la page suivante il faut que les valeurs soit transmises...
N'y a t il pas un autre moyen surtout afin de limiter les perte des données?
Merci

Mammouth du PHP | 1339 Messages

03 juil. 2005, 12:01

Tu la fait passer en _GET apres :)

Genre :

page.php?page=1&recherche=mot+cle

Du coup pour gerer ta recherche utilise $_REQUEST qui recherche la variable soit dans $_POST ou soit dans $_GET
Bon sinon tu me fais un message privé et on se fait un TeamViewer

pingoo
Invité n'ayant pas de compte PHPfrance

03 juil. 2005, 13:03

OK merci :lol:

shi
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 13:19

Bonjour,

J'ai le même problème mais je ne comprends pas où il faut mettre le $_request...

Quelqu'un pourrait-il m'expliquer ? Merci :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 juil. 2005, 13:26

$ma_var = $_REQUEST["var"];
correspond à
if (isset($_ENV["var"]))
  $ma_var = $_ENV["var"];
elseif(isset($_GET["var"]))
  $ma_var = $_GET["var"];
elseif(isset($_POST["var"]))
  $ma_var = $_POST["var"];
elseif(isset($_SESSION["var"]))
  $ma_var = $_SESSION["var"];
elseif(isset($_COOKIE["var"]))
  $ma_var = $_COOKIE["var"];
Plus d'infos ==> ICI <==
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

shi
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 13:46

Merci Zeus !

Je crois avoir compris à quoi sert $_REQUEST. Elle permet d'acquérir les éléments d'un formulaire par exemple ?

j'ai un formulaire qui sert pour un dico. On entre le mot dans une langue et apparaît son équivalent dans l'autre langue d'après la requête.
J'ai réussi à limiter le nombre a afficher par page et à faire apparaître le lien 'suivant' à la première recherche grâce au post suivant :

http://www.phpfrance.com/forums/voir_sujet-5284.php

Si je clique sur suivant, ça load la page avec pour lien dans le navigateur :
base.php?page=1

Mais le mot de la recherche n'est pas pris en compte et finalement, ça me reload seulement base.php sans les résultats et les liens 'suivant' 'précédent'

Y'aurait-il quelque chose qui manque dans mon formulaire et/ou les liens ?

Merci beaucoup !

le formulaire :

Code : Tout sélectionner

<form name="annuaire" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <input type="text" name="critere" value="Votre recherche ici. <?php if(!$critere) echo stripslashes( $critere ); ?>" size="17" onFocus='document.forms["annuaire"].elements["critere"].value =""'/> <input type="submit" name="envoyer" value="Traduire"/><input type="hidden" name="recherche" value="1"/></form>
les liens 'suivants' et 'précédents' :

Code : Tout sélectionner

if($page > 0) { ?> <a href="<?php echo($_SERVER['PHP_SELF']."?page=". ($page - 1))?>">Page précédente</a> <?php } if($page < $nb_pages) { ?> <a href="<?php echo($_SERVER['PHP_SELF']."?page=". ($page + 1))?>">Page suivante</a> <?php }

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 juil. 2005, 13:56

A mon humble avis, le problème se situe plutôt au niveau du traitement des variables.

Tu donnes un bout de code ? mici
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

shi
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 13:58

attends le code fait 187 lignes avec toutes les mises en page... Je purge un peu pour alléger alors !

Merci beaucoup en tout cas !

shi
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 14:05

voilà le code un peu allégé...

Je viens de me rendre compte que si on tape un mot qui n'est pas dans la base, le message s'affiche mais il dit que page n'est pas défini :?:
(fonctions.inc.php contient seulement la fonction pour colorer le mot recherché.)

Code : Tout sélectionner

<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <meta http-equiv="content-type" content="text/html" charset="UTF-8" /> <head> <?php include( "mysql.inc.php" ); require( "fonctions.inc.php" ); if( isset( $_POST["recherche"] ) ) $recherche = $_POST["recherche"]; else $recherche = 0; if( isset( $_POST["critere"] ) ) $critere = $_POST["critere"]; ?> </head> <body> <form name="annuaire" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <input type="text" name="critere" value="Votre recherche ici. <?php if(!$critere) echo stripslashes( $critere ); ?>" size="17" onFocus='document.forms["annuaire"].elements["critere"].value =""'/> <input type="submit" name="envoyer" value="Traduire"/><input type="hidden" name="recherche" value="1"/></form> </body> <?Php if( $recherche==1 && !empty( $critere) ) { $requete = "SELECT * FROM japfr WHERE fr LIKE '%" . stripslashes( $critere ) . "%'"; $execution = mysql_query( $requete, $connection ) OR die( "Impossible d'executer la Requete !" ); $total = @mysql_num_rows( $execution ) ; $na = 5; if( $total> 0 ) { $nb_pages = ceil($total/$na); $page = isset($_GET['page']) ? $_GET['page'] : 0; $depart = $page * $na; $requete2 = "SELECT * FROM japfr WHERE fr LIKE '%" . stripslashes( $critere ) . "%' limit ".$depart.",".$na; $execution2 = mysql_query( $requete2, $connection ) OR die( "Impossible d'executer la Requete !" ); $totallimite = @mysql_num_rows( $execution2 ) ; ?> <br /> <div style="position: absolute; left: 16px; top:230px; width: 753px;background-color: #FFFFFF; layer-background-color: #FFFFFF; border: 1px none #000000;"> <p class="s11">R&eacute;sultat : <span class="b"><?php echo $total; ?></span><br /> Mot recherch&eacute; :<span class="b""color:#FF0000"> <?php echo colorise_query( $critere,$critere,$critere); ?></span></p> <br /> <?php while( $un_mot = mysql_fetch_array( $execution2 )) { ?><ul><li><p class="style2"><strong><?php echo colorise_query( $un_mot["fr"], $critere,"stabylo" ); ?></strong></li></ul></p> <p class="style8"><?php echo $un_mot["jap"] . " " . $un_mot["pro"]; ?><br /></p> <p class="style5"><?php echo $un_mot["com"]; ?><br /> </p> <?php } mysql_free_result( $execution2 ); } else { $requete = "SELECT * FROM japfr WHERE jap LIKE '%" . stripslashes( $critere ) . "%' OR pro LIKE '%". stripslashes( $critere ) . "%'"; $execution = mysql_query( $requete, $connection ) OR die( "Impossible d'executer la Requete !" ); $total = @mysql_num_rows( $execution ); $na = 5; if( $total > 0 ) { $nb_pages = ceil($total/$na); $page = isset($_GET['page']) ? $_GET['page'] : 0; $depart = $page * $na; $requete2 = "SELECT * FROM japfr WHERE jap LIKE '%" . stripslashes( $critere ) . "%' OR pro LIKE '%". stripslashes( $critere ) . "%' limit ".$depart.",".$na; $execution2 = mysql_query( $requete2, $connection ) OR die( "Impossible d'executer la Requete !" ); $totallimite = @mysql_num_rows( $execution2 ) ; ?> <br /> <div style="position: absolute; left: 16px; top:230px; width: 753px;background-color: #FFFFFF; layer-background-color: #FFFFFF; border: 1px none #000000;"> <p class="s11">R&eacute;sultat : <span class="b"><?php echo $total; ?></span><br /> Mot recherch&eacute; :<span class="b""color:#FF0000"> <?php echo colorise_query( $critere,$critere,$critere ); ?></span></p> <br /> <?php while( $un_mot = mysql_fetch_array( $execution2 ) ) { ?><ul><li><p class="style4"><strong><?php echo colorise_query( $un_mot["jap"],$critere,"stabylo" );?></strong></li></p></ul> <p class="style8"><?php echo $un_mot["fr"]; ?><br /></p> <p class="style5"><?php echo $un_mot["com"]; ?><br /> </p> <?php } mysql_free_result( $execution2 ); } else echo "Aucune traduction disponible pour le moment.<br />\n"; } if($page > 0) { ?> <a href="<?php echo($_SERVER['PHP_SELF']."?page=". ($page - 1))?>">Page précédente</a> <?php } if($page < $nb_pages) { ?> <a href="<?php echo($_SERVER['PHP_SELF']."?page=". ($page + 1))?>">Page suivante</a> <?php } } ?> </body> </html> <?Php mysql_close(); ?>