|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 160 ![]() |
Bonjour,
J'ai un petit soucis de comparaison entre deux chaines de caractères. J'ai deux tableaux de chaines de caractères et je souhaite savoir si chaque chaine du premier est contenu dans le second. Le problème est assez basique, je vous l'accorde, mais, je ne sais pas pourquoi, le premier test d'égalité qui renvoie "vrai" (donc qu'il est bien contenu) me renvoie systématiquement "false", quelque soit le nombre, la position. Toutes les autres comparaisons fonctionnent bien, c'est uniquement la première occurrence qui pose problème. Voici mes deux fonctions : Code :
Code :
Bonne journée |
||||
|
|
00
|
|
|
#2 | ||
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Bonjour,
J'ai testé ton code, et il fonctionne très bien. Code html :
D'ailleurs comment veux-tu qu'on te dise ce qui ne va pas lors d'une comparaison sans savoir ce que tu compare ?
|
||
|
|
00
|
|
|
#3 | ||||
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 160 ![]() |
Re,
Alors, voici mon tableau qui me permet de lister les informations : Code html :
Toutes les "value" des checkbox correspondent à un autre tableau "brut" en php : Code :
En amont, j'ai un select et sur le onchange, je demande à mon php le tableau des permissions du groupe sélectionner dans ce select(par exemple, si je selectionne le groupe Test, il me renvoie un tableau contenant gestion_contenu et gestion_menus ; ces deux parametres sont dans le tableau tLigne évoqué dans mon premier post). |
||||
|
|
00
|
|
|
#4 | |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Merci pour ces détails, je comprends mieux ce que tu veux faire.
Par contre, il serait plus intéressant d'avoir le code source(html et javascript) de la page sur laquelle tu obtiens ce comportement : Citation:
|
|
|
|
00
|
|
|
#5 | |||||
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 160 ![]() |
Citation:
Code :
Code :
Côté contrôle de résultat, le alert(leselect) me renvoie bien ce que je souhaite (ce que renvoie php est correct donc). Pour reprendre l'exemple précédent, avec le groupe Test où j'ai seulement deux permissions, lors du test 'gestion_contenu' renvoie false (au lieu de true et ne me coche pas ma checkbox), mais gestion_menus fonctionne bien. De même, avec Administration, fiche_user renvoie false au lieu de true, tous les suivants sont corrects. C'est juste que le premier test me renvoie un truc erroné, mais les autres. |
|||||
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 160 ![]() |
Re,
Alors, petite avancée : a coup de "alert", lors du premier test (qui est donc erroné), le alert (mis dans la fonction in_array) me renvoi un undefined pour la première checkbox (au lieu de fiche_user par exemple), mais les autres, ça passe nikel EDIT : Un alert mis juste après la récupération de mes champs (donc, dans la fonction requeteAjaxCompte, j'ai bien tous les champs nikel) : dois-je en conclure que lors du premier appel, le paramètre est mis à undefined (truc de fou quand même) ? |
|
|
00
|
|
|
#7 |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Un truc me chiffone dans ta fonction requeteAjaxCompte :
Tu déclare deux fois la variable tLigne dans la même fonction. En Javascript, la portée d'une variable est définie par la fonction et non par les blocs(comme dans la plupart des langages avec une syntaxe c-like). L'interpréteur Javascript va chercher a initialiser deux fois la variable lors de la compilation de la fonction ( indépendamment des blocs ) et il peut donc y avoir des comportements étonnants sans forcement avoir une erreur a l'exécution. |
|
|
00
|
|
|
#8 | ||
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 160 ![]() |
Re,
Code :
|
||
|
|
00
|
|
|
#9 | |||||
![]() ![]() Inscription : janvier 2011 Messages : 2 944 ![]() |
Citation:
remarque Code :
Code :
|
|||||
|
|
00
|
|
|
#10 | ||||||
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 160 ![]() |
Re,
Citation:
Sinon, existe-t-il une méthode pour supprimer ces caractères spéciaux ? Pour information, les chaines de caractères testées sont au "format" variable, c'est à dire que des caractères alphanumériques, sans espace (remplacé par des underscore). Et le truc qui me turlupine le plus, c'est cette histoire où le premier test est forcément faux (à cause d'un undefined). Citation:
EDIT: Suite à ma réponse, j'ai testé si this[i] est null ; le premier renvoie toujours vrai. Donc, à priori, mon premier test est erroné à cause d'une valeur null. Pourtant, juste après le split, il m'affiche bien la valeur (et pas null). |
||||||
|
|
00
|
|
|
#11 | |||
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 160 ![]() |
Re,
J'ai trouvé et NoSmoking était dans le vrai. Citation:
Le truc de fou, c'est que c'est la première fois que je vois cela entre mon résultat php (écriture dans fichier et compagnie me confirment bien ce que je veux) et la réception JS var leselect = xhr.responseText; qui insère ces deux caractères de retour de ligne. Du coup, j'ai juste fait un : Code :
|
|||
|
|
00
|
|
|
#12 |
|
Membre expérimenté
![]() Développeur Inscription : février 2010 Messages : 360 ![]() |
Erreur très courante lorsqu'on fait des webservices : un saut de ligne en dehors des balises php... Surtout que beaucoup d'editeur de fichiers ajoute automatiquement un saut de ligne a la fin d'un fichier (compatibilité pour certains langage pour lequel l'interpreteur nécessite un saut de ligne en fin de fichier)
|
|
|
00
|
|
|
#13 | |
|
Membre du Club
![]() Inscription : janvier 2003 Messages : 160 ![]() |
Citation:
Courante, courante, ... Je ne fais de l'ajax depuis 15 ans (bon, même si à l'époque ce n'était pas possible Pour l'histoire du fichier, je l'ai fait juste pour contrôler que, côté PHP, tout était correcte ; et puis, je suis en éditeur brut (kate pour être précis). Enfin bon, tout est ok. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com