|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Nouveau Membre du Club
![]() Inscription : mars 2008 Messages : 96 ![]() |
Bonjour,
J'explique le context : 1 - j'ai un formulaire me permettant de renseigner un champ avec comme identifiant associé : $valeur 3 - je souhaite ensuite exécuter un calcul avec la fonction eval() de PHP. J'applique pour chaque cas le code suivant : 1 - $res = 4 2 - Code :
Les résultats sont donc correct. Maintenant je vais chercher une formule dans une base de donnée MySQL. Mon attribut est de type TEXT et la formule égal à : Si j'applique de nouveau ma fonction eval avec le code suivant : Code :
Code :
Merci |
||||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Regle n°3 ^^
Code :
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||
|
|
00
|
|
|
#3 | ||||||||
|
Nouveau Membre du Club
![]() Inscription : mars 2008 Messages : 96 ![]() |
Voici mes tests (pour chaque test : $valeur = 10) :
1 - Code de la formule en dur : Code :
Code :
Code :
Code :
Quelq'un a t-il un avis sur mon PROBLEME SVP??? |
||||||||
|
|
00
|
|
|
#4 | ||||||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Code :
et renvoie : Code :
Code :
A mon avis, lorsque tu récupere l'info depuis la base, les caracteres spéciaux ($ et +) doivent etre encodés dans un autre charset, ce qui provoque l'erreur de eval. Essaye le code : lorsque tu récuperes ta chaine de ta base de donnée. Puis, les fonctions mb_* pour convertir ta chaine dans le meme format que celui que tu utilise pour php (ascii c'est tres bien pour des trucs aussi simple, mais tu peux essayer UTF8 si tu en as mis partout ;o)
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||||||
|
|
00
|
|
|
#5 | ||||||||
|
Nouveau Membre du Club
![]() Inscription : mars 2008 Messages : 96 ![]() |
Le nombre de caractère indiqué par la fonction var_dump() est faussé car j'ai renommé mes variables sur le forum pour que se soit plus lisible.
Dans les tests suivants, les noms de variable ne sont pas retouché. ;o) Voici donc ton test qui fonctionne (jai rajouté la ligne : echo mb_detect_encoding($formule) Code :
Code :
Code :
Code :
Le code est donc bien ASCII Mais on observe tout de même des caractères en trop dans le deuxième cas... Comment remédier à ce problème? MERCI |
||||||||
|
|
00
|
|
|
#6 | ||||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Tu peux faire :
Code :
Code :
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||||
|
|
00
|
|
|
#7 | ||
|
Nouveau Membre du Club
![]() Inscription : mars 2008 Messages : 96 ![]() |
et moi :
Code :
Ca correspond à un caractère de retour à la ligne ?? Tu as une idée pour supprimer la fin de la chaîne, outre la fonction substr() |
||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
non, ca veux dire que tu as les caracteres :
"</p>" a la fin de ta formule ^^ Tu peux aussi les voir en faisant : Tu dois donc mal enregistrer tes formules dans la base en amont
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : mars 2008 Messages : 96 ![]() |
Je suis allé voir dans phpMyadmin la table de la base de donné en question.
J'ai bien la formule égal à : $valeur + 2 La balise </p> est-elle censé être visible dans la table? Je regarde de suite lors de l'insertion de ma formule dans ma base voir si le problème peut venir de la !!!! Merci pour tes réponses |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : mars 2008 Messages : 96 ![]() |
Bon, je n'ose même pas annoncé mon erreur
J'ai regardé mon code (un peu bordélique) et j'ai vu dans un coin : $formule = $rows[0]->formule."</p>"; Pourquoi cette ligne? certainement un copier-coller venu de nul part... En tout cas je te remercie pour ton aide !!! Donc oui maintenant ça fonctionne !!! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com