8768 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

a écrit :
Ce sur quoi je voulais attirer l'attention, c'est que la syntaxe pour un test d'égalité est
if($truc == 'machin') ...
avec DEUX signes "=". Le problème c'est que, si on n'en met qu'un seul ce n'est pas détecté comme une erreur -- pour d'excellentes raisons -- mais ça veut dire aussi qu'on ne trouve pas facilement l'erreur quand on l'a faite. Je ne compte plus le nombre de fois où je me suis gratté la tête sur ce sujet, surtout quand je passe en quelques minutes d'un langage où une comparaison se fait avec un seul signe "=" à un langage où il en faut deux.


Il existe une petite astuce très simple pour ne plus se faire avoir, si tu n'arrives pas à te débarrasser définitivement de cette erreur de débutant: prendre l'habitude d'écrire systématiquement 123==$truc plutôt que $truc==123. Si tu oublies un = dans ce cas, tu auras forcément une erreur de compilation.
Modifié par QuentinC (13 Aug 2015 - 21:19)
QuentinC a écrit :
Il existe une petite astuce très simple pour ne plus se faire avoir, si tu n'arrives pas à te débarrasser définitivement de cette erreur de débutant: prendre l'habitude d'écrire systématiquement 123==$truc plutôt que $truc==123. Si tu oublies un = dans ce cas, tu auras forcément une erreur de compilation.

Très astucieux, en effet!
Mais ça très longtemps que j'écris
if(variable = constante)
dans une foultitude de langages de programmation, et les deux seuls que j'utilise qui ont besoin d'un double = sont le JS et le PHP (le langage C et ses dérivés sont apparus quand j'avais près de 50 ans). J'ai pris d'autres habitudes, un peu difficile d'en changer à mon âge, c'est déjà un challenge d'arriver à suivre à peu près les évolutions techniques...
Salut à tous,

Juste pour revenir sur un point qui bloquait la déclaration de la variable $annee au début de la discussion : la condition du if n'était jamais remplie car la variable $_POST['valider'] n'est jamais envoyée par le formulaire.
<input type="submit" value="Rechercher" title="Valider"/>
Il aurait dès le début fallu ajouter l'attribut
name='valider'
pour vérifier si le formulaire avait bien été envoyé et du coup, en corrigeant le problème de concaténation du début toit aurait mieux fonctionné.

Par ailleurs, QuentinC, ton astuce est cool et on s'est tous fait avoir au moins fois par un '=' au lieu d'un '=='...
Modifié par MatthieuR (13 Aug 2015 - 23:18)
Pages :