IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Re-submit impossible !


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
    }
    ?>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    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.

  4. #4
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    @Celira :


    Je savais bien que c'était une bêtise !
    Maintenant le code est
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo number_format($capital_ini, 0, '.', ''); ?>

    C'est parfait !

    @cadoudal56
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/07/2013, 12h45
  2. [Zend_Form] bouton submit, setValue impossible
    Par Invité dans le forum Zend_Form
    Réponses: 2
    Dernier message: 06/03/2008, 02h09
  3. [ArchiveBuilder][JavaMail] exécution impossible...
    Par Gorthal dans le forum JBuilder
    Réponses: 7
    Dernier message: 10/01/2003, 09h12
  4. Réponses: 8
    Dernier message: 20/11/2002, 11h50
  5. Réponses: 3
    Dernier message: 01/11/2002, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo