Ajouter un champ dans la table spip_signatures - commentaires Ajouter un champ dans la table spip_signatures 2023-02-20T22:53:16Z https://files.spip.org/Ajouter-un-champ-dans-la-table#comment512757 2023-02-20T22:53:16Z <p>dans spip 4, est il possible de rajouter des champs supplémentaires au formulaire de pétition grace à champs extra<small class="fine d-inline"> </small>?</p> Ajouter un champ dans la table spip_signatures 2008-09-28T00:03:49Z https://files.spip.org/Ajouter-un-champ-dans-la-table#comment408844 2008-09-28T00:03:49Z <p>Bonjour et merci pour cette contrib'.</p> <p>Pourriez-vous préciser avec quelle version de spip l'ajout de champ selon cette méthode doit fonctionner<small class="fine d-inline"> </small>? En effet, le fichier « formulaire_signature.php » que j'utilise (1.9.1 ou 1.9.2) ne ressemble pas à ce qui est indiqué dans la contrib'. Le champ que j'ajoute n'est jamais inscrit dans la base lorsque je valide mon formulaire.</p> <p>Merci d'avance.</p> Ajouter un champ dans la table spip_signatures 2008-05-10T11:39:43Z https://files.spip.org/Ajouter-un-champ-dans-la-table#comment405845 2008-05-10T11:39:43Z <p>bonjour,</p> <p>contribution intéressante, mais j'avoue avoir eu beaucoup de difficultés pour l'utiliser : surtout par incompétence (nul n'est parfait), mais aussi parce qu'il y a beaucoup d'infos pas explicite (la première partie sur la modification de la base — cela a déjà été signalé dans les précédents commentaires, mais j'ai eu beau chercher ici ou là comme il a été proposé en réponse, pas moyen de trouver une contribution simple à mettre en œuvre pour que Spip fasse lui-même la modification de la table signatures), et aussi parce que cette contrib semble valable pour une version 1.9.2 (à propos : ce n'est indiqué nulle part) et qu'avec la version de développement il y a beaucoup de modifications qui rendent la mise en œuvre décrite difficile ou différente.</p> <p>Cela dit, j'ai essayé, mais ça ne marche qu'à moitié avec une version de développement récente. Je vous propose de donner ici ce que j'ai fait, si ça peut être utile et aussi pour avoir de l'aide pour terminer complètement : <br>- étape 1 : Le texte semble indiquer que l'ajout à mes_fonctions de</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>include ('ecrire/base/serial.php'); global $tables_principales; $tables_principales['spip_signatures']['field']['profession'] = "text NOT NULL";</code></pre></div> <p>va créer le champ profession, or il n'en est rien. J'ai laissé tomber l'ajout de la table en activant le plugin : trop compliqué pour moi. Du coup, j'ai ajouté le champ profession à la main avec phpmyadmin. S'il était possible d'avoir des infos plus explicites sur comment faire pour ajouter à ce plugin une mise à jour « automatique » de la base lors de son activation, on serait pas loin du nirvana<small class="fine d-inline"> </small>;-)<small class="fine d-inline"> </small>;</p> <p>2<sup class="typo_exposants">e</sup> étape : ok, ça marche.</p> <p>3<sup class="typo_exposants">e</sup> étape, point 1 : il m'a semblé que c'était incomplet. J'ai ajouté ici ou là le paramètre profession, car, ça ne marchait pas toujours. J'ai essayé en ajoutant là où ça me semblait nécessaire (qui a dit que je naviguais à vue<small class="fine d-inline"> </small>??) : <br>- ajout ligne 242 du fichier formulaire_signature.php le paramètre $profession</p> <p><code class="spip_code spip_code_inline" dir="ltr">if (!signature_a_confirmer($id_article, $url_page, $nom, $mail, $profession, $site, $url_site, $message, $lang, $passw))</code></p> <p>- ligne 245, même chose :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>$id_signature = sql_insertq('spip_signatures', array( 'id_article' => $id_article, 'date_time' => 'NOW()', 'statut' => $passw, 'ad_email' => $mail, 'profession' => $profession, 'url_site' => $url_site));</code></pre></div> <p><br>- ligne 253, même chose :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code> if (!$id_signature) return _T('form_pet_probleme_technique'); include_spip('inc/modifier'); revision_signature($id_signature, array( 'nom_email' => $nom, 'ad_email' => $mail, 'profession' => $profession, 'message' => $message, 'nom_site' => $site, 'url_site' => $url_site ));</code></pre></div> <p><br>- ligne 267, même chose : <br class="autobr"> <code class="spip_code spip_code_inline" dir="ltr">function signature_a_confirmer($id_article, $url_page, $nom, $mail, $profession, $site, $url, $msg, $lang, $passw)</code></p> <p>- ligne 280, même chose :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code> $r = _T('form_pet_mail_confirmation', array('titre' => $titre, 'nom_email' => $nom, 'profession' => $profession, 'nom_site' => $site, 'url_site' => $url, 'url' => $url_page, 'message' => $msg));</code></pre></div> <p>Encore une fois, n'étant pas très compétent en php, je n'ai pas compris ce qui est <i>vraiment</i> nécessaire ou pas (à un moment de mes tests, la saisie « profession » n'était pas enregistrée dans la base, après ces ajouts, elle l'est) : l'avis sur ces ajouts (ou pas) de quelqu'un de plus compétent sera utile.</p> <p>- 3<sup class="typo_exposants">e</sup> étape point 2 : la version dev ne comporte plus les lignes « $messagesx... » et je n'ai pas trouver ce qu'il fallait modifier pour que l'info profession soit ajoutée dans le mail (elle n'est jamais envoyée pour le moment).</p> <p>- 3<sup class="typo_exposants">e</sup> étape point 3 : là aussi le fichier modifier.php a été modifié — le comble de l'ironie<small class="fine d-inline"> </small>? — et si je modifie la fonction revision_signature de la manière indiquée, à la signature de la pétition, j'obtiens une erreur php « Fatal error : Call to undefined function controler_md5() in ..../inc/modifier.php on line 103 ». Un probleme de sécurité<small class="fine d-inline"> </small>? Enfin, bref, là non plus, je ne comprends pas ce qu'il faut modifier. Un conseil serait le bienvenu...</p> <p>- dernière étape : ça roule.</p> <p>voilà, j'espère que c'est clair et peut-être utile. S'il est possible d'avoir quelques conseils sur ce qu'il faut modifier ou pas avec la version développement de la part des auteurs de cette contribution, ce serait chouette<small class="fine d-inline"> </small>! :)</p> <p>merci d'avance</p> concerne la premiere étape du tutoriel 2008-01-30T11:02:24Z https://files.spip.org/Ajouter-un-champ-dans-la-table#comment402643 2008-01-30T11:02:24Z <p>Hello,</p> <p>La 1<sup class="typo_exposants">re</sup> étape concerne juste la partie ou on ajoute le champ à la table, et on l'a pas trop développée parce qu'il y a déjà plein de contribs sur le sujet (faire une recherche sur « nouvelle table spip » par exemple).</p> <p>Sinon, oui il faut bien mettre les 3 lignes. Et justement regardes comment c'est fait dans serial.php d'origine<small class="fine d-inline"> </small>; le fait de mettre ces instructions dans les fonctions (du site ou du plugin) évite de modifier serial.php.</p> <p>A+</p> <p>Cyril</p> concerne la premiere étape du tutoriel 2008-01-29T22:41:31Z https://files.spip.org/Ajouter-un-champ-dans-la-table#comment402632 2008-01-29T22:41:31Z <p>salut, si il faut mettre les 3 lignes, et non pas besoin de modifier serial.php</p> concerne la premiere étape du tutoriel 2008-01-29T19:40:20Z https://files.spip.org/Ajouter-un-champ-dans-la-table#comment402628 2008-01-29T19:40:20Z <p>Accepterais tu de développer la premiere étape, ce qu'il faut rajouter dans le fichier mes_fonctions.php<small class="fine d-inline"> </small>?</p> <p>Je suis plutot novice et je ne comprends pas s'il faut mettre ces trois lignes :</p> <blockquote class="spip"> <p>include ('ecrire/base/serial.php')<small class="fine d-inline"> </small>;<br class="autobr"> global $tables_principales<small class="fine d-inline"> </small>;<br class="autobr"> $tables_principales['spip_signatures']['field']['profession'] = « text NOT NULL »<small class="fine d-inline"> </small>;</p> </blockquote> <p>Ou bien s'il faut en choisir une<small class="fine d-inline"> </small>? Par ailleurs, faut il modifier le fichier serial.php ou pas<small class="fine d-inline"> </small>?</p> <p>Merci pour ton éclaircissement</p> <p>et merci pour ce tutoriel fort intéressant car tres concret<small class="fine d-inline"> </small>!</p>