[SPIP Zone] Plugin Formulaires : Réponses invisibles dans l'espace privé sur hebergement Oleane

Salut,

J’ai ajouté un test de version de mysql dans exec/forms_reponses.php (ligne 128)

if (substr(spip_mysql_version(), 0, 1) == 3) {
$query = "SELECT r.*, a.nom, f.titre FROM spip_forms_donnees AS r LEFT JOIN spip_auteurs AS a USING (id_auteur), spip_forms AS f
WHERE r.id_form=f.id_form AND r.confirmation =‹ valide › AND r.statut <> ‹ poubelle › AND r.date > DATE_SUB(NOW(), INTERVAL 6 MONTH)
ORDER BY r.date DESC LIMIT « ._q($debut). », "._q($tranche);
}

else {
$query = "SELECT r.*, a.nom, f.titre FROM spip_forms_donnees AS r LEFT JOIN spip_auteurs AS a USING (id_auteur)
JOIN spip_forms AS f ON r.id_form=f.id_form
$where r.confirmation=‹ valide › AND r.date > DATE_SUB(NOW(), INTERVAL 6 MONTH)
ORDER BY r.date DESC LIMIT « ._q($debut). », "._q($tranche);
}

et dans inc/forms.php (ligne 295)

if (substr(spip_mysql_version(), 0, 1) == 3) {
$result = spip_query(« SELECT * FROM spip_forms_donnees_champs AS r, spip_forms_champs AS ch, spip_forms_donnees AS d
WHERE ch.champ=r.champ AND d.id_donnee = r.id_donnee AND d.id_form = ch.id_form AND r.id_donnee= »._q($id_donnee)." ORDER BY ch.rang");
}

else {
$result = spip_query(« SELECT * FROM spip_forms_donnees_champs AS r
JOIN spip_forms_champs AS ch ON ch.champ=r.champ
JOIN spip_forms_donnees AS d ON d.id_donnee = r.id_donnee
WHERE d.id_form = ch.id_form AND r.id_donnee= »._q($id_donnee)." ORDER BY ch.rang");
}

J’ai testé avec mysql 3.23 et mysql 4 cela semble fonctionner normalement.

Si cela te convient je peux aussi commiter les modifications. Si oui faut-il le faire pour toutes les versions 1.9.0 1.9.1 et 1.9.1 forms et tables ?

Christophe

Je pense que c’est un probleme de compatibilité avec MySql3.23 Essaye la requete dans ton phpmyadmin pour verifier.
Il faut peut être l’ecrire en spécifiant des INNER JOIN, ou plus certainement à l’ancienne mode sans JOIN (avec des FROM et WHERE uniquement).
Je n’ai plus de serveur en 3.23, j’ai donc renoncé à maintenir officiellement le plugin pour cette version, mais je suis preneur de tout patch correctif.
Je vais ajouter un avertissement de version dans le descriptif du plugin

Cédric

crichard@jalmus.net a écrit :

Bonjour,

Sur un site SPIP 1.9.2c [10268] hébérgé chez oleane les réponses aux
formulaires générés par le plugin Formulaires (1.9.1+) 0.302 ne sont
pas visibles

dans l’espace privé. Tout semble correct dans la base de donnée mais
la fonction Forms_extraire_reponse($id_donnee); ne renvoie rien.

Pour info la requete utilisée dans cette fonction est

$result = spip_query(« SELECT * FROM spip_forms_donnees_champs AS r
JOIN spip_forms_champs AS ch ON ch.champ=r.champ
JOIN spip_forms_donnees AS d ON d.id_donnee = r.id_donnee
WHERE d.id_form = ch.id_form AND
r.id_donnee= »._q($id_donnee)." ORDER BY ch.rang");

Quelqu’un a-t-il une idée d’où cette incompatibilié avec
l’hebergement Oleane pourrait-elle venir.

Version php 4.1.2

Mysql - 3.23.43-log

Version du client MySQL: 4.0.24


spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone