SPIP-Contrib - commentairesUn formulaire C.V.T avec Saisies par l'exemple2020-05-05T20:20:12Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment5050662020-05-05T20:20:12Z<p>Bonjour,</p>
<p>Je crois bien qu'il y a dans cet article une parenthèse de trop à la fin du premier script php <br class="autobr">
«<small class="fine d-inline"> </small>Première étape : déclarer ces champs comme des saisies à l'aide d'un tableau PHP [1], dans film.php :»</p>Un formulaire C.V.T avec Saisies par l'exemple2019-11-24T13:48:23Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment5031462019-11-24T13:48:23Z<p>Bonjour,<br class="autobr">
J'ai fini par reprendre le tableau de $mes_saisies tel quel et d'en faire une modification pour être sur que ça passe. Probablement une parenthèse en plus ou en moins, mes vieux yeux en sont surement la cause. Merci anyway.</p>Un formulaire C.V.T avec Saisies par l'exemple2019-11-22T11:59:59Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment5031372019-11-22T11:59:59Z<p>peux tu nous envoyer ton code<small class="fine d-inline"> </small>? on pourra voir s'il y a des choses qui clochent :)</p>Un formulaire C.V.T avec Saisies par l'exemple2019-11-22T10:57:52Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment5031362019-11-22T10:57:52Z<p>Bonjour. Je suis extrèmement malheureux, car je n'arrive pas depuis de nombreuses années à créer un formulaire tout simple avec SAISIES. Comme je ne suis pas du genre à me laisser faire, j'ai donc décidé de prendre le taureau par les cornes et de débuter le plus simplement du monde en recopiant le code de ce tutoriel (j'ai expurgé la section concernant le input) pour au moins réussir à afficher le formulaire (donc jusqu'à charger). Et comme il faut faire proprement les choses, je l'ai fait sur un spip tout neuf (3.2.5) avec la version SAISIES qui lui est contemporaine. <br class="autobr">
Mais même là, rien ne s'affiche après que la fonction chargée ait été enregistrée, que ce soit avec la balise #FORMULAIRE_FILM ou <code class="spip_code spip_code_inline" dir="ltr"><formulaire|film></code>.</p>
<p>J'ai donc une seule question qui me pose problème : comment puis-je réellement apprendre à utiliser ce rétif SAISIES<small class="fine d-inline"> </small>?</p>
<p>PS J'ai perdu tous mes cheveux, je ne risque donc plus grand chose. Donc merci pour vos aides.</p>
<p>PPS : La chose la plus surprenante est que les fichiers proposés n'ont aucune différente lorsqu'on les compare à ceux copié-collés, et pourtant ceux-ci fonctionnent.</p>Un formulaire C.V.T avec Saisies par l'exemple2019-10-26T15:20:10Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment5028082019-10-26T15:20:10Z<p>j'ai trouvé ... pour traiter le cas ou aucun choix n'est fait, ou un choix, ou plusieurs choix <br class="autobr"> il faut mettre dans la fonction traiter_dist dans le fichier formulaire/ editer....php</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>if (_request('lavar')!="") { set_request('lavar' , implode(',', _request('lavar')));
}</code></pre></div>Un formulaire C.V.T avec Saisies par l'exemple2019-10-22T16:31:02Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment5027662019-10-22T16:31:02Z<p>Bonjour,<br class="autobr">
je fais un plugin avec la fabrique. J'ai la saisie rubrique_article et j'ai une saisie avec une checkbox.<br class="autobr">
dans la fonction formulaires_editer_blocs_parametre_traiter_dist j'ai bien mis <br class="autobr"> set_request('variante' , implode(',', _request('variante')))<small class="fine d-inline"> </small>; pour la checkbox<br class="autobr"> set_request('lesobjets', implode(',', _request('lesobjets')))<small class="fine d-inline"> </small>; pour les objets rubrique et article</p>
<p>cela fonctionne bien si je sélectionne un ou plusieurs éléments mais j'ai une erreur à l'enregistrement si je n'en sélectionne aucun ... <br class="autobr">
avez vous une idée du pb.<br class="autobr">
merci</p>Un formulaire C.V.T avec Saisies par l'exemple2017-01-31T07:53:50Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4908372017-01-31T07:53:50Z<p>C'est tout l'intérêt des <i>Saisies</i> et le plugin <u><a href='https://files.spip.org/Champs-Extras-Interface' class="spip_in" rel='nofollow'>Champs Extra</a></u> devrait répondre à ta problématique</p>Un formulaire C.V.T avec Saisies par l'exemple2017-01-30T19:13:51Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4908352017-01-30T19:13:51Z<p>merci,</p>
<p>je voulais dire : les données titre, année, genre ne sont pas des colonnes de la table articles</p>
<p>je suppose qu'il faut créer une nouvelle table ...<br class="autobr">
là, c'est difficile, j'ai trouvé de la vielle doc (art de marcilla ...) avec une vieille version de spip</p>
<p>en v3, ca à changé ... si tu connais une bonne doc pour ajouter un champ dans la table articles (exemple no tél) alors merci d'avance</p>Un formulaire C.V.T avec Saisies par l'exemple2017-01-30T07:57:21Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4908212017-01-30T07:57:21Z<p>Salut,</p>
<p>Le traitement des données n'est pas abordé ici, c'est juste un exemple pour essayer de comprendre comment fonctionnent les «<small class="fine d-inline"> </small>saisies<small class="fine d-inline"> </small>». Tu peux les enregistrer dans la base, les faire traiter par un plugin (pipeline) ou autre...</p>
<p>Pour le 2è point, je ne comprends pas la question <code class="spip_code spip_code_inline" dir="ltr">(o:</code></p>Un formulaire C.V.T avec Saisies par l'exemple2017-01-29T11:57:06Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4908122017-01-29T11:57:06Z<p>Bonjour,</p>
<p>dans votre cours, vous avez créé un formulaire pour saisie de données</p>
<p>mais après, qu'est-ce qu'on fait des données</p>
<p>dans article y a pas de place pour ces types de données<small class="fine d-inline"> </small>?</p>
<p>merci</p>Un formulaire C.V.T avec Saisies par l'exemple2014-03-21T20:34:27Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4745672014-03-21T20:34:27Z<p>Une question vue ici aussi : <a href="http://contrib.spip.net/La-Fabrique#forum469283" class="spip_out" rel='nofollow external'>La fabrique/forum469283</a><br class="autobr">
J'utilise aussi le selecteur d'article. Dans mon cas, l 'erreur md5 est générée par la fonction vérifier() de CVT.<br class="autobr">
La transformation :<br class="autobr">
<code class="spip_code spip_code_inline" dir="ltr">set_request('champ', implode(",", _request('champ')));</code></p>
<p>doit donc être appliquée dans la fonction <br class="autobr">
<code class="spip_code spip_code_inline" dir="ltr">formulaires_editer_Nom_de_l_Objet_vérifier() </code></p>
<p>avant l'appel à la fonction générique <br class="autobr">
<code class="spip_code spip_code_inline" dir="ltr">formulaires_editer_objet_verifier()</code></p>
<p>cause : <code class="spip_code spip_code_inline" dir="ltr">controler_md5()</code> n'accepte pas de tableau pour la valeur d'un champ, il y a peut-être une autre fonction plus adaptée.</p>Un formulaire C.V.T avec Saisies par l'exemple2014-02-08T12:58:53Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4737702014-02-08T12:58:53Z<p>As-tu trouvé la réponse à ta question<small class="fine d-inline"> </small>? J'ai le même problème avec selecteur_article et la Fabrique</p>Un formulaire C.V.T avec Saisies par l'exemple2013-10-06T03:49:07Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4713612013-10-06T03:49:07Z<p>Bonjour à vous</p>
<p>J'ai un soucis avec 2 champs de formulaire, checkbox et selection_multiple<br class="autobr">
Voici la réponse à l'enregistrement :<br class="autobr">
Warning : md5() expects parameter 1 to be string, array given in /Users/christophevandewalle/Sites/kisetou/ecrire/inc/editer.php on line 355</p>
<p>Warning : md5() expects parameter 1 to be string, array given in /Users/christophevandewalle/Sites/kisetou/ecrire/inc/editer.php on line 355</p>
<p>Warning : addslashes() expects parameter 1 to be string, array given in /Users/christophevandewalle/Sites/kisetou/ecrire/req/mysql.php on line 1186</p>
<p>Warning : Cannot modify header information - headers already sent by (output started at /Users/christophevandewalle/Sites/kisetou/ecrire/inc/editer.php:355) in /Users/christophevandewalle/Sites/kisetou/ecrire/inc/actions.php on line 89</p>
<p>Quelqu'un aurai une idée<small class="fine d-inline"> </small>?<br class="autobr">
Merci</p>
<p>Spip 3.0.11<br class="autobr">
Saisies 1.35.0<br class="autobr">
Yaml 1.5.1</p>Un formulaire C.V.T avec Saisies par l'exemple2013-08-23T09:26:13Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4702982013-08-23T09:26:13Z<p>c'est une sorte de chat autour de spip. En général il y a tjr des gens pour répondre. <a href="http://webchat.freenode.net/?channels=%23spip" class="spip_url spip_out auto" rel="nofollow external">http://webchat.freenode.net/?channels=%23spip</a></p>Un formulaire C.V.T avec Saisies par l'exemple2013-08-23T09:21:03Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4702972013-08-23T09:21:03Z<p>heu question encore plus bête : c est quoi l'irc<small class="fine d-inline"> </small>??</p>Un formulaire C.V.T avec Saisies par l'exemple2013-08-23T09:17:14Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4702952013-08-23T09:17:14Z<p>bonjour,</p>
<p>il faudrait voir un peu votre état actuel de cvt + html. Je vous conseille par ailleurs de passer sur l'irc de spip : il y aura sans doute des gens très compétence pour vous répondre.</p>Un formulaire C.V.T avec Saisies par l'exemple2013-08-23T09:12:20Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4702942013-08-23T09:12:20Z<p>Bonjour à tous,<br class="autobr">
4 jours que moi et mon collègues essayons de faire quelque chose qui conceptuellement est basique mais en vain : afficher dans le .html les résultats d'un formulaire de choix après traitement par le .php associé.</p>
<p>En clair nous avons créé un formulaire de choix qui, après sélection des critères choisis par l' utilisateur, va générer la requête SQL à notre banque de données.<br class="autobr">
les fonctions charger() et verifier() marchent (tests avec return() et autres messages d'erreurs qui s affichent aux moments attendus). traiter() fonctionne aussi (là aussi vérifié grâce a des return).<br class="autobr">
Ce que nous souhaiterions faire c'est retourner sur notre page de formulaire après traitement des données et afficher nos résultats qui sont tous stockés dans un tableau 'resultats'.<br class="autobr">
En bref il faudrait que depuis le html, SPIP recupère le tableau 'resultats', le parcourt et affiche tous ses éléments.<br class="autobr">
Nous avons déjà tenté les pistes :<br class="autobr">
#ENV (sur le modèle de l'affichage des erreurs dans le formulaire tel que présenté dans le tuto (<a href="http://programmer3.spip.net/Gerer-le-retour-d-erreurs" class="spip_url spip_out auto" rel="nofollow external">http://programmer3.spip.net/Gerer-le-retour-d-erreurs</a>)<br class="autobr">
#SET et #GET mais on a un peu de mal avec la syntaxe pour que SPIP comprenne où sont les éléments de notre tableau 'resultats'.</p>
<p>Merci d'avance. Espérons que le problème soit réglé avant le week-end. :))</p>Un formulaire C.V.T avec Saisies par l'exemple2011-05-12T16:13:06Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4455192011-05-12T16:13:06Z<p>as-tu essayé <code class="spip_code spip_code_inline" dir="ltr">set_request('champ','valeur')</code><small class="fine d-inline"> </small>?</p>
<p>à définir avant le retour de Traiter, avec :</p>
<ul class="spip"><li> champ = un champ qui va recevoir ton ID (doit être déclaré dans Charger)</li><li> valeur = l'ID retourné par <code class="spip_code spip_code_inline" dir="ltr">sql_insertq</code></li></ul>Un formulaire C.V.T avec Saisies par l'exemple2011-05-12T15:04:17Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4455162011-05-12T15:04:17Z<p>Bonjour,</p>
<p>merci, j'avais trouvé ça aussi. Ce que je sais pas c'est comment utiliser cette valeur pour la retourner dans ma page web après validation du formulaire .... j'arrive à retourner message_ok mais pas ça ....<small class="fine d-inline"> </small>????</p>
<p>Merci d'avance.<br class="autobr">
RB</p>Un formulaire C.V.T avec Saisies par l'exemple2011-05-11T15:45:57Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4454592011-05-11T15:45:57Z<p>Bonjour,</p>
<p>Pour l'insertion des valeurs dans la BDD, j'utilise cette fonction : <a href="http://doc.spip.org/@sql_insertq" class="spip_url spip_out auto" rel="nofollow external">http://doc.spip.org/@sql_insertq</a> <br class="manualbr">comme ça :</p>
<div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>$id = sql_insertq($table, $champs_valeurs);</code></pre></div>Un formulaire C.V.T avec Saisies par l'exemple2011-05-11T13:38:36Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4454502011-05-11T13:38:36Z<p>Bonjour,<br class="autobr">
après validation du formulaire et insertion en bdd, comment récupérer dans la page publique l'id de l'enregistrement créé<small class="fine d-inline"> </small>?</p>
<p>Merci,<br class="autobr">
RB</p>Un formulaire C.V.T avec Saisies par l'exemple2011-04-16T13:04:33Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4444282011-04-16T13:04:33Z<p>Pour compléter le message de Rastapopoulos et pour ceux qui cherchent, la doc, c'est par là pour l'instant : <a href="http://www.spip-contrib.net/Doc-Saisies-complementaire" class="spip_url spip_out auto" rel="nofollow external">http://www.spip-contrib.net/Doc-Saisies-complementaire</a></p>Un formulaire C.V.T avec Saisies par l'exemple2011-03-15T20:47:34Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4426442011-03-15T20:47:34Z<p>Nan nan :</p>
<div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>function formulaires_film_saisies_dist(){ return array( // le tableau de saisies );
}</code></pre></div>
<p>Ça c'est LA bonne méthode propre depuis la 1.9.0. :)</p>
<p>À tester/améliorer si besoin, mais normalement ça fait tout charger() et tout verfier() tout seul. En tout cas les besoins de base. Et à documenter ensuite... :)</p>Un formulaire C.V.T avec Saisies par l'exemple2011-03-15T18:37:28Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4426382011-03-15T18:37:28Z<p>Salut et merci pour cette note.</p>
<p>Je suis super embêter j'ai fait un peu la même chose mais je n'arrive pas à insérer en bdd.<br class="manualbr">Tout est bon sauf ma fonction _traiter, pourriez vous m'aider<small class="fine d-inline"> </small>? Auriez vous une idée<small class="fine d-inline"> </small>?</p>
<div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>function formulaires_voter_traiter_dist($id_article,$id_auteur) { $matable = array(<code class="spip_code spip_code_inline" dir="ltr">id_vote</code>, <code class="spip_code spip_code_inline" dir="ltr">id_article</code>, <code class="spip_code spip_code_inline" dir="ltr">id_auteur</code>, <code class="spip_code spip_code_inline" dir="ltr">real</code>, <code class="spip_code spip_code_inline" dir="ltr">image</code>, <code class="spip_code spip_code_inline" dir="ltr">jeu</code>, <code class="spip_code spip_code_inline" dir="ltr">scenar</code>, <code class="spip_code spip_code_inline" dir="ltr">amour</code>, <code class="spip_code spip_code_inline" dir="ltr">total</code>, <code class="spip_code spip_code_inline" dir="ltr">commentaire</code>, <code class="spip_code spip_code_inline" dir="ltr">date</code>); $where = array('id_article = '.$id_article ,'id_auteur = '.$id_auteur); $real = _request('real'); $image = _request('image'); $jeu = _request('jeu'); $scenar = _request('scenar'); $amour = _request('amour'); $commentaire = _request('commentaire'); $total = $real + $image + $jeu + $scenar + $amour; if (!sql_countsel("spip_votes_films", $where)) { $res = sql_select('id_vote','spip_votes_films'); $id_vote = sql_countsel('spip_votes_films') +1; $champs = array( 'id_vote'=>$id_vote, 'id_article'=>$id_article, 'id_auteur'=>$id_auteur, 'real'=>$real, 'image'=>$image, 'jeu'=>$jeu, 'scenar'=>$scenar, 'amour'=>$amour, 'total'=>$total, 'commentaire'=>sql_quote($commentaire), 'date'=> date('Y-m-d H:i:s') ); sql_insertq("spip_votes_films",$champs); } else { $id_vote = sql_select($matable,'spip_votes_films', $where); $champs = array( 'id_vote'=>$id_vote, 'id_article'=>$id_article, 'id_auteur'=>$id_auteur, 'real'=>$real, 'image'=>$image, 'jeu'=>$jeu, 'scenar'=>$scenar, 'amour'=>$amour, 'total'=>$total, 'commentaire'=>sql_quote($commentaire), 'date'=> date('Y-m-d H:i:s') ); sql_updateq('spip_votes_films',$champs,$where); } // return array('message_ok'=>'Votre message a bien été pris en compte. Vous recevrez prochainement une réponse !');</code></pre></div>Un formulaire C.V.T avec Saisies par l'exemple2011-03-15T00:03:10Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4425842011-03-15T00:03:10Z<p>On peut encore améliorer les choses pour la partie charger du formulaire. En effet, saisies fournit une fonction <code class="spip_code spip_code_inline" dir="ltr">saisies_charger_champs()</code>. Dès lors, la fonction charger peut devenir :</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function mes_saisies_film() { $mes_saisies = array ( ... ); return $mes_saisies;
}
function formulaires_film_charger_dist() {
// on charge les saisies et les champs include_spip('inc/saisies'); $mes_saisies = mes_saisies_film(); $contexte = saisies_charger_champs($mes_saisies); $contexte['mes_saisies'] = $mes_saisies; return $contexte;
}</code></pre></div>Un formulaire C.V.T avec Saisies par l'exemple2011-03-14T23:32:41Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4425832011-03-14T23:32:41Z<p>Il y a déjà une fonction pour ça dans Saisies. :)</p>
<p>Mais surtout je rappelle que depuis la version 1.9 Saisies permets même de faire un CVT sans ni la fonction charger() ni la fonction verifier()<small class="fine d-inline"> </small>!</p>
<p>Uniquement en déclarant une fonction « formulaires_montruc_saisies() » cf la doc et l'exemple.</p>Un formulaire C.V.T avec Saisies par l'exemple2011-03-14T20:03:33Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4425782011-03-14T20:03:33Z<p>Autre chose, sachant que tu peux passer une valeur par défaut dans une saisie, tu pourrais lister tous les champs à utiliser et leurs valeurs par défaut également dans le charger(). Je me demande si Rastapopoulos a fait une fonction pour cela dans saisies.</p>Un formulaire C.V.T avec Saisies par l'exemple2011-03-14T19:56:24Zhttps://files.spip.org/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple#comment4425772011-03-14T19:56:24Z<p>Sympa. D'autant plus que je ne connaissais pas <code class="spip_code spip_code_inline" dir="ltr">saisies_verifier($mes_saisies);</code></p>
<p>Je pense par contre qu'il vaudrait mieux passer dans charger() «<small class="fine d-inline"> </small>_saisies<small class="fine d-inline"> </small>» ou «<small class="fine d-inline"> </small>_mes_saisies<small class="fine d-inline"> </small>» plutôt que «<small class="fine d-inline"> </small>saisies<small class="fine d-inline"> </small>» ou «<small class="fine d-inline"> </small>mes_saisies<small class="fine d-inline"> </small>» : le souligné en premier indique à SPIP de ne pas effectuer de traitements automatiques sur les données (<a href="http://programmer.spip.org/Charger-les-valeurs-du-formulaire" class="spip_url spip_out auto" rel="nofollow external">http://programmer.spip.org/Charger-les-valeurs-du-formulaire</a>).</p>