Bonjour,
je voudrais mettre ne place un convertisseur de devise sur un site

mon problème c'est que je ne sais pas comment debuter, quelqu'un pourrait me mettre sur le chemin?
Merci.

11 réponses


Bonjour,

Commençons pas le commencement.
Connais tu les languages de programmations ? Plus précisément le Web ?
Si oui que connais-tu ?

Veux tu faire ca avec CakePHP ? Ou as tu simplement posté dans la mauvaise section ?

wenz
Auteur

je developpe leprojet avec cakephp deja, je voudrais avoir une idée sur le developpement du module de convertisseur, j'ai pas posté dans la mauvaise section

Tu dois taper une API pour connaitre les taux de conversion de la monnaie qui change assez souvent.
Je te renvois sur stackoverflow ou la personne propose plusieurs API : http://stackoverflow.com/questions/3139879/how-do-i-get-currency-exchange-rates-via-an-api-such-as-google-finance

wenz
Auteur

Merci Grafikart pour ta réponse, j'ai mis ça en place, avec une devises tout marche bien, mais j'ai un problème, je m'explique je voudrais convertir le montant en plusieurs devises.
voic comment j'ai procéder: le code mon controller:

     $this->layout='backoffice';
     if (!$this->Auth->user('id')) {
             $this->redirect('/users/login');
        }

$from= 'EUR';
$amount = 1;

$to = isset($_POST['to']) ? $_POST['to'] : '';
$rawData = $this->currencyConvert($from,$to,$amount);
$regex  = '#\<span class=bld\>(.+?)\<\/span\>#s';
preg_match($regex, $rawData, $converted);
$result = $converted[0];

$listTo = '
<div><select name="to" class="form-control">
<option value="CFA Franc BCEAO (CFA)">CFA Franc BCEAO(CFA)</option>
<option value="Ghanaian Cedi (GHS)">Ghanaian Cedi (GHS)</option>
<option value="Nigerian Naira(NGN)">Nigerian Naira(NGN)</option>
<option value="South African Rand (ZAR)">South African Rand (ZAR)</option>
<option value="CFA Franc BEAC (FCFA)">CFA Franc BEAC (FCFA)</option>
<option value="Congolese Franc (CDF)">Congolese Franc (CDF)</option>
<option value="Eur (EURO)">Eur(EURO) </option>
<option value="USD(US Dollar)">USD(US Dollar)</option>
</select>
</div>
';
$listTo = str_replace("\"$to\"","\"$to\" selected",$listTo);
debug($listTo); 
$this->set('result',$result);
$this->set('listTo',$listTo);
$this->set('amount',$amount);
$this->set('from',$from);

j'ai cette erreur: Notice (8): Undefined offset: 0 .
Je declare mal ma variable $to? ou il ya une erreur quelque part?
Merci

C'est quoi ce code Html dégueux dans ton Controller???? Tu peut pas faire un tableau style:

  $listTo = [
    'CFA'  => 'CFA Franc BCEAO (CFA)',
    'GHS' => 'Ghanaian Cedi (GHS)',
    'NGN' => 'Nigerian Naira(NGN)',
    'ZAR' => 'South African Rand (ZAR)',
      ... // le reste
  ]

Après dans ta vue :

  <div>
    <?= $this->Form->select('to', $list, ['class' => 'form-control]);?>    
  </div>

Source du Helper form et de la méthode select: http://book.cakephp.org/2.0/fr/core-libraries/helpers/form.html#FormHelper::select

Après tu aurais pus for each comme ça sans le Helper:

  <div>
    <select name="to" class="form-control">
    <?php foreach($listTo as $trigramme => $defPays):?> //exemple: $trigramme => CFA $defPays => CFA Franc BCEAO(CFA)
        <option value="<?= $trigramme;?>" <?php if($_POST['to'] == $trigramme):?> selected <?php endif;?> > <?= $defPays;?> </option>
    <?php endforeach;?>
    </select>
  </div>

Bon rien que ça déjà ça va faire du bien. ZERO code HTML dans un Controller, dans la mesure du possible "évidemment".

Bon après pour ton vrai problème, ou est vraiment le problème sur quelle variable? il te dis juste qu'il n'arrive pas à trouver l'index 0 du tableau qui devrais se trouver dans la variable où se situe le problème, laquelle ???

wenz
Auteur

Merci pour la correction, quand je declare une seule devise dans la variable $to tout marche mais avec le tableau avec le champ select , j'ai l'erreur dont je parlais av

Tu pourrais donner ton formulaires stp, ainsi que le debug des données postées "$this->request->data" d'ailleur j'ai mis $_POST, mais récupères tes données avec $this->request->data['nom de l'input'].

wenz
Auteur

Au fait ce que je voulais c'est quand on selection une devise le montant doit changer, je sais que je dois faire ça avec javascript on change mais je ne sias pas comment je dois faire ça , pour dire la vérité je ne suis pas très callé en javascript.
voici le code de ma page formulaire

<?php $this->set('title_for_layout', 'Abonnement sur le site');?>

<div class="row" id="start">
<div class="col-md-12" align="center">
<h1><i class="fa fa-credit-card"></i> <?php echo __('ABONNEMENT',true); ?></h1>
<?php echo __("Choisissez l'offre dont vous avez besoin",true);?><br /><br />
</div>
</div><br /> 
<div class="row">
<div class="col-md-3 right"></div>
<div class="col-md-6">
 <?php echo $this->Session->Flash();?>
</div></div><br />

<div class="row">
<div class="col-md-2 right"></div>
<div class="col-md-8">

  <div class="row pricing-tables">

  <div class="col-md-3 col-sm-3">
  <div class="pricing-table">
  <div class="plan-name">
  <h3><?php echo __('Abonnement 1 M',true);?></h3>
  </div>
 <div class="plan-price">
 <div class="price-value"><?php echo $amount.$from = $result;?> <span></span></div>
 <div class="interval">par mois</div>
 </div>
 <div class="plan-list">
 <ul>
<li><?php echo __('Personnalisation page profile',true);?></li> 
<li><strong>40GB</strong> Transfer</li>
<li><strong>10</strong> Domains</li>

</ul>
</div>
<div class="plan-signup">
 <?php 

            echo $this->Form->create('Abonnement',array('url'=>array('controller'=>'payment','action'=>'abonnement')));
            echo $this->Form->input('price', array('value'=>'2','type'=>'hidden'));
            echo $this->Form->input('duree', array('value'=>'1','type'=>'hidden'));

            echo $this->Form->submit(__("S'ABONNER",true),array('id'=>'paypal-pay')); 
           ?>
            <script src='https://www.paypalobjects.com/js/external/dg.js' type='text/javascript'></script>
            <script>
            var dg = new PAYPAL.apps.DGFlow({
            // the HTML ID of the form submit button which calls setEC
            trigger: 'paypal-pay',
            // the experience type: instant or mini
            expType: 'instant'
            });
            </script>
</div>
</div>
</div> 

<div class="col-md-3 col-sm-3">
  <div class="pricing-table">
  <div class="plan-name">
  <h3><?php echo __('Abonnement 3 M',true);?></h3>
  </div>
 <div class="plan-price">
 <div class="price-value">5&euro;<span>.00</span></div>
 <div class="interval">par mois</div>
 </div>
 <div class="plan-list">
 <ul>
<li><?php echo __('Personnalisation page profile',true);?></li> 
<li><strong>40GB</strong> Transfer</li>
<li><strong>10</strong> Domains</li>

</ul>
</div>
<div class="plan-signup">
 <?php 

            echo $this->Form->create('Abonnement',array('url'=>array('controller'=>'payment','action'=>'abonnement')));
            echo $this->Form->input('price', array('value'=>'5','type'=>'hidden'));
            echo $this->Form->input('duree', array('value'=>'3','type'=>'hidden'));
            echo $this->Form->submit(__("S'ABONNER",true),array('id'=>'paypal-pay1')); 
            ?>
            <script src='https://www.paypalobjects.com/js/external/dg.js' type='text/javascript'></script>
            <script>
            var dg = new PAYPAL.apps.DGFlow({
            // the HTML ID of the form submit button which calls setEC
            trigger: 'paypal-pay1',
            // the experience type: instant or mini
            expType: 'instant'
            });
            </script>
</div>
</div>
</div> 

<div class="col-md-3 col-sm-3">
  <div class="pricing-table">
  <div class="plan-name">
  <h3><?php echo __('Abonnement 6 M',true);?></h3>
  </div>
 <div class="plan-price">
 <div class="price-value">11&euro;<span>.00</span></div>
 <div class="interval">par mois</div>
 </div>
 <div class="plan-list">
 <ul>
<li><?php echo __('Personnalisation page profile',true);?></li> 
<li><?php echo __('Bouton',true);?></li>
<li><strong>10</strong> Domains</li>

</ul>
</div>
<div class="plan-signup">
 <?php 

            echo $this->Form->create('Abonnement',array('url'=>array('controller'=>'payment','action'=>'abonnement')));
            echo $this->Form->input('price', array('value'=>'11','type'=>'hidden'));
            echo $this->Form->input('duree', array('value'=>'6','type'=>'hidden'));
            echo $this->Form->submit(__("S'ABONNER",true),array('id'=>'paypal-pay2')); 
           ?>
           <script src='https://www.paypalobjects.com/js/external/dg.js' type='text/javascript'></script>
            <script>
            var dg = new PAYPAL.apps.DGFlow({
            // the HTML ID of the form submit button which calls setEC
            trigger: 'paypal-pay2',
            // the experience type: instant or mini
            expType: 'instant'
            });
            </script>       
</div>
</div>
</div> 

<div class="col-md-3 col-sm-3">
  <div class="pricing-table">
  <div class="plan-name">
  <h3><?php echo __('Abonnement 12 M',true);?></h3>
  </div>
 <div class="plan-price">
 <div class="price-value">23&euro;<span>.00</span></div>
 <div class="interval">par mois</div>
 </div>
 <div class="plan-list">
 <ul>
<li><?php echo __('Personnalisation page profile',true);?></li> 
<li><?php echo __('Bouton',true);?></li>
<li><strong>10</strong> Domains</li>

</ul>
</div>
<div class="plan-signup">
 <?php 

            echo $this->Form->create('Abonnement',array('url'=>array('controller'=>'payment','action'=>'abonnement')));
            echo $this->Form->input('price', array('value'=>'23','type'=>'hidden'));
            echo $this->Form->input('duree', array('value'=>'12','type'=>'hidden'));
            echo $this->Form->submit(__("S'ABONNER",true),array('id'=>'paypal-pay3')); 
            ?>
            <script src='https://www.paypalobjects.com/js/external/dg.js' type='text/javascript'></script>
            <script>
            var dg = new PAYPAL.apps.DGFlow({
            // the HTML ID of the form submit button which calls setEC
            trigger: 'paypal-pay3',
            // the experience type: instant or mini
            expType: 'instant'
            });
            </script>       
</div>
</div>

</div> 

  </div>
 <div class="row">
<div class="col-md-2 right"></div>
<div class="col-md-8" align="center">
<div class="row">
<div class="col-md-4 right"></div>
<div class="col-md-4">
<?php echo __('Afficher prix en');?>
<?php echo $this->Form->select('to', $listTo, array('class' => 'form-control'));?>
<?php echo $this->Form->End();?><br /><br />
</div>
</div>
</div>

</div>

</div></div>  

<br /><br />
<?php echo $this->Html->script('bootstrap');?>

  <?php echo $this->Html->script('http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js');?>

 <?php echo $this->Html->script('jquery.js');?>

Merci

wenz
Auteur

Bonjour, la convertion des devises marche bien, mais j'ai un problème , je m'explique
je voudrais convertir 2€ , 5€ et 11€, je parts du principe je convertis 1€ et je multiplis le resultat pas 2 , 5 et 6 mais à ma supprise ça ne marche pas par exemple pour 1€ en $ us j'ai 21.0586 USD au lieux d'avoir 2(1.0586 usd).
Quelqu'un a une idée?
Merci

Un problème de concaténation

si tu voulais faire: 2 * 1.0586

et que tu obtiens 21.0586 c'est que la multiplication ne se fais pas mais que ce sont deux chaines de caractère qui se collent

wenz
Auteur

Merci, c'est corrigé