Page 1 sur 1

Problème affichage page par page

Posté : 02 févr. 2006, 21:29
par Cobra52
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 :?

Posté : 02 févr. 2006, 22:02
par Truc
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";

Posté : 03 févr. 2006, 09:54
par Cobra52
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.

Posté : 03 févr. 2006, 12:50
par Truc
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

Posté : 03 févr. 2006, 12:54
par zeus
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.

Posté : 03 févr. 2006, 13:17
par Cobra52
Ok, maintenant j'ai compris :wink:

Merci à vous 2 :D