comment recuperer cette variable

Eléphant du PHP | 65 Messages

12 janv. 2007, 14:34

Salut, j'ai un probleme avec un de mes codes! pour changer lol :shock:
Donc j'ai un formulaire, je met nom, prenom admettons.. Je recupere les donnés par la variable $_POST, je redirectionne les donnés dans une autre boucle mais elles n'existent plus... Je sais pas si je suis clair :roll: j'ai crée un exemple pour que vous compreniez ce que je veux dire:

Code : Tout sélectionner

//ici $_POST['var'] et var2 on été recuperés par le biais d'un formulaire et si elles n'existent pas elles sont crées if ($_GET['form'] == "erreur1"){ $var = isset($_POST['var']) ? $_POST['var'] : ''; $var2 = isset($_POST['var2']) ? $_POST['var2'] : ''; echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['PHP_SELF'].'?form=corriger">'; die(); } if ($_GET['form'] == "corriger"){ /* maintenant que $var et $var2 n'existent plus comment les recuperer? */ }

ViPHP
ViPHP | 1961 Messages

12 janv. 2007, 14:40

Bonjour,

Tu dois les passer dans l'URI comme tu passes form=QQchose,
tu dois faire
form=QQchose&var=val1&var2=val2
N'oublie pas le & (é commerciale) entre chaque couple variable=valeur.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 65 Messages

12 janv. 2007, 14:56

Et dans le style c'est mieux?

Code : Tout sélectionner

// si $_GET['form'] existe if (isset($_GET['form'])){ // si $_POST['var'] n'existe pas $var = rien si non $var prend la valeur de $_POST['var'] donc $var existe quoi qu'il arrive if ($_GET['form'] == "erreur1"){ $var = isset($_POST['var']) ? $_POST['var'] : ''; $var2 = isset($_POST['var2']) ? $_POST['var2'] : ''; //je recupere les donnés de mes deux variables pour les utiliser dans ma boucle corriger echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['PHP_SELF'].'?form=corriger&var='.$var.'&var2='.$var2.'">'; die(); } if ($_GET['form'] == "corriger"){ //si $_GET['var'] et var 2 existe je donne leurs valeur a $var et $var2 if (isset($_GET['var']) && isset($_GET['var2'])){ $var = $_GET['var']; $var2 = $_GET['var2']; } } }
Modifié en dernier par abricot le 12 janv. 2007, 15:19, modifié 1 fois.

ViPHP
ViPHP | 1961 Messages

12 janv. 2007, 15:04

Re,

Dans la première partie
if ($_GET['form'] == "erreur1"){
$var = isset($_POST['var']) ? $_POST['var'] : '';
$var2 = isset($_POST['var2']) ? $_POST['var2'] : '';

echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['PHP_SELF'].'?form=corriger&var='.$var.'&var2='.$var2.'">';
die();
} 
Ça ne te sert à rien de récupérer tes valeurs,
tu ne vas pas les utiliser vu que tu arêtes ton script.

Dans la seconde partie
if ($_GET['form'] == "corriger"){

//si $_GET['var'] ou var2 n'existe pas alors $var = $_POST['var'] ou var2
$var = isset($_GET['var']) ? $_GET['var'] : $_POST['var'];
$var2 = isset($_GET['var2']) ? $_GET['var2'] : $_POST['var2'];
}
Quand tu utilises l'opérateur ternaire, tu risques d'avoir des soucis.
Nulle part tu testes si $_POST['var'] est définie. Et idem pour $_POST['var2'].
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 65 Messages

12 janv. 2007, 15:20

Et dans le style c'est mieux?
// si $_GET['form'] existe
if (isset($_GET['form'])){

     // si $_POST['var'] n'existe pas $var = rien si non $var prend la valeur de $_POST['var'] donc $var existe quoi qu'il arrive
     if ($_GET['form'] == "erreur1"){
     $var = isset($_POST['var']) ? $_POST['var'] : '';
     $var2 = isset($_POST['var2']) ? $_POST['var2'] : '';

     //je recupere les donnés de mes deux variables pour les utiliser dans ma boucle corriger
     echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['PHP_SELF'].'?form=corriger&var='.$var.'&var2='.$var2.'">';
die();
     }

     if ($_GET['form'] == "corriger"){
          //si $_GET['var'] et var 2 existe je donne leurs valeur a $var et $var2
          if (isset($_GET['var']) && isset($_GET['var2'])){
          $var = $_GET['var'];
          $var2 = $_GET['var2'];
          }
     }
}
oups j'ai édité au lieu de répondre
Modifié en dernier par abricot le 12 janv. 2007, 15:24, modifié 1 fois.

Eléphant du PHP | 445 Messages

12 janv. 2007, 15:22

Bonjour,

Utilises plutôt la balise PHP que Code, on y voit bien plus clair ;)

Ca a l'air mieux, as-tu testé ?
LLDC
Ulti

Eléphant du PHP | 65 Messages

12 janv. 2007, 15:24

Je n'ai pas encore testé ultim, pour l'instant j'ai éssayé que lepremier, et il marche tres bien!
par contre j'ai l'impression qu'en rajoutant des if partout ca complique beaucoup le code, lol!

Eléphant du PHP | 445 Messages

12 janv. 2007, 15:29

Pour le rendre plus clair, indente le un peu mieux encore :
// si $_GET['form'] existe
if (isset($_GET['form'])){

     // si $_POST['var'] n'existe pas $var = rien si non $var prend la valeur de $_POST['var'] donc $var existe quoi qu'il arrive
     if ($_GET['form'] == "erreur1"){
          $var = isset($_POST['var']) ? $_POST['var'] : '';
          $var2 = isset($_POST['var2']) ? $_POST['var2'] : '';

          //je recupere les donnés de mes deux variables pour les utiliser dans ma boucle corriger
          echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['PHP_SELF'].'?form=corriger&var='.$var.'&var2='.$var2.'">';
          die(); 
      }

     if ($_GET['form'] == "corriger"){
          //si $_GET['var'] et var 2 existe je donne leurs valeur a $var et $var2
          if (isset($_GET['var']) && isset($_GET['var2'])){
               $var = $_GET['var'];
               $var2 = $_GET['var2'];
          }
     }
} 
Mais pourquoi mets-tu die() après ta balise meta ?
LLDC
Ulti

ViPHP
AB
ViPHP | 5818 Messages

12 janv. 2007, 15:34

Salut abricot,
Quand tu utilises l'opérateur ternaire, tu risques d'avoir des soucis.
Nulle part tu testes si $_POST['var'] est définie. Et idem pour $_POST['var2'].
Donc si tu souhaites que ta variable $var prenne la valeur de $_GET['var'] si $_GET['var'] existe ou la valeur $_POST['var'] si $_GET['var'] n'existe pas, tu peux faire quelque chose comme :
$var = isset($_POST['var'])? $_POST['var'] : '' ;
$var = isset($_GET['var'])? $_GET['var'] : $var ;
Edit : le temps que je poste, ton code a changé, mais bon l'exemple reste valable
Modifié en dernier par AB le 12 janv. 2007, 15:40, modifié 2 fois.

ViPHP
ViPHP | 1961 Messages

12 janv. 2007, 15:34

Re,

Dis-moi si ce que tu cherches à faire c'est,.
En cas d'erreur tu voudrais que le script se ré-exécute avec les valeurs $var et $var2 comme paramètres et 'corriger' comme action ?

C'est ça ?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 65 Messages

12 janv. 2007, 15:59

Mais pourquoi mets-tu die() après ta balise meta ?
Je met die apres la balise meta car tout le script est sur une seule page, aucun include, aucune redirection vers d'autres page php pour verifier les donnés.. Donc je met die comme ca il tue le script au lieux d'executer d'autres script par dessus celui ci

AB : Pas mal ton bout de code, je n'y avais pas pensé, c'est clair que vu come ca c'est beaucoup plus clair

Ajoloca : en fait en cas d'erreur $var et $var2 doivent être redirectionnés vers la boucle corriger sans passer par un formulaire, car c'est une redirection automatique

ViPHP
ViPHP | 1961 Messages

12 janv. 2007, 16:08

Re,

C'est bien ce que je pensait.
Dans ce cas, tu ne dois pas utiliser la balise HTML <meta> mais la fonction PHP header() avec Location.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 65 Messages

12 janv. 2007, 16:26

euh, je connais pas cette fonction, je vais voir sur php.net, mais si les 2 fonctionnent pourquoi devrais je choisir celle ci?

ViPHP
ViPHP | 1961 Messages

12 janv. 2007, 16:31

Re,

Les raisons sont multiples, mais si tu est en PHP, pourquoi basculer en HTML pour faire la même chose?

Pour la doc tu n'as qu'à "cliquer sur le nom de la fonction et tu seras automatiquement redirigé vers la page du manuel de cette fonction.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 65 Messages

12 janv. 2007, 16:50

Je capte rien à cette fonction, c'est super compliqué et super mal expliqué :shock:
et les exemples font que je vois vraiment pas l'interet de cette fonction