• # pas sa faute...

    Posté par (site web personnel, Mastodon) . En réponse au message [résolu] PHP7.3 et Mariadb - Gestion des erreurs de longueur des champs texte. Évalué à 2.

    Tout d'abord, les versions successives sont devenues de plus en plus strictes (c'est plus pro d'être moins laxiste.) Donc des choses qui passaient inaperçues avant remontent au fur et à mesure qu'on avance dans les versions (des « notices » qui deviennent des « warning » par exemple.) Du coup, il est possible que l'erreur existait déjà mais ne remontait ; même si je pense que le souci ne soit pas à ce niveau. Il est possible aussi que si ça remontait on ne l'ai jamais vu jusqu'à ce que tu captures les erreurs...
    Je soupçonne que ce soit plausiblement une amélioration du pilote (PDO-MySQL) qui du coup n'est plus silencieux sur ce genre de notification. Il est possible aussi que ça vienne du gestionnaire de bases de données : soit une évolution de version (avec de nouveaux paramètres), soit juste un changement des paramètres existants, dans les deux cas on a maintenant un avertissement là où on avait une troncature silencieuse.

    Si on reste sur cent-vingts caractères (mais ceci s'applique pour n'importe quelle longueur en fait) il faut déjà au niveau du formulaire le mentionner pour que les usagers n'aient pas de surprise.

    <input type=text name=note maxlength=120 />

    Les navigateurs pouvant ne pas respecter ou des esprits malins pouvant soumettre leur propre formulaire, il faut en plus :

    • soit ajouter dans l'explication du champ cette limitation (et là on peut se dispenser des traitements suivants et enregistrer directement la valeur tronquée –comme indiqué dans une autre réponse)
    • soit vérifier au niveau serveur et traiter le dépasser de l'une (ou) des façons suivantes :
      • remonter que l'enregistrement a été tronquée
      • ou lever une erreur et inviter à la correction
    • soit autre chose que je ne vois pas tout de suite

    "It is seldom that liberty of any kind is lost all at once." ― David Hume