Utilisation de substr()

coliasso Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -  
coliasso Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai une table oùil y a
code_menage par exemple tap-147
code_individu tap-147-04
pr tout individu d un ménage donné, le code_individu doit commencer par le code de ce ménage; comme ds mes exemples
et je veux écrire un test (sur la page action du formulaire d'insertion ds cette table) qui va, pour chaque nouvel enregistrement, vérifier cette concordance et, envoyer un message d'erreur s'il n'y a pas concordance(ie, si les deux deux premières parties du code_individu correspondent au code_menage)
j'ai écris ce qui suit(sur la page action.php), mais qui n'envoie que le message d'erreur (qu'il y est concordance ou non)
if("substr($code_individu,1,7)"!="$code_habitation"){ die("<h2>Codes non concordants; veuillez vérifier!</h2>");}
je voudrais savoir ce qui ne va pas ds ce que j'ai écris et, ce qui peut faire ce que je veux et que j'ai décrit en haut
par avance, merci

2 réponses

Utilisateur anonyme
 
Bonjour

if("substr($code_individu,1,7)"!="$code_habitation"){ die("<h2>Codes non concordants; veuillez vérifier!</h2>");} 

Quand tu écris "substr($code_individu,1,7)" entre double quotes, c'est une chaîne de caractères, pas un appel à la fonction sbstr.
Au passage, les double-quotes inutiles autour de $code_habitation sont inutiles :
if(substr($code_individu,1,7)!=$code_habitation){ die("<h2>Codes non concordants; veuillez vérifier!</h2>");} 
1
coliasso Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
bjr, le père
merci de tes remarques et de ta proposition
mais quand je tiens compte de la proposition, à la soumission de la page,
l'insertion se passe s'iln'y avait pas un tel test de ces deux codes (ie, qu'il y est concordance ou non, l'insertion se passe normalement)
j'ai donc l'impression que la condition du test n'est pas prise en compte par le programme
merci
0
Utilisateur anonyme
 
Premier point, le premier caractère d'une chaîne, pour substr, a l'indice 0. tu aurais donc dû employer substr($code_individu,0,7).
Ensuite, on ne peut pas expliquer le comportement du logiciel en voyant une seule ligne. Le mieux est d'afficher les valeurs de $code_individu et de $code_habitation juste avant le test, je parie qu'ils n'ont pas la valeur que tu crois. D'ailleurs, pourquoi $code_habitation alors que dans tes explications tu parle de code_menage ?
1
coliasso Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
Mon cher le père, ttes mes excuses pour mes dérangements
mais je viens de régler le problème grâce à ton information hyper capitale sur l'indice du premier caractère selon substr; je ne savais pas que c'était 0
par ailleurs, je viens de me rendre compte que substr ne considère pas le tiret (-) comme caractère: peut-être que je me trompe, mais en tenant compte de cela et du fait que l'indice du premier caractère, le test a très bien fonctionné
mille merci à toi
0
coliasso Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
substr reconnais bien( -) comme caractère
grand merci
0