Boucles avec des conditions en OR (et explication des critères) - commentaires Boucles avec des conditions en OR (et explication des critères) 2021-06-28T09:32:49Z https://files.spip.org/Boucles-avec-des-conditions-en-OR-et-explication-des#comment508684 2021-06-28T09:32:49Z <p>Exemple simple pour renvoyer un OR sur une requête de recherche classique.<br class="autobr"> On ajoute un filtre à la balise <code class="spip_code spip_code_inline" dir="ltr">#RECHERCHE</code> pour récupérer les mots recherchés.</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>/* * filtre à placer dans un fichier nomdevotreplugin_fonctions.php * Code dans le squelette, au dessus de la boucle * [(#SET{where, [(#RECHERCHE|requete_search)]})] * utilisation en critère de la boucle {where #GET{where}} * **/ function requete_search($recherche){ //le separateur est un espace par defaut $separator = ' '; //le separateur peut être un + if (strpos($recherche, '+') !== false) { $separator = '+'; } //recupere les mots de la recherche $mots_search = explode($separator, $recherche); $nb = count($mots_search); $requete = null; $i = 0; if($nb>0){ foreach ($mots_search as $mot){ if($i==0){ $requete = "<code class="spip_code spip_code_inline" dir="ltr">name</code> LIKE "."'%".$mot."%' "; } if($i>0){ $requete .= " OR <code class="spip_code spip_code_inline" dir="ltr">name</code> LIKE "."'%".$mot."%' "; } $i++; } } return $requete; }</code></pre></div> Boucles avec des conditions en OR (et explication des critères) 2019-10-05T12:45:08Z https://files.spip.org/Boucles-avec-des-conditions-en-OR-et-explication-des#comment502618 2019-10-05T12:45:08Z <p>Depuis, de l'eau coulé sous les ponts, et on a maintenant un joli critère <a href="https://www.spip.net/fr_article6396.html" class="spip_out" rel='nofollow external'><code class="spip_code spip_code_inline" dir="ltr">{where}</code></a> <br class="manualbr">Trop beau SPIP 💗</p> Boucles avec des conditions en OR (et explication des critères) 2015-07-09T17:27:25Z https://files.spip.org/Boucles-avec-des-conditions-en-OR-et-explication-des#comment482907 2015-07-09T17:27:25Z <p>Bonjour,</p> <p>en prenant exemple sur cet excellent tutoriel, je me suis fabriqué un critère</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>{membres ...}</code></pre></div> <p>Destiné à être exclusivement utilisé sur les tables d'une base de données externe, ce critère prend obligatoirement ou bien le paramètre 'actuels' ou bien 'anciens', i.e. les deux seules syntaxes autorisées sont :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>{membres actuels}</code></pre></div> <p>ou bien</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>{membres anciens}</code></pre></div> <p>Dans mon code j'ai un switch($quoi) qui me génère une requête SQL (très) différente suivant le paramètre donné en entrée ($quoi). Précisons ici que c'est une requête SQL qui ne contient pas les strings 'actuels' et 'anciens', parce que je veux conserver un certain niveau d'abstraction entre SPIP et ma base de données externes.</p> <p>A première vue, ça fonctionne bien, mais maintenant si j'essaye de faire</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>{membres #GET{type_membre}}</code></pre></div> <p>je me prends une erreur, car dans la variable $quoi, au lieu d'avoir la chaîne 'actuels', comme je m'y attendrais, j'ai à la place cette ligne de code PHP :</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>table_valeur($Pile["vars"], (string)'statut', null)</code></pre></div> <p>Or, le problème, c'est que je n'arrive pas à exécuter cette ligne de code PHP pour obtenir le contenu de ce #GET... J'ai bien essayé de faire</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>$quoi=eval("return ".$quoi.";");</code></pre></div> <p>mais ça ne fonctionne pas car apparemment $Pile n'est pas défini dans le contexte d'exécution de ma fonction critere_membres_dist()... Alors comment faire<small class="fine d-inline"> </small>? C'est grave docteur<small class="fine d-inline"> </small>?</p> Boucles avec des conditions en OR (et explication des critères) 2013-01-05T17:58:25Z https://files.spip.org/Boucles-avec-des-conditions-en-OR-et-explication-des#comment464258 2013-01-05T17:58:25Z <p>Génial<small class="fine d-inline"> </small>! merci<br class="autobr"> cette fonction m'a sauvé</p> <p>je l'ai adapté pour avoir plus de 2 champs <br class="autobr"> voici ma modif</p> <p>$c =array(«<small class="fine d-inline"> </small>'OR'<small class="fine d-inline"> </small>»,<br class="autobr"> array(«<small class="fine d-inline"> </small>'OR'<small class="fine d-inline"> </small>»,<br class="autobr"> array(«<small class="fine d-inline"> </small>'LIKE'<small class="fine d-inline"> </small>», « '$table.champ1' », « sql_quote('%' . $quoi . '%') »),<br class="autobr"> array(«<small class="fine d-inline"> </small>'LIKE'<small class="fine d-inline"> </small>», « '$table.champ2' », « sql_quote('%' . $quoi . '%') »)<br class="autobr"> ),<br class="autobr"> array(«<small class="fine d-inline"> </small>'OR'<small class="fine d-inline"> </small>»,<br class="autobr"> array(«<small class="fine d-inline"> </small>'LIKE'<small class="fine d-inline"> </small>», « '$table.champ3' », « sql_quote('%' . $quoi . '%') »),<br class="autobr"> array(«<small class="fine d-inline"> </small>'LIKE'<small class="fine d-inline"> </small>», « '$table.champ4' », « sql_quote('%' . $quoi . '%') »)<br class="autobr"> )<br class="autobr"> )<small class="fine d-inline"> </small>;</p> <p>si ça peut aider<br class="autobr"> bien cordialement</p> Boucles avec des conditions en OR (et explication des critères) 2012-05-11T06:03:53Z https://files.spip.org/Boucles-avec-des-conditions-en-OR-et-explication-des#comment457072 2012-05-11T06:03:53Z <p>Encore une fois parfaitement brillant. Juste à la portée de tous. Dit comme ça les choses sont tellement plus simples<small class="fine d-inline"> </small>! Bravo et merci :)</p> Boucles avec des conditions en OR (et explication des critères) 2012-02-06T11:25:40Z https://files.spip.org/Boucles-avec-des-conditions-en-OR-et-explication-des#comment454248 2012-02-06T11:25:40Z <p>Excellent tutoriel, merci<small class="fine d-inline"> </small>!</p>