Disparition valeurs après submit même page

Fermé
Yorgat Messages postés 125 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 5 décembre 2012 - 4 nov. 2005 à 18:01
Yorgat Messages postés 125 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 5 décembre 2012 - 7 nov. 2005 à 11:55
Salut toutes et tous,

J'ai un petit souci avec un formulaire qui doit faire un affichage de valeurs calculées et d'un envoi vers une base MySQL, dans une même page.

J'ai un formulaire qui utilise la méthode POST pour envoyer ses valeurs,
<form name="calculator" method="post" />
et j'ai donc un <input type="submit" ... />.

Seulement, pour être plus complet, j'ai la propriété onsubmit.
<fom name="calculator" method="post" onsubmit="moulinette()">

Ma moulinette() prend des valeurs du formulaires, les traite et en affiche des nouvelles dans d'autres champs de la page. C'est un traitement pré-submit, si je puis dire.

Ensuite l'envoi des valeurs (dont les nouvelles) et la connectivité MySQL se fait via un script PHP et $_POST.

Mon problème:
Après le traitement et l'affichage, puis l'envoi vers la base de données, les valeurs disparaissent de mes champs. Ce qui fait que mon traitement et affichage n'avancent à rien.

Je ne change pas de page et je reste dans la même. Le formulaire fait un post sur la même page qui contient un "include .php".

Si vous avez une piste ... ça me ferait grand bien !

A voir également:

5 réponses

Faudrait que tu mette ton code pour pouvoir mieux te répondre... je crois savoir ce qui ne vas peut etre pas mais sans le code pour vérifier...c'et un peu plus dur ^^
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
5 nov. 2005 à 09:01
Met voir ton code stp ;)
0
Yorgat Messages postés 125 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 5 décembre 2012 7
7 nov. 2005 à 10:17
Merci de m'aider.
OK .. voici le code du fichier.php


<html>
<head>

<!-- Liaison vers le Javascript qui traite les données du formulaire -->
<script type="text/javascript" src="./CIR.js"></script>

</head>

<body>


<form method="post" name="CIR_calculator" onsubmit="calculerCIR(document.CIR_calculator.RD_an_encours.value,document.CIR_calculator.RD_an_moins1.value,document.CIR_calculator.RD_an_moins2.value,document.CIR_calculator.ReportNeg.value,document.CIR_calculator.CumulAnt.value)">

<div align="center">
<table width="50%">
<tr><td colspan="4" align="center"></td></tr>
<tr>
	<td><input type="text" maxlength="10" size="10" name="RD_an_moins2" value="0"/></td>
	<td><input type="text" maxlength="10" size="10" name="RD_an_moins1" value="0"/></td>
	<td><input type="text" maxlength="10" size="10" name="RD_an_encours" value="0"/></td>
</tr>
<tr>
	<td><input type="text" maxlength="10" size="10" name="ReportNeg" value="0"/></td>
</tr>
<tr>
	<td><input type="text" maxlength="10" size="10" name="CumulAnt" value="0"/></td>
</tr>
<tr><td><input type="submit" name="calculeCIR" value="Lancer l'estimation"/></td>
</tr>
<tr>
<td><input type="text" maxlength="10" size="10" name="Part_volume"/></td>
</tr>
<tr>
<td><input type="text" maxlength="10" size="10" name="Part_accr"/></td>
</tr>
<tr>
<td><input type="text" maxlength="10" size="10" name="Total_CIR"/></td>
</tr>
</table></div>
</form>

<!-- Liaison vers le fichier d'envoi des variables vers une base MySQL -->
<?php include("./CIR_db.php")?>

</body>
</html>

_______________________
le code de CIR_db.php (Lié dans la page PHP ci dessus)


<?
$nom = $_POST['nom'];
$fonction = $_POST['fonction'];
$societe = $_POST['societe'];
$email = $_POST['email'];
$rd_an_moins2 = $_POST['RD_an_moins2'];
$rd_an_moins1 = $_POST['RD_an_moins1'];
$rd_an_encours = $_POST['RD_an_encours'];
$credit_neg = $_POST['ReportNeg'];
$cumul_pos = $_POST['CumulAnt'];
$part_vol = $_POST['Part_volume'];
$part_accr = $_POST['Part_accr'];
$total_cir = $_POST['Total_CIR'];

$nom=str_replace("'", "\'", "$nom");
$fonction=str_replace("'", "\'", "$fonction");
$societe=str_replace("'", "\'", "$societe");
$email=str_replace("'", "\'", "$email");

$nom=str_replace('"', '\"', "$nom");
$fonction=str_replace('"', '\"', "$fonction");
$societe=str_replace('"', '\"', "$societe");
$email=str_replace('"', '\"', "$email");

$connexion = mysql_connect("localhost","mon_login","******");
mysql_select_db("datab",$connexion);

$requete = "insert into estimation_cir values('',NOW(), '$nom','$fonction','$societe','$email','$rd_an_moins1','$rd_an_moins2','$rd_an_encours','$credit_neg','$cumul_pos','$part_vol','$part_accr','$total_cir')";
mysql_query($requete) or print mysql_error();

mysql_close();  ?>

___________________
Et le code du CIR.js (Lié dans la page PHP ci dessus)

// Détection du navigateur ... je ne sais pas trop ce que je vais en faire encore //
var whoami=navigator.userAgent.toLowerCase();  //use lower case name 
var my_version = parseInt(navigator.appVersion); //get version 
var is_ie = (whoami.indexOf("msie") != -1); //does name contain 'msie'? 
var is_ie3 = (is_ie && (my_version < 4)); //is it version 3? 
        if ( is_ie3 ) 
            { };

// Fonction qui traite les données numériques du formulaire et en affiche les résultats. Pas de retour particulier. Renvoie donc "true" à 'onsubmit' du formulaire

function calculerCIR(a,b,c,d,e){

// CONSTANTES
var INDICE_REVAL1 = 1.03;
var INDICE_REVAL2 = 1.03;
var POURCENT_PART_VOLUME = 0.2;
var POURCENT_PART_ACCR = 0.5;
var PLAFOND = 6000;


//VARIABLES
var rd_an_en_cours=a;
var rd_an_moins1=b;
var rd_an_moins2=c;
var cir_negatif=d;
var cumul_ant=e;
var total_cir=0;
var part_accr=0;
var cir_accroissement=0;
var part_volume=0;

// Traitement des variables avant calcul
rd_an_en_cours = Replace(rd_an_en_cours,",",".");
rd_an_moins1 = Replace(rd_an_moins1,",",".");
rd_an_moins2 = Replace(rd_an_moins2,",",".");
cir_negatif = Replace(cir_negatif,",",".");
cir_negatif = parseFloat(MakeNegative(cir_negatif));
parseFloat(rd_an_en_cours);
parseFloat(rd_an_moins1);
parseFloat(rd_an_moins2);
parseFloat(cir_negatif);


part_volume = parseFloat(rd_an_en_cours*POURCENT_PART_VOLUME);

// Ce calcul peut être simplifié, mais je l'ai découpé pour bien le suivre.
var rd_1_reval = parseFloat(rd_an_moins1*INDICE_REVAL1);

var rd_2_reval = parseFloat(rd_an_moins2*INDICE_REVAL2);

var sum = parseFloat(rd_1_reval+rd_2_reval);

var div2 = parseFloat(sum/2);

var diff = parseFloat(rd_an_en_cours - div2);

cir_accroissement = parseFloat(POURCENT_PART_ACCR*diff);


part_accr = parseFloat(cir_accroissement+(parseFloat(cir_negatif)));
alert("Part accroissement après report : " +part_accr);


if (part_accr < 0){
	if (part_volume > PLAFOND){
		var temp = (part_volume - PLAFOND)/PLAFOND;
		part_volume = PLAFOND;
		total_cir = part_volume;
		alert(part_accr+ "avant");
		part_accr = part_accr-part_accr*temp;
		alert(part_accr+ "après");
		}
	else{total_cir = part_volume;}
	if (Math.abs(part_accr) > cumul_ant){
		part_accr = parseFloat(MakeNegative(cumul_ant));
		}
	}
else {
	total_cir = part_accr + part_volume;
	if(total_cir > PLAFOND){
		var temp1 = parseFloat(part_accr/total_cir);
		var temp2 = parseFloat(part_volume/total_cir);
		part_accr = temp1*PLAFOND;
		part_volume = temp2*PLAFOND;
		total_cir = part_accr + part_volume;
		}
	}


// Affichage des nouveaux éléments:

document.CIR_calculator.Part_volume.value = part_volume;
document.CIR_calculator.Part_accr.value = part_accr;
document.CIR_calculator.Total_CIR.value = total_cir;

}// function calculerCIR(a,b,c,d,e)

// Fonction générique pour remplacer dans 'target', la chaine ou le caractère 'todo' par la chaine ou le caractère 'withwhat'

function Replace ( target, todo, withwhat) 
  { var fixme = target;                
    var atpos = fixme.indexOf(todo);   
    while ( atpos > -1)                
      { fixme = fixme.substring(0,atpos)  
                + withwhat 
                + fixme.substring(todo.length + atpos); 
        atpos = fixme.indexOf(todo);  
      };                                
    return fixme; 
  }// function Replace


// Fonction générique qui vérifie la négativité ou rend négatif n'importe quel nombre 'target'

function MakeNegative(target){
var temp=target;
var ret;
if (temp.indexOf("-") == -1){
	ret = "-"+temp;
	}
else{ret = temp;}
return ret;

}// function MakeNegative(target)

0
Utilisateur anonyme
7 nov. 2005 à 11:13
Ne te casse pas la tête.

Dans ta balise form, supprime le code suivant:
onsubmit="calculerCIR(document.CIR_calculator.RD_an_encours.value,document.CIR_calculator.RD_an_moins1.value,document.CIR_calculator.RD_an_moins2.value,document.CIR_calculator.ReportNeg.value,document.CIR_calculator.CumulAnt.value)"


Remplace ton bouton:
<input type="submit" name="calculeCIR" value="Lancer l'estimation"/>


par un bouton 'simple':
<input type="button" name="calculeCIR" value="Lancer l'estimation" onclick="calculerCIR(document.CIR_calculator.RD_an_encours.value,document.CIR_calculator.RD_an_moins1.value,document.CIR_calculator.RD_an_moins2.value,document.CIR_calculator.ReportNeg.value,document.CIR_calculator.CumulAnt.value)"/>


Au début de ta fonction calculerCIR(), insère le code suivant:
   moulinette();


Ajoute à la fin de ta fonction calculerCIR(), le code suivant:
  document.getElementsByName("CIR_calculator")[0].submit();


Et ça devrait fonctionner...
Si cela ne fonctionne pas, ajoute dans ta balise form le code en gras ci-dessous:

<form method="post" name="CIR_calculator" id="CIR_calculator">

;-)
HackTrack
0
Yorgat Messages postés 125 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 5 décembre 2012 7
7 nov. 2005 à 11:19
Merci pour ta réponse, je vais voir ça. j'avais commencé avec un boutton normal comme tu le suggères, à l'origine, mais j'ai lu sur un site que c'était plus réglo et sur d'utiliser submit.

C'est quoi "moulinette();" ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yorgat Messages postés 125 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 5 décembre 2012 7
7 nov. 2005 à 11:50
Hmm .. au final, les valeurs sont toujours envoyées, mais elles finissent toujours par disparaitrent du formulaire.

Est ce que je devrais les garder en mémoire et les réafficher dans les champs après le submit ? Je vais essayer.
0
Yorgat Messages postés 125 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 5 décembre 2012 7
7 nov. 2005 à 11:55
Ca marche pas ... gné
0