Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/08/2007, 09h21   #1
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
Par défaut Re-submit impossible !

Salut !
Je butte un peu sur une bêtise là ...

J'ai un formulaire tout bête qui permet de calculer les intérêts de l'épargne pour un capital, un apport mensuel (optionnel), un taux et une durée donnés et choisis par le visiteur.

Lorsque je soumets le form, pas de souci, tout se passe bien et les valeurs sont correctement reprises dans le formulaire.

Cependant, si je change une valeur et que je soumets une seconde fois le form, toutes les valeurs disparaissent et ne sont pas reprises pour le calcul...

Avez-vous une idée ? une suggestion ? une insulte ?

Voici mon code :
Le formulaire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
<form name="interets" action="<?php echo htmlentities($_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']); ?>" method="post">
<fieldset style="width:400px; border:1px solid black;">
<legend>Calculez le montant de votre épargne</legend>
	<p>
		<label for="capital" style="width:200px">Capital initial(&euro;)</label>
		<input type="text" name="capital" id="capital" style="width:100px;" value="<?php echo number_format($capital_ini, 0, '.', ' '); ?>" />
	</p>
	<p>
		<label for="apport" style="width:200px">Apport mensuel (&euro;, facultatif)</label>
		<input type="text" name="apport" id="apport" style="width:100px;" value="<?php echo number_format($apport, 0, '.', ' '); ?>" />
	</p>
	<p>
		<label for="taux" style="width:200px">Taux brut (%)</label>
		<input type="text" name="taux" id="taux" style="width:100px;" value="<?php echo number_format($taux_ini, 2, '.', ' '); ?>" />
	</p>
	<p>
		<label for="duree" style="width:200px">Durée du placement (années)</label>
		<select name="duree" id="duree" size="1">
			<?php 
			if(isset($duree_ini)){
				echo '<option value="'.$duree_ini.'" selected="selected">'.$duree_ini.'</option>';
			}
			$durees = array('', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
			foreach ($durees as $v){
				if($v != $duree_ini){ ?>
					<option value="<?php echo $v; ?>"><?php echo $v; ?></option>
			<?php
				}
			}
			?>
		</select>
	</p>
	<p style="text-align:center;">
		<button type="submit">Calculer</button>
	</p>
</fieldset>
</form>
et le traitement
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
 
if(isset($_POST['capital']) && is_numeric($_POST['capital'])){
	$capital = $_POST['capital'];
	$capital_ini = intval($capital);
	if(is_numeric($_POST['apport'])){
		$apport = intval($_POST['apport']);
	}
	elseif($_POST['apport'] == ''){
		$apport = 0;
	}
	else{
		$apport = 0;
	}
	if(is_numeric($_POST['taux'])){
		$taux_ini = floatval($_POST['taux']);
	}
	else{
		$err[] = 'Taux';
	}
	if(is_numeric($_POST['duree'])){
		$duree_ini = intval($_POST['duree']);
		$duree = intval($duree_ini) * 12;
	}
	else{
		$err[] = 'Durée';
	}
	if(count($err)>0){
		$erreur = 'Veuillez renseigner le(s) champs suivant(s) :<br />';
		foreach($err as $v){
			$erreur .= ' - '.$v;
		}
	}
	else{
		$taux = ($taux_ini / 100) / $duree;
		for($i = 1; $i <= $duree; $i++){
			$capital += ($capital + $apport) * $taux + $apport;
		}
		$confirmation = 1;
	}
	unset($_POST);
}
?>
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 09h34   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bonjour

2 questions pour bien cerner le problème:
le formulaire se vide si tu as réussi ton calcul et que tu peux en faire un 2e ou si il y a avait un champ vide et que tu dois le compléter ?
Le traitement se fait dans la même page php. Le formulaire est bien situé après le traitement dans le script ? (question débile au cas où...)
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 09h37   #3
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
En fait, le formulaire est bien rempli après sa validation. Il se vide lors du second envoi.

Le formulaire est bien placé en dessous du traitement.

Le seul détail omis est qu'il fait partie d'une classe et que l'objet est instancié à chaque chargement.

Mais si ça fonctionne avec le premier submit, ça ne doit pas poser de problème avec le second.
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 09h44   #4
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

Je dois avouer que je ne programme pas trop de cette facon en PHP....
Mais bon, il y a un truc qui me semble étrange :

Code :
1
2
 
<form name="interets" action="<?php echo htmlentities($_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']); ?>" method="post">
Ne serait ce pas ton $_SERVER['QUERY_STRING'] qui mettrais le foutoir la dedans ?
Au premier chargement, en théorie il doit etre vide, mais au second il doit avoir des trucs non ? Regarde la source de ta page a ce niveau au premier chargement et au second. A mon avis c'est peut etre une piste

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 09h45   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Donc lors du second envoi, ça vide le formulaire et je suppose que ça ne fait pas le calcul non plus.

ça a peut-être un rapport avec le fait que tu formates tes nombres lorsque tu re-remplis le formulaire la 1ere fois. Est-ce qu'une chaine de cette forme 1 234.56 avec un espace comme séparateur des milliers est bien reconnue comme étant un nombre ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 09h59   #6
Membre expérimenté
 
Avatar de mathieugamin
 
Inscription : octobre 2006
Messages : 572
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2006
Messages : 572
Points : 562
Points : 562
@Celira :


Je savais bien que c'était une bêtise !
Maintenant le code est
Code php :
<?php echo number_format($capital_ini, 0, '.', ''); ?>

C'est parfait !

@cadoudal56
Citation:
Ne serait ce pas ton $_SERVER['QUERY_STRING'] qui mettrais le foutoir la dedans ?
Non car ce query string n'a qu'un argument unique qui permet d'identifier de quelle page il s'agit, en l'occurence la page du formulaire. Mais ça, tu ne pouvais pas le savoir


Merci de votre aide !

Bonne journée
__________________
GAMIN !!!!
_______________________________________________
PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX
mathieugamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h12.


 
 
 
 
Partenaires

Hébergement Web