Variable Get qui passe pas d'une page à l'autre..
Résolu/Fermé
Marc
-
15 mai 2013 à 14:39
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 - 15 mai 2013 à 16:39
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 - 15 mai 2013 à 16:39
A voir également:
- Variable Get qui passe pas d'une page à l'autre..
- Supprimer une page word - Guide
- Traduire une page - Guide
- Voir mot de passe wifi android - Guide
- Trousseau mot de passe iphone - Guide
- Mot de passe administrateur - Guide
20 réponses
Sinon, si je met $_GET['num'] à la ligne 20, ça met que la variable nbpizza n'est pas défini à la ligne 23...
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
15 mai 2013 à 14:59
15 mai 2013 à 14:59
Salut !
Ca pique un peu les yeux ton echo avec tous tes liens ! Mais essaye de faire un echo pour chaque td, on y verra plus clair : déjà au niveau du code et de la structure html, mais surtout au niveau syntaxique (ptète un soucis de cote / doucle cote)
Essaye ensuite de mettre un print_r($_GET) dans ton fidelite.php
Ca pique un peu les yeux ton echo avec tous tes liens ! Mais essaye de faire un echo pour chaque td, on y verra plus clair : déjà au niveau du code et de la structure html, mais surtout au niveau syntaxique (ptète un soucis de cote / doucle cote)
Essaye ensuite de mettre un print_r($_GET) dans ton fidelite.php
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 15:08
15 mai 2013 à 15:08
Le print_r donne ça:
Array ( [num] => 1 [name] => Dupont [prenom] => Jeannot [adresse] => 35 grande rue [cp] => 39800 [city] => Poligny [mail] => dupontj@gmail.com [tel] => 0684712536 [nbpizz] => 5 )
Array ( [num] => 1 [name] => Dupont [prenom] => Jeannot [adresse] => 35 grande rue [cp] => 39800 [city] => Poligny [mail] => dupontj@gmail.com [tel] => 0684712536 [nbpizz] => 5 )
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 15:11
15 mai 2013 à 15:11
En fait, c'est la variable POST nbpizz qui passe pas...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
15 mai 2013 à 15:14
15 mai 2013 à 15:14
Bah voilà donc tes infos sont bien passé ;-)
Regarde le code source de ta page fidelite.php, au formulaire pour voir si la value est bien renseignée.
Ensuite c'est normal que tu n'as pas de submit dans ton formulaire ?
Regarde le code source de ta page fidelite.php, au formulaire pour voir si la value est bien renseignée.
Ensuite c'est normal que tu n'as pas de submit dans ton formulaire ?
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 15:17
15 mai 2013 à 15:17
Non, c'est pas normal, j'ai oublié de le copier ><'
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 15:20
15 mai 2013 à 15:20
Une fois que j'ai envoyé les données du Formulaire avec le submit, ça me remet que la variable GET n'est pas défini --'
Je comprends pas.. ^^'
Je comprends pas.. ^^'
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
15 mai 2013 à 15:28
15 mai 2013 à 15:28
Bah c'est normal :
Tu envois en get vers fidelite.php où tu affiche ce get. Jusque la tout va bien.
Tu envois ensuite le formulaire de fidelite.php vers fiidelite.php MAIS cette fois ci ta variable get n'est plu défini car tu as changé de page. Ton probleme est donc ici.
Il faut mettre ton code php de fidelite.php en haut dans un if(isset($_POST)), et ton formulaire après dans un if(isset($_GET))
Tu envois en get vers fidelite.php où tu affiche ce get. Jusque la tout va bien.
Tu envois ensuite le formulaire de fidelite.php vers fiidelite.php MAIS cette fois ci ta variable get n'est plu défini car tu as changé de page. Ton probleme est donc ici.
Il faut mettre ton code php de fidelite.php en haut dans un if(isset($_POST)), et ton formulaire après dans un if(isset($_GET))
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 15:35
15 mai 2013 à 15:35
J'ai essayé comme tu m'as dit mais la même erreur survient... :(
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 15:37
15 mai 2013 à 15:37
Enfin cette fois-ci, la variable GET du formulaire ne passe plus..
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
15 mai 2013 à 15:41
15 mai 2013 à 15:41
Pour que tu comprennes bien la chose, met un print_r($_GET) et un print_r($_POST) tout en haut dans fidelite.php et fais des tests :)
Tu verras par toi même la porté du post et du get.
Sinon remet ton code ici que je vérifie :)
Tu verras par toi même la porté du post et du get.
Sinon remet ton code ici que je vérifie :)
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 15:47
15 mai 2013 à 15:47
<!DOCTYPE HTML>
<html>
<head><title>Avantages fidélité</title></head>
<meta charset="UTF-8"/>
<body>
Dès que j'envoie les infos du formulaire, la variable get n'existe plus... le print_r donne Array()
<?php
print_r($_GET);
print_r($_POST);
if(isset($_POST['nbpizz']))
{
$connexion=mysql_connect("localhost", "root", "")
or die("Impossible de se connecter : " . mysql_error());
mysql_select_db("base");
$requete="SELECT nbpizzaachetes FROM client where num=".$_POST['num'];
$resultat=mysql_query($requete);
$rows=mysql_fetch_array($resultat);
$rows['nbpizzaachetes']=$rows['nbpizzaachetes']+$_POST['nbpizz'];
if($rows['nbpizzaachetes']>=30)
{
echo "<h2>Le client bénéficie de 3 pizzas gratuites!</h2>";
$rows['nbpizzaachetes']=$rows['nbpizzaachetes']-30;
if($rows['nbpizzaachetes']>=20)
{
echo "<h2>Le client bénéficie de 2 pizzas gratuites!</h2>";
$rows['nbpizzaachetes']=$rows['nbpizzaachetes']-20;
if($rows['nbpizzaachetes']>=10)
{
echo "<h2>Le client bénéficie d'1 pizza gratuite!</h2>";
$rows['nbpizzaachetes']=$rows['nbpizzaachetes']-10;
}
else
{
echo "<h2>Pas de pizza gratuite pour cette fois!</h2>";
}
}
}
$requete2="UPDATE fidelite SET nbpizzaachetes=".$rows['nbpizzaachetes'];
$resultat=mysql_query($requete2);
}
?>
<?php
if (isset($_GET))
{
?>
<form name="frm2" action="fidelite.php" method="POST">
Num: <input type="text" name="num" size="5" value="<?php echo $_GET["num"]; ?>" readonly /><br />
Combien de pizzas le client vient d'acheter? <input type="text" name="nbpizz" size="3"/>
<input type="submit" name="bt_ok" value="Ok!"/>
<?php
}
?>
</form>
</body>
</html>
<html>
<head><title>Avantages fidélité</title></head>
<meta charset="UTF-8"/>
<body>
Dès que j'envoie les infos du formulaire, la variable get n'existe plus... le print_r donne Array()
<?php
print_r($_GET);
print_r($_POST);
if(isset($_POST['nbpizz']))
{
$connexion=mysql_connect("localhost", "root", "")
or die("Impossible de se connecter : " . mysql_error());
mysql_select_db("base");
$requete="SELECT nbpizzaachetes FROM client where num=".$_POST['num'];
$resultat=mysql_query($requete);
$rows=mysql_fetch_array($resultat);
$rows['nbpizzaachetes']=$rows['nbpizzaachetes']+$_POST['nbpizz'];
if($rows['nbpizzaachetes']>=30)
{
echo "<h2>Le client bénéficie de 3 pizzas gratuites!</h2>";
$rows['nbpizzaachetes']=$rows['nbpizzaachetes']-30;
if($rows['nbpizzaachetes']>=20)
{
echo "<h2>Le client bénéficie de 2 pizzas gratuites!</h2>";
$rows['nbpizzaachetes']=$rows['nbpizzaachetes']-20;
if($rows['nbpizzaachetes']>=10)
{
echo "<h2>Le client bénéficie d'1 pizza gratuite!</h2>";
$rows['nbpizzaachetes']=$rows['nbpizzaachetes']-10;
}
else
{
echo "<h2>Pas de pizza gratuite pour cette fois!</h2>";
}
}
}
$requete2="UPDATE fidelite SET nbpizzaachetes=".$rows['nbpizzaachetes'];
$resultat=mysql_query($requete2);
}
?>
<?php
if (isset($_GET))
{
?>
<form name="frm2" action="fidelite.php" method="POST">
Num: <input type="text" name="num" size="5" value="<?php echo $_GET["num"]; ?>" readonly /><br />
Combien de pizzas le client vient d'acheter? <input type="text" name="nbpizz" size="3"/>
<input type="submit" name="bt_ok" value="Ok!"/>
<?php
}
?>
</form>
</body>
</html>
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
15 mai 2013 à 15:56
15 mai 2013 à 15:56
C'est normal, les variables get et post sont valables UNIQUEMENT sur la page cible.
Donc ta variable get ne serra dispo que sur fidelite.php lors de son appel par le lien.
Quand tu valides le formulaire, la page change (même si c'est toujours fidelite.php, c'est un autre appel donc plus la même page) donc get n'existe plu. Mais comme tu as validé ton formulaire, mtn tu as ton post qui existe.
Attention : Tu fermes ton if avant le form
Donc ta variable get ne serra dispo que sur fidelite.php lors de son appel par le lien.
Quand tu valides le formulaire, la page change (même si c'est toujours fidelite.php, c'est un autre appel donc plus la même page) donc get n'existe plu. Mais comme tu as validé ton formulaire, mtn tu as ton post qui existe.
Attention : Tu fermes ton if avant le form
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 16:06
15 mai 2013 à 16:06
Ah d'accord ^^
Par contre ma requête n'a pas l'air de s'effectuée..
Et j'suis pas trop sûr de mes calculs, sont-ils possibles? ^^'
Par contre ma requête n'a pas l'air de s'effectuée..
Et j'suis pas trop sûr de mes calculs, sont-ils possibles? ^^'
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
15 mai 2013 à 16:14
15 mai 2013 à 16:14
Tu peux faire un $resultat=mysql_query($requete) or die("Probleme lors de l'execution dela requete");
pour vérifier ca :)
pour vérifier ca :)
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 16:25
15 mai 2013 à 16:25
D'acc, eh ben merci de ton aide, maintenant je vais essayer de faire marcher tout ça :)
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
15 mai 2013 à 16:30
15 mai 2013 à 16:30
Pense au die('Message') et au print_r($variable) pour debuger ;-)
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 16:32
15 mai 2013 à 16:32
Oui c'est c'que je vais faire ^^
Dis moi, tu sais comment convertir en PHP en int, ou en string comme parseInt() en Javascript par exemple?? :)
Dis moi, tu sais comment convertir en PHP en int, ou en string comme parseInt() en Javascript par exemple?? :)
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
15 mai 2013 à 16:36
15 mai 2013 à 16:36
Tu caste en dur : (int) (string)
Genre
$a = 1;
$b = "2";
$c = (string)$a;
$d = (int)$b;
Genre
$a = 1;
$b = "2";
$c = (string)$a;
$d = (int)$b;
Pepito39
Messages postés
91
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
21 mars 2014
1
15 mai 2013 à 16:39
15 mai 2013 à 16:39
D'acc merci :D