Problème fonction/concatener...

Kanchouidd
Invité n'ayant pas de compte PHPfrance

29 avr. 2012, 13:37

Bonjour à tous.

Je poste ici car j'ai un problème. Voila, je bidouille un peu un blog Wordpress avec le Pluggin E-commerce pour mettre une boutique.
Dans la panier, j'ai une fonction ' wpsc_cart_total_widget( false, false ,false ) ' qui calcule le nombre d'éléments dans le panier avec leurs prix pour donner le total. Je veux faire en sorte qu'on voit le coût de livraison sur le panier en haut a droite de l'écran AVANT de passer à la caisse. Je créer donc un script : si le total est inférieur à 50.00 euros = transport payant, sinon gratuit.

Voici le script :
<?php
$piz  = wpsc_cart_total_widget();    //j’enlève les éléments 'false' de la fonction
echo wpsc_cart_total_widget();       // je fait echo j'ai par exemple 62,00 €.
$pie = explode(",", $piz);                // Je sépare 62,00 €en '62' et '00 €'
print_r ($pie);                                // juste pour vérifier le résultat
echo '</br>';
$pia = explode(" ", $pie[1]);           //je sépare '00 €' en '00' et '€'
print_r ($pia);
$concatener = $pie[0] . '.' . $pia[0];   //je relie 62 avec 00 j'obtins '62.00'
echo $concatener;                             // je vérifie que j'ai bien '62.00'
if ($concatener >= 50.00) {                // l'offre
echo 'transport gratuit';
} else {
echo 'transport payant';
} ?>		                              //et là le résultat est "transport payant"........
Quand je remplace la fonction ''wpsc_cart_total_widget()' au début par un prix comme '52,00 euros' sa marche, transport gratuit est affiché. Mais avec la fonction j'ai l'impression que ça bug. Et je ne comprend pas d'où vient le problème parce que au début quand je fait echo de cette fonction elle m'affiche bien une valeur sous forme de prix. Quand je rajoute des éléments en direct cette valeur augmente. J'arrive ensuite a transformer en XX.XX mais rien n'y fait !
Si quelqu'un peut m'aider :(

Eléphanteau du PHP | 29 Messages

29 avr. 2012, 19:05

Hello

Je suis encore débutant en php, mais tu concatènes deux chiffres et un point au milieu. Donc pour moi t'as une variable qui ressemble à une chaîne de caractères.

Vérifie le type de ta variable et sa valeur avec un var_dump($tavariable).

Si mon hypothèse est bonne, il te faudra transtyper ta variable pour que la comparaison donne un résultat correct.

ViPHP
xTG
ViPHP | 7331 Messages

29 avr. 2012, 19:21

Plutôt qu'un echo utilises var_dump() cela te donnera le type et si c'est une String la longueur (super important dans notre cas).
Le cast automatique en int ne devrait pas poser de problème à PHP, cependant s'il y a un caractère non imprimable qui se balade en plus de tes chiffres et ton point...

Kanchouidd
Invité n'ayant pas de compte PHPfrance

29 avr. 2012, 19:32

Effectivement :
var_dump($concatener);  //j'ai      string(33)
var_dump($offre);     //j'ai     float (50)
J'essaie de convertir $concatener en float :
$bar = (float) $concatener;
var_dump($bar);          // j'ai float(0)  
Quelqu'un peut m'aider pour la conversion ? Sur Manuel PHP ils disent que la conversion est assez délicate mais je ne saisis pas bien comment faire...

Eléphanteau du PHP | 29 Messages

29 avr. 2012, 20:05

Si c'est délicat (jamais essayé), au pire si tu ne trouves pas :

Tu convertit ton 62 avec un floatval($tavariable)..
Tu fais pareil avec ce qu'il y a après la virgule, et tu le divises par 100.
T'additionnes les deux.

A faire si vraiment tu ne t'en sors pas. Peut être que qqu'un qui a plus d'expérience aura une meilleure idée, car ce genre de manip n'est pas franchement optimisé je pense....

ViPHP
xTG
ViPHP | 7331 Messages

29 avr. 2012, 20:13

String de 33 caractères ? Le plus propre serait encore d'aller supprimer ces dits caractères dans les variables en amont qui ne devraient pas être présent.
Sinon solution de facilité donnée par smashcfr.