[PHP]Recuperer variable

Alors, problème de logique et php en même temps je crois. J’explique

  • J’ai une page inscription.php avec un formulaire ( nom prenom … ) qui envoie tout ca a merci.php. merci.php enregistre ces infos dans la base de donnée ( tout marche niquel)

  • dans inscription.php j’ai un <include (‘prix.php’).>qui affiche un formulaire et qui calcul le prix d’un billet.Obtenu par formulaire egalement.dans prix.php , je récupère la variable $prix qui est égale au prix . . .( normal )

  • je voudrais que cette variable $prix soit “transmise” a inscription.php , qui ensuite enverai $prix à merci.php et que je pourrais récupérer comme toutes les autres grâce a $_POST[‘prix’].

  • dans inscription.php , après mon include, j’ai mis, $prix=$_POST[‘prix’]
    Voila le probleme ! Comment faire ca, je n’y arrive pas !! Merci

Euhh c’est un peu confus, mais voici deux solutions générales, qui pourraient résoudre ce que j’ai cru comprendre:
soi tu fais un input hidden contenant la valeur du prix, soit tu fais passer la variable dans l’URL en GET (ça reste le plus simple).

Et donc comment faire ca ?

dans quel page effectuer cetee methode de GET ( inscription.php ? prix.php ? )

Le probleme c’est que normalement dans mon formulaire d’inscription principale, j’ai un “envoyer” ( normal ) et en + avec le pti module prix.php j’ai un autre submit, mais lorsque je clique sur le “envoyer” de prix.php , ca valide tout mon formulaire . . je voudrais pouvoir , d’abord, valider mon formulaire de calcul de prix et donc récupérer $prix, puis ensuite valider la totalité du formulaire.

Alors, en javascript. Tu crées une fonction qui s’éxécutera lors du click sur le premier bouton (celui du prix) et qui transmet sa valeur au second, puis lors de la validation du second, PHP récupère le tout en POST et traite tout ça.

edit: tu pourrais poster un bout de HTML STP ? histoire de mieux visualiser ce que tu veux faire…

Je sais pas du tout coder en java, only php et html, et encore jss pas un maître.Le prob c’est que dans mon code , y’a plein de truc que les gens ne doivent pas voir ^^ donc je peux pas vraiment poster le code, je peux montrer ca

inscription1.php :

<body>
<div id="Layer2">
  <?php include ('prix_inscription.php');
  $prix=$_POST['prix'];?>
</div>
<div id="Layer3">
  <form action="merci.php" method="post">
    <div id="Layer1">
    <p align="left"> <span class="Style4"><span class="Style6">*</span> Nom :</span>
        <input type="text" name="nom" />
        <span class="Style4"><span class="Style6">*</span> Pr&eacute;nom :</span>
        <input type="text" name="prenom" /> . . . ETC.

merci.php > page ou j’enregistre les infos du formulaire dans la base de donnée.

Ensuite , prix_inscription.php :

[CODE]
$ecole=$_POST['ecole'];
$prevente=$_POST['prevente'];
$car=$_POST['car'];

 
function afficher_prix($ecole, $car , $prevente) 
{

	$prix_total='';
	if($ecole=='oui' AND $car=='oui' AND $prevente=='non') $prix_total='Choix Impossible';
	elseif($ecole=='non' AND $car=='oui' AND $prevente=='non') $prix_total='Choix Impossible';
. . . etc la liste des prix . . .
return $prix_total;
}
if ($ecole!="" AND $prevente!="" AND $car!="")
{
$prix=afficher_prix($ecole, $car, $prevente);
   ?><p class="Style20"><?php echo $prix;?></p><?php
}
la suite c'est le formulaire . . .
?>
<form method="POST" action="inscription1.php">
<p>

LA suite c’est juste le formulaire avec un bouton submit a la fin.

JE voudrais donc récupérer $prix qui est :

$prix=afficher_prix($ecole, $car, $prevente);

Okkk

Alors le problème c’est que le Submit va tout valider :smiley: (Attention: JavaScript != Java)

Ton code est assez confus, alors soit tu le fais en JavaScript sur une même page, soit tu sépares tes deux formulaires sur deux pages/avec un paramètre GET et tu transmets leur valeur en GET.

En effet je ne comprends pas ce que tu fais dans inscription1.php ? Tu inclus prix_inscritpion.php,
or ça fait une boucle ensuite non ?

PS: de toutes façons, le code HTML, tout le monde pourra le voir :smiley:

Alors de ce que j’ai compris; au final, le résultat sera:

  • Tu as une seule page avec un formulaire dans lequel tu demandes le prix
    -Un second formulaire sur cette même page est sensé valider l’inscription
    -Tu veux afficher unr écapitulatif de toutes les infos entrées précédemment sur merci.php

C’est ça ?

J’ai pas du être assez clair je pense.

J’ai inscription1.php > qui est un formulaire nom prenom . . . etc. Dedans j’ai inclu prix.php ,donc au final , en apparence il y a q’uun seul formulaire. Sauf que prix.php sert a calculer le prix du billet, le visiteur choisis les options, il valide, le prix du billet s’affiche, il n’a ensuite plus qu’a continuer le formulaire ( nom prenol adresse . . etc.)

ensuite le bouton valider de la page inscription.php envoie tout a merci.php( enregistrement base de donnée etc . . )

le probleme c’est qu’il faudrait que je reussisse a récupérer ce que prix.php affiche, pour l’envoyer a merci.php, ce que je n’arrive pas a faire !

Ok alors pour le calcul du prix, il faut soit le séparer sur une autre page pour utiliser PHP, soit le faire en Javascript (avec ou sans AJAX).

Sinon, lors de la validation du calcul du prix, la page sera rechargée et les autres champs seront vidés.
Après pour le transmettre à merci.php, si tu utilises Javascript, tu n’as plus besoin que d’un seul formulaire, donc ça sera en $_POST[‘prix’] comme le reste.

Si tu choisis l’autre solution, il suffira alors de faire un formulaire en GET qui transmettra la variable prix dans l’URL et que tu pourras récupérer avec $_GET[‘prix’]

Au final, ça donenra donc merci.php?prix=le_prix dans l’URL.

Ouai mais comme tu as vu , dans prix.php il y a ue fonction qui renvoi sur la même page, donc je vais essayer de tout mettre dans inscription1.php , voir ce que ca donne ! comme ca on valide une fois pour valider le formulaire du prix, et le 2 ieme bouton envoie tout à merci.php

Oui mais ton visiteur il va cliquer où il veut :neutre:
Rien ne l’oblige à cliquer d’abord sur le bouton pour valider le prix, avant l’autre…
Et puis même si prix.php renvoit sur la même page, elle sera quand même réactualisée et les données entrées dans les chmps seront perdues.

Alors qu’en JavaScript, ça calculera et remplira directement le prix, sans actualisation, et tout sera disponible en un seul formulaire.

Il suffit de leur expliquer et sinon dans le fichier ou on enregistre ,
if(variable==NULL) > retour a la page de formulaire ^^

ca marche ca ?

<input type="hidden" name="prix" value="<?php $prix?>">

edit : j’ai tt mis dans la même page : inscription.php , grâce à la fonction qui calcule le prix, j’ récupere $prix, qui est égale par exemple a 25€, comment je fais pour que au moment de ma validation, cette variable passe en $_POST, en même temps que le formulaire, j’ai essayé avec le truc que j’ai mis au dessus, mais ca passe pas, qqun peut m’aider pour le champ hidden ? ?
PS: je peux pas passer en $_GET, trop de champ rempli > trop de variable à changer etc . .

Il n’existe que peu de moyens pour transmettre des paramètres: soit en POST, par l’intermédiaire d’un champ (visible ou non), soit en GET par l’URL. Je ne voit pas ce que tu peux faire d’autre ?

Pour le passer en GET, dans l’action de ton second formulaire, tu ajoutes prix=$prix

ça donnera <form method=‘post’ action=‘merci.php?prix=’<?php $prix ?>’>

Et ensuite dans merci.php tu récupères ton pric par $prix=$_GET[‘prix’].

t’es sur que c’est :

<form method=‘post’ action=‘merci.php?prix=’<?php $prix ?>’>

Vu qye tu dis de le récupérer en get ? ca serait pas plutôt method=‘get’ ?

Et on peut pas melanger du $_GET si le formulaire est en $_POST, si je fais
action=merci.php?prix=. . . ben tous les autres vont pas passer, je suis obliger de passer par un autre <form> …?

Si, mais là c’est dans le second formulaire, celui qui valide (pour passer le prix à la dernière page qui l’envoit dans la BDD)

Sinon pour le formulaire du prix bah tu peux faire soit en get soit en post c’est pareil

edit: car un formulaire en GET passe automatiquement ses champs en paramètres, inutile de les ajouter toi-même dans action=

Donc en gros, je met le 2ieme formulaire en get , celui qui valide, avec method=‘get’ et dans ma page merci.php ou j’enregistre tout dans la base de donné, je remplace mes $_POST, par des $_GET ? isnt’it ?

edit: j’ai fais ca ( au dessus ) et dans ma ligne d’adresse en haut,tout marche bien, tout est bien enregistrer en GET dans la base, SAUF que j’ai ca pour prix :

&prix=&submit=Envoyer

donc il y a un probleme !!lol c’est pas loin surement mais c’est tjs pas ca !lol

Non, plutôt l’inverse :smiley:
Le formulaire contenant le prix en get. Il va recharger la même page ce qui donnera donc inscritpion.php?prix=le_prix (si tu utilises la méthode GET).
Et en PHP tu fais $prix = $_GET[‘prix’]
Et dans l’acion du formulaitre qui envoit tout (qui est en POST), tu ajoutes le prix dans l’URL dans l’action (comme je l’ai fait plus haut).

merde lol ok , ( heuresement que j’ai tester ca dans une copie) je vais donc faire ce que tu viens de dire xD

Juste $prix = $_GET[‘prix’]; , je le met dans la partie fonction en php du prix ou alors je met ‘caché’ dans la partie formulaire normal
<?php $prix = $_GET[‘prix’]; ?> ??

Losrque je valide le formulaire du prix , l’adresse est :

…fr/inscription.php?esiea=oui&car=oui&prevente=oui mais pas de trace de prix= . . . :neutre:
donc quand je valide le formulaire, il ya des arguments qui passe, mais pas le prix. . . j’arrive pas a pigeeeer !

Merci bien, j’ai finalement réussi !!! On m’a corrigé les erreur, mais maintenant ca marche!

Merci RRMX de t’être acharné sur mon cas ! j’étais vraiment pas loin à la fin! :clap: