Problème affichage page par page

Eléphant du PHP | 153 Messages

02 févr. 2006, 21:29

Bonjour,

En m'étant inspiré de votre affichage page par page
http://www.phpfrance.com/forums/voir_sujet-8874.php
, j'ai un problème lorsque je veux passer à la page suivante sur une des pages de mon site.

Donc, j'ai un formulaire, j'envoie les infos sur la même page qui les traite et retourne une table avec les valeurs correspondantes. Les infos et la barre de navigation s'affichent bien, avec le 1 en gras, mais si je clique pour voir la page 2, ça me retourne " La requête n'a donné aucun résultat", qui est situé après "else {" à la fin.

En cherchant, je crois avoir compris d'où venait le problème.
En fait, du fait du formulaire, je contrôle les variable issue du "submit" comme ceci :
if (isset($_POST["var"])) $var = $_POST["var"] ; else $var = "0";
Par contre, pour le lien "$barre_nav. = "<a..." incluant mes variables, j'utilise le "$_GET" lors du contrôle des variables, donc ça ne correspond plus avec les variables venant du formulaire (ce sont les mêmes), qui elles sont en "$_POST"
En testant les variables venant de la $barre_nav, ça me retourne "0"

Ya t-il une solution à ce problème SVP, merci ?

Pas trop sûr d'avoir été très clair, encore une fois :?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 févr. 2006, 22:02

Salut,

il faut effectivement récupérer les vriables POST puis GET, pour ça tu peux tout simplement faire comme suite:
$var = (isset($_POST["var"])) ? $_POST["var"] : ( (isset($_GET["var"])) ? $_GET["var"] : "0");
avec ce test tu essaie de récupérer une variable POST en premier si elle n'existe pas la meme chose avec GET sinon initialisation à 0.

Ce qui revient à faire:
if (isset($_POST["var"])) 
   $var = $_POST["var"] ;
elseif (isset($_GET["var"])) 
   $var = $_GET["var"] ;
else 
   $var = "0";

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 153 Messages

03 févr. 2006, 09:54

Salut Truc,

Génial :D
Ca fonctionne très bien !

Par contre, petite question sur le codage, à quoi correspondent le "?" et ":" dans
$var = (isset($_POST["var"])) ? $_POST["var"] : ( (isset($_GET["var"])) ? $_GET["var"] : "0");
Afin de bien comprendre ce que je fais.

STP

Merci.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 févr. 2006, 12:50

euh ouiu j'ai donné un exmeple mais pas assez détaillé apparemment.

le ? "correspond" au if et le : au else

donc ce qu'il y a avant le ? est un test if la condition avant le ":" est exécuté si le test est bon sinon on exécute ce qu'il y a apres le ":"

comme dans l'exemple de mon post avec les if, ifelse

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 févr. 2006, 12:54

il s'agit d'un opérateur ternaire
<?php
// Exemple d'utilisation pour l'opérateur ternaire
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// L'expression ci-dessus est identique à
if (empty($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}
?>
L'expression (expr1) ? (expr2) : (expr3) renvoie la valeur de l'expression expr2 si l'expression expr1 est vraie, et l'expression expr3 si l'expression expr1 est fausse.
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

Eléphant du PHP | 153 Messages

03 févr. 2006, 13:17

Ok, maintenant j'ai compris :wink:

Merci à vous 2 :D