malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 juil. 2006 à 07:28
Hello,
le problème n'est pas le modulo, mais ton str_replace().
Il fonctionne, avec 2 tableaux, de façons "incrémentale"...Bref, les modifications s'appliquent en temps réel. Il essaye de remplacer la 1ère valeur, puis passe à la seconde...en testant le résultat de la 1ère. Ta chaîne est revérifiée à chaque incrément.
Bon ce n'est pas clair, je te donne un exemple d'un commentaire sur php.net :
Genjinophil
Messages postés2Date d'inscriptionjeudi 9 juin 2005StatutMembreDernière intervention 7 juillet 2006 7 juil. 2006 à 15:00
bonjour
En fait je me suis pris la tete mais finalement j'ai trouvé ma réponse et donc j'en profite pour la donner on sait jamais ca peut être utile
Le serveur PHP ( interne ou sur proxad ) revoit pour pour les nombres d'une taille supérieure à 1.000.000.000 la formulation scientifique par exemple 3,0004E+13
Et quand on applique le calcul % 97 ou tout autres calcul avec le modulo [ à verifier faut dire que j'ai pas pris le temps pour cela =) ] cela renvois un résultat erroné, donc j'ai applique la solution a l'emporte piece suivante, je donne le code brut dans le plus pur style cobol ou kobold
hop hop de la variable pour agrémenter
$numbanq = "Ma variable";
$numgui = "Ma variable";
$numcpt = "Ma variable";
$numcle = Ma variable;
Je nettoie le compte bancaire, pour ce qui est de ma fonction de remplacement elle fonctionne très bien car je fais en fait , oui je suis paranoïaque =)
//---TOUT METTRE EN MAJ
printf("Mettre tout en MAJ $numcpt
");
$numcpt = strtoupper($numcpt);
printf("Verif Cpt BQ avant $numcpt
");
//---Conversion des lettres du numero de compte en chiffres
$pattern = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
$repl = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '1', '2', '3', '4', '5', '6', '7', '8', '9', '2', '3', '4', '5', '6', '7', '8', '9');
$numcpt = str_replace( $pattern, $repl, $numcpt);
printf("Verif Cpt BQ apres $numcpt
");
Cela me permet de bien verifier que le la conversion a été bonne , et je ne tente pas de remplacer les chiffres par des chiffres
La je hache un peut et je fais des concatenations successives
$valrib = $numbanq % 97;
printf("Calcul 1 = $valrib
");
$valrib = 97 - $valrib;p
rintf("Calcul Final = $valrib
");
une petit verification avant de faire la suite de ce pourquoi cela a été prévus
if ( $valrib == $numcle )
{
printf("Bravo Ma clé RIB est $numcle le calcul donne $valrib");
} else {
printf("PdB un problème la clé RIB est $numcle le calcul donne $valrib");
}
Et la cela fonctionne nickel chrome , bon c'est sur le code est un peu gras, mais je compte de l'alléger en me servant des priorités des opérateurs, tous les affichages sont bien sur à éliminer.