Utilisation de substr()

coliasso Messages postés 55 Statut Membre -  
coliasso Messages postés 55 Statut Membre -
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

  1. 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
    1. coliasso Messages postés 55 Statut Membre
       
      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
  2. 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
    1. coliasso Messages postés 55 Statut Membre
       
      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
    2. coliasso Messages postés 55 Statut Membre
       
      substr reconnais bien( -) comme caractère
      grand merci
      0