J'écris ici, non pas que je me sente très avancé en php, mais mon problème respire le truc vicieux.
Ce post fait suite à post345703.html#p345703.
Je résume "l'ancien problème" :
J'ai fait une série de logiciel pour la gestion de ma compagnie de théâtre. Ces logiciels fonctionnent très bien chez moi.
J'ai acheté une location chez ovh d'espace mutualisé (je recommande pas).
J'ai donc copié ma base de données chez eux, ainsi que mes logiciels.
1er problème : Mes données sauvegardés en utf8 n'arrivent pas en utf8 chez moi, mais en iso.
Réponse d'ovh : Il doit y avoir un problème d'encodage.
Devant tant de pertinence, je me suis débrouillé tout seul et fait systématiquement une requête "SET NAMES utf8" dès connexion à ma base; comme ça, je n'ai pas à attendre q'ovh règle le problème.
Du coup, mes données s'affichent bien.
Mais à partir de là, j'ai des erreurs.
Par exemple :
J'ai une page, où j'affiche une liste de personnes, avec noms et numéro de sécu pris dans une table de la base de données.Je sélectionne une personne.
A partir de là, je renvoie le numéro de sécu de la personne, pour effectuer un travail dessus.
Mais bien entendu, dans le script php, je fait un test sur la validité du numéro de sécu.
Parmis ces tests, l'un consiste à ôter la clé du numéro de sécu, envoyer ce numéro sans clé à une petite fonction (voir plus bas), qui renvoie la clé calculée. Si celle-ci est différente de la première, cela entraîne une erreur.
Or, cette fonction, que j'ai testé et re-testé chez moi das tous les sens et qui fonctionne très bien, ce retrouve à calculer des clés erroné chez ovh !
D'où cela peut-il venir ?
(configuration php chez ovh ?)
Comment puis-je espérer régler le problème sans compter sur l'aide si pertinente d'ovh ?
Voici la fonction; vous pouvez la tester, elle fonctionne.
function calcul_cle($numero) {
if (strlen($numero)!=13)
return -1;
$corse=0;
if ($numero{6}=="A"){ //le cas corse
$numero{6} = "0";
$corse=1000000;
} else if ($numero{6}=="B"){
$corse=2000000;
$numero{6} = "0";
}
$cle = 97 - (($numero-$corse)%97); //formule de calcul de cle sécu
if ($cle < 10)
$cle = "0".$cle;
return $cle;
}
Je rappelle qu'elle me renvoie bien une clé, mais fausse ! (souvent une clé à trois chiffres au lieu d'un ou deux chiffres.)Merci