Posté : 22-12-2010 13:39
Bonjour à tous,
J'ai plus d'info concernant le non-fonctionnement de NPDS Agenda.
En effet, celui-ci fonctionne sur la plupart des serveurs, mais pas sur certains. En fait, tant qu'un serveur mysql est configuré en mode "souple" (cas de 95% des serveurs), pas de pb, car MySQL "traduit" automatiquement le type de données qu'on lui donne pour un champ.
Mais si MySQL est en mode Strict, comme c'est le cas sur le serveur de ma société, là, ca plante.
Pour NPDS-Agenda, on a ce problème.
Exemple, ligne 723 du fichier admin/agenda.php
$result = mysql_query("update agenda_event set event_time1_t='$str T2', event_time2_t='$strT1', event_titre_a='$evttitre', event_desc_a='$evtdesc' , event_longdesc_a='$evtlongdesc', event_date_d='$strDate', event_topic_i='$evt topic', event_lieu_a='$evtlieu', event_group_i='$evtgroupe', event_visible_i='$ evtvisible' WHERE event_id_i=$eid");
La requête envoie des chaines de caractère pour les champs event_time1_t et event_time2_t. Hors, dans la BDD, ce sont des INT(6).
Par conséquent, pour être correctement programmée, la requête doit s'écrire :
$result = mysql_query("update agenda_event set event_time1_t=$strT 2, event_time2_t=$strT1, event_titre_a='$evttitre', event_desc_a='$evtdesc', ev ent_longdesc_a='$evtlongdesc', event_date_d='$strDate', event_topic_i='$evttopi c', event_lieu_a='$evtlieu', event_group_i='$evtgroupe', event_visible_i='$evtv isible' WHERE event_id_i=$eid");
En effet, même si PHP ignore les types de variable, et mysql aussi dans la plupart des cas, bien programmer, c'est aussi palier au côté laxiste des systèmes utilisés.
Toujours pour le même fichier, c'est aussi le cas ligne 805 :
$strSQL = "insert into agenda_event (event_date_d, event_titre_a, event_desc_a, event_longdesc_a, event_topic_i, event_lieu_a, event_time1_t, eve nt_time2_t, event_group_i, event_author_a, event_visible_i) values ('".$strDate ."','".$evttitre."','".$evtdesc."','".$evtlongdesc."','".$evttopic."','".$evtli eu."','".$strT2."','".$strT1."','".$evtgroup."','".$aid."','".$evtvisible."')";
doit s'écrire
$strSQL = "insert into agenda_event (event_date_d, event_titre_a, event_desc_a, event_longdesc_a, event_topic_i, event_lieu_a, event_time1_t, eve nt_time2_t, event_group_i, event_author_a, event_visible_i) values ('".$strDate ."','".$evttitre."','".$evtdesc."','".$evtlongdesc."','".$evttopic."','".$evtli eu."',".$strT2.",".$strT1.",'".$evtgroup."','".$aid."','".$evtvisible."')";
Si vous souhaitez un environnement de test en mode strict pour les modules, contactez-moi, je vous ferai un NPDS de démo sur lequel vous pourrez installer tous les modules que vous souhaitez pour ce genre de contrôle.
Boris
Message édité par : Boris / 22-12-2010 13:43 |