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
Salut,

J'ai un problème au niveau d'une variable GET qui veut pas passer d'une page à l'autre.
Je souhait faire passer la variable num de ma page client afin de pouvoir calculer le bonus fidelité du client, mais ça me met l'erreur que la variable n'est pas défini..
Pourriez vous m'aider? :)
Et si vous avez des conseils, j'veux bien les prendre parce que mes pages sont un peu laborieuses ^^'

Voici le script:
Page client.php:

<!DOCTYPE HTML>
<html>
<head><title>Affichage des clients</title>
<meta charset="UTF-8"/>
</head>
<style>
th {text-align:left;}

h1 {margin-left:32%;}

table {margin:auto; width:85%;}

h3{text-align:center;}


</style>

<body>
<?php
$connexion=mysql_connect("localhost","root","")
or die("Impossible de se connecter : " . mysql_error());
mysql_select_db('base');

if($connexion)
?>
<h1>Informations clients</h1>


<br />

<table>
<tr>
<th style="width:10%">Numéro</th>
<th style="width:10%">Nom</th>
<th style="width:10%">Prenom</th>
<th style="width:20%">Adresse</th>
<th style="width:10%">Code Postale</th>
<th style="width:10%">Ville</th>
<th style="width:20%">Adresse mail</th>
<th style="width:10%">Téléphone</th>
<th style="width:10%">Nombres de pizzas déjà achetées</th>



<?php
$requete="SELECT * FROM client";
$resultat=mysql_query($requete);
while($rows=mysql_fetch_array($resultat))
{
echo"<tr><td>".$rows['num']."</td><td>".$rows['nom']."</td><td>".$rows['prenom']."</td><td>".$rows['adresse']."</td><td>".$rows['cp']."</td><td>".$rows['ville']."</td><td>".$rows['mail']."</td><td>".$rows['tel']."</td><td>".$rows['nbpizzaachetes']."</td><td><a href='modifClient.php?num=".$rows['num']."&name=".$rows['nom']."&prenom=".$rows['prenom']."&adresse=".$rows['adresse']."&cp=".$rows['cp']."&city=".$rows['ville']."&mail=".$rows['mail']."&tel=".$rows['tel']."&nbpizz=".$rows['nbpizzaachetes']."'>Modifier</a></td><td><a href='supprClient.php?num=".$rows['num']."&name=".$rows['nom']."&prenom=".$rows['prenom']."&adresse=".$rows['adresse']."&cp=".$rows['cp']."&city=".$rows['ville']."&mail=".$rows['mail']."&tel=".$rows['tel']."&nbpizz=".$rows['nbpizzaachetes']."'>Supprimer</a></td><td><a href='fidelite.php?num=".$rows['num']."&name=".$rows['nom']."&prenom=".$rows['prenom']."&adresse=".$rows['adresse']."&cp=".$rows['cp']."&city=".$rows['ville']."&mail=".$rows['mail']."&tel=".$rows['tel']."&nbpizz=".$rows['nbpizzaachetes']."'>Fidelité</a></td></tr>";

}

?>
</th>
</tr>
</table>
<?php
echo "<h3><a href='ajoutClient.php?num=".$rows['num']."&name=".$rows['nom']."&prenom=".$rows['prenom']."&adresse=".$rows['adresse']."&cp=".$rows['cp']."&city=".$rows['ville']."&mail=".$rows['mailadher']."&tel=".$rows['teladher']."&nbpizz=".$rows['nbpizzaachetes']."'>Ajouter un client</a></h3>";
?>
<?php
mysql_close($connexion);
?>
</body>
</html>

et voici la page fidelite.php:

<!DOCTYPE HTML>
<html>
<head><title>Avantages fidélité</title></head>
<meta charset="UTF-8"/>
<body>
<?php

?>
<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="nbpizza" size="3"/>
</form>

<?php

$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['nbpizza'];

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);

//mysql_close($connexion);



?>

</body>
</html>
A voir également:

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...
0
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
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
0
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
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 )
0
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
En fait, c'est la variable POST nbpizz qui passe pas...
0

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
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 ?
0
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
Non, c'est pas normal, j'ai oublié de le copier ><'
0
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
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.. ^^'
0
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
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))

0
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
J'ai essayé comme tu m'as dit mais la même erreur survient... :(
0
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
Enfin cette fois-ci, la variable GET du formulaire ne passe plus..
0
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
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 :)
0
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
<!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>
0
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
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

0
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
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? ^^'
0
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
Tu peux faire un $resultat=mysql_query($requete) or die("Probleme lors de l'execution dela requete");
pour vérifier ca :)

0
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
D'acc, eh ben merci de ton aide, maintenant je vais essayer de faire marcher tout ça :)
0
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
Pense au die('Message') et au print_r($variable) pour debuger ;-)
0
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
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?? :)
0
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
Tu caste en dur : (int) (string)
Genre
$a = 1;
$b = "2";

$c = (string)$a;
$d = (int)$b;
0
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
D'acc merci :D
0