Page 1 sur 1

Multiplier un montant par 100 dans un formulaire

Posté : 28 nov. 2013, 00:21
par MaxMax
Bonjour,

Je galère depuis plusieurs heures sur un formulaire de paiement en ligne. D'habitude, j'arrive toujours à me dépatouiller en cherchant sur le net mais là... je ne m'en sors pas. Un peu d'aide serait la bienvenue. Voici mon problème :


Il s'agit d'un formulaire en php avec un seul champ. L'internaute introduit le montant de sa commande (p.ex. 123.45€).
Lorsqu'il appuie sur le bouton "Payer", ce montant doit être multiplié par 100 et utiliser le nom de variable "vadt_amount".

Mon prestataire de paiement en ligne utilise la valeur 12345 (soit 100x 123.45) pour effectuer le paiement.
Cette opération de multiplication doit être cachée du client. Lorsqu'il arrive sur la page de paiement sécurisée de mon prestataire, le montant correct y est affiché.

En résumé :
1) l'internaute saisie le montant
2) au moment de l'envoi, ce montant est multiplié par 100
3) le nom de la variable est vadt_amount

Voici mon code :
<form [...]			
<tr>
	<td class="paiement">Montant en euros (ex: 14,95)</td>
	<td><input type="text" name="vadt_amount" value=""size=20></td>
	<td><?php  [..........????...........] ?></td>
</tr>

[...]</form>	
Que dois-je insérer entre les balises php pour multiplier mon champ "vadt_amount" par 100 ?

En vous remerciant,
Maxime.

Re: Multiplier un montant par 100 dans un formulaire

Posté : 28 nov. 2013, 03:46
par orenx22
Bonjour,

Deux cas sont possible. Soit tu veux avoir un calcul (x100) :

- sans envoyer les formulaire, c'est à dire sans que la page se rafraichisse. Et la tu dois utiliser du javascript.
- le cas inverse. Là c'est en php que le post pourra être traité.

En php :

<?php

$result = null ;

if( !empty(  $_POST ) 
and isset( $_POST['vadt_amount'] ) )
{
    $result = $_POST['vadt_amount'] * 100 ;
}

echo $result ;

?>
<form>
    <label>Blabla</label>
    <input type="text" name="vadt_amount" />
    <input type="submit" value="Envoyer" />
</form>
En javascript il faut exploiter l’événement onkeyup="function()". Avec function le nom de ta fonction javascript te permettant de modifier le contenu de ton imput.

Ciao

Re: Multiplier un montant par 100 dans un formulaire

Posté : 28 nov. 2013, 15:42
par MaxMax
Bonjour,

Tout d'abord merci d'avoir pris le temps de me répondre.
J'ai testé votre code php sans succès.

Afin de mieux comprendre mon formulaire de paiement je vous copie, ci-dessous, l'ensemble de mon code.
Pour résumé, le client rempli le formulaire de paiement (sur index.php), celui ci est ensuite traité sur une autre page visible uniquement en mode débug (form_payment.php) puis envoyé vers le serveur de la banque afin que le client puisse poursuivre la saisie de ses informations bancaires et finaliser son paiement.

index.php :
<?php
// Selection de la langue
if (isset($_REQUEST['lang'])) $lang = $_REQUEST['lang'];
if (isset($_REQUEST['en_x'])) $lang = "en";
if (isset($_REQUEST['fr_x'])) $lang = "fr";
if (!isset($lang)) $lang = "fr";
include($lang.'.php');
?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title><?php echo $Demo_de_Paiement ?></title>
<link href="style.css" rel="stylesheet" type="text/css"/>
</head>

<body >
		<form style="margin-top:10px;"method=POST action=form_payment.php >
					<input type="hidden" name="lang" value="<?php echo $lang ?>">
					<table cellspacing="1">

						<td colspan="3" class="title_array"><?php echo $PARAMETRES_DE_LA_TRANSACTION ?></td>
						</tr>				
						<tr>
							<td class="field_mandatory">vads_amount</td>
							<td><input type="text" name="vads_amount" value="1000"size=20></td>
							<td><?php echo $Montant_de_la_commande ?></td>
						</tr>					
					
						<tr> 
						<td colspan="3" class="title_array"><?php echo $PARAMETRES_CLIENT ?></td>
						</tr>
						
						<tr>
							<td>vads_order_id</td>
							<td><input type="text" name="vads_order_id" value="123456" size=20></td>
							<td><?php echo $Numero_de_commande ?></td>
						</tr>
						
						<tr>
							<td>vads_cust_id</td>
							<td><input type="text" name="vads_cust_id" value="2380" size=20></td>
							<td><?php echo $Numero_client ?></td>
						</tr>
						<tr>
							<td>vads_cust_name</td>
							<td><input type="text" name="vads_cust_name" value="Monsieur X" size=20></td>
							<td><?php echo $Nom_du_client ?></td>
						</tr>
						<tr>
							<td>vads_cust_address</td>
							<td><input type="text" name="vads_cust_address" value="rue 123" size=20></td>
							<td><?php echo $Adresse_du_client ?></td>
						</tr>
						<tr>
							<td>vads_cust_zip</td>
							<td><input type="text" name="vads_cust_zip" value="00000" size=20></td>
							<td><?php echo $Code_Postal_du_client ?></td>
						</tr>
						<tr>
							<td>vads_cust_city</td>
							<td><input type="text" name="vads_cust_city" value="VILLE" size=20></td>
							<td><?php echo $Ville_du_client ?></td>
						</tr>
						<tr>
							<td>vads_cust_country</td>
							<td><input type="text" name="vads_cust_country" value="FR" size=20></td>
							<td><?php echo $Pays_du_client ?></td>
						</tr>
						<tr>
							<td>vads_cust_phone</td>
							<td><input type="text" name="vads_cust_phone" value="0600000000" size=20></td>
							<td><?php echo $Telephone_du_client ?></td>
						</tr>
						<tr>
							<td>vads_cust_email</td>
							<td><input type="text" name="vads_cust_email" value="[email protected]" size=20></td>
							<td><?php echo $Email_du_client ?></td>
						</tr>

					</table>
					<button type="submit" class="validationButton" >
				<span><em><?php echo $Valider_et_envoyer_les_parametres ?></em></span>
				</button>
				</form>
	</div>
form_payment.php
<?php
include ("function.php");


/* --------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
CREATION DU FORMULAIRE DE PAIEMENT 
Le formulaire de paiement est composé de l'ensemble des champs vads_xxxxx contenu dans le tableau $params 
Celui-ci est envoyé à la plateforme de paiement à l'url suivante :https://systempay.cyberpluspaiement.com/vads-payment/

---------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------- */

// Selection de la langue
if (isset($_REQUEST['lang'])) $lang = $_REQUEST['lang'];
if (isset($_REQUEST['en_x'])) $lang = "en";
if (isset($_REQUEST['fr_x'])) $lang = "fr";
if (!isset($lang)) $lang = "fr";
include($lang.'.php');

// CREATION DU FORMULAIRE DE PAIEMENT  encodé en UTF8
$form = get_formHtml_request($_REQUEST, $lang); 
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title><?php echo $Redirection_vers_la_plateforme ?></title>
<link href="style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="container">
	<div id="Title_information">
		<form name="lang" method="post" action="form_payment.php"> 
<?php
// Selection de la langue
		echo '<input type="hidden" name="vads_amount" value="'.$_REQUEST['vads_amount'].'">';
		echo '<input type="hidden" name="vads_order_id" value="'.$_REQUEST['vads_order_id'].'">';
		echo '<input type="hidden" name="vads_cust_id" value="'.$_REQUEST['vads_cust_id'].'">';
		echo '<input type="hidden" name="vads_cust_name" value="'.$_REQUEST['vads_cust_name'].'">';
		echo '<input type="hidden" name="vads_cust_address" value="'.$_REQUEST['vads_cust_address'].'">';
		echo '<input type="hidden" name="vads_cust_zip" value="'.$_REQUEST['vads_cust_zip'].'">';
		echo '<input type="hidden" name="vads_cust_city" value="'.$_REQUEST['vads_cust_city'].'">';
		echo '<input type="hidden" name="vads_cust_country" value="'.$_REQUEST['vads_cust_country'].'">';
		echo '<input type="hidden" name="vads_cust_phone" value="'.$_REQUEST['vads_cust_phone'].'">';
		echo '<input type="hidden" name="vads_cust_email" value="'.$_REQUEST['vads_cust_email'].'">';														
		echo '<input type="hidden" name="vads_trans_id" value="'.$_REQUEST['vads_trans_id'].'">';	
		echo '<input type="hidden" name="vads_trans_date" value="'.$_REQUEST['vads_trans_date'].'">';	
		echo '<input type="hidden" name="signature" value="'.$_REQUEST['signature'].'">';	
?>
		</form>		
	</div>
	<hr>	
<?php
echo $form;
?>
</div>
</body>
</html> 
En l'état actuel des choses, le client doit saisir son montant sans "point" ni "virgule" sinon cela engendre une erreur (p.ex: 1000 pour 10 euros). Mon idée est donc de multiplier le champ du montant par 100 afin de faire sauter le point ou la virgule (10.50 = 1050 = 10 euros et 50 cts).

Que dois-je ajouter/modifier dans ce code ?

Bien cordialement,
Maxime.

Re: Multiplier un montant par 100 dans un formulaire

Posté : 29 nov. 2013, 00:31
par orenx22
mon script ci dessuis ne marche pas parce qu'au niveau de la balise form je n'ai pas déclaré l'action et surtout déclaré la méthode POST.

<form method="POST" action="#">

Le fait de pas pouvoir enregistrer dans ta base de données le résultat sous forme d'un chiffre avec virgule et à mon avis une erreur au niveau de la conception de ta base de données.

si dans ta base, ton attribue où tu stockes le montant du formulaire est de type INT change le en type FLOAT.

Sans quoi il existe bcp d'autre moyen de supprimer un caractère d'une chaine.

exemple :

- la fonction str_replace : http://php.net/manual/fr/function.str-replace.php

- exploiter les fonctions explode et implode.

Je pense que le plus simple quand même reste d'être logique dans tes enregistrements au niveau de la base de données, c'est à dire de donner la possibilité de pouvoir enregistrer la valeur avec un virgule.

Pour t'aider : http://www.vulgarisation-informatique.c ... onnees.php

Autre chose :

// il est plus logique d'écrire
<input type="hidden" name="vads_amount" value="<?php echo $_REQUEST['vads_amout'] ?>">

// que
echo '<input type="hidden" name="vads_amount" value="'.$_REQUEST['vads_amount'].'">';
et je t'invite également à exploiter la variable $_POST pour récupérer les valeurs de tes formulaires et la variable $_GET pour le reste, $_REQUEST n'étant pas très clair par moment.

Piqure de rappel : $_POST est invisible / $_GET est lisible dans l'url.

Je vois également que tu veux faire un site multi-langue. Si je peux me permettre, je peux te donner quelques tuyaux sympa pour débuté et faire quelque chose d'assez efficace.

Il existe une fonction qui va te permettre de récupérer un fichier .ini et de le transformer en tableau. Jusque là c'est pas trop clair mais je t'explique. Imagine une arborescence d'un répertoire nommé "dico", dans celui ci tu as des dossiers qui représente les différentes langues dispo sur ton site, ici "fr" et "en". Dans ses répertoires de langage tu va y stocker des fichiers .ini qui porteront le même nom que les pages php que tu ouvres / inclues. De se fait, tu va récupérer un tableau de variable soit "fr" si tu choisi le dossier "fr" et "en" dans le cas inverse.

Exemple :

Image

Pour changer de langue rien de plus simple, faire un système de petit drapeau qui ont pour url la variable lang=...

http://www.monsite.fr/index.php?lang=fr ou http://www.monsite.fr/index.php?lang=en

Ciao

Re: Multiplier un montant par 100 dans un formulaire

Posté : 29 nov. 2013, 01:33
par MaxMax
Merci de ces précisions. Je m'y replonge demain.

PS : Petite précision, je n'ai pas accès à la base de données. Le formulaire est transmis directement vers la bdd de la banque. D'ailleurs, le code copier ci-dessus est un exemple de code donné par le service de paiement en ligne de cette banque.


Bonne soirée,
Maxime.

Re: Multiplier un montant par 100 dans un formulaire

Posté : 29 nov. 2013, 01:42
par orenx22
je replay parce que j'ai ré édite ma réponse plus haut, c'est pour éviter que tu ne le vois pas ;)

Re: Multiplier un montant par 100 dans un formulaire

Posté : 29 nov. 2013, 13:26
par MaxMax
Bonjour,

C'est noté pour les fichiers *.ini.

Concernant mon problème de *100, j'ai réglé le problème avec le code suivant :
$_REQUEST['vads_amount']=preg_replace("#,#",".",$_REQUEST['vads_amount']);
$_REQUEST['vads_amount'] = $_REQUEST['vads_amount'] * 100;
Merci de m'avoir mis sur la voie !
Bonne journée,
Maxime.

Re: Multiplier un montant par 100 dans un formulaire

Posté : 30 mai 2016, 19:27
par Muksu
Bonjour,

Merci pour l'aide précieuse mais ou as tu mis :
$_REQUEST['vads_amount']=preg_replace("#,#",".",$_REQUEST['vads_amount']);
$_REQUEST['vads_amount'] = $_REQUEST['vads_amount'] * 100;

Je les ai mis dans function.php mais ca ne fonctionne pas non plus