[Autocomplétion] Simplification du code
Bonjour,
Je fais une modification à notre outil de gestion du club.
Au lieu de faire des choix déroulants pour chaque catégorie, je voudrait passer à 7 champs d'autocomplétion qui peuvent sélectionner tous les articles.
Mon script fonctionne très bien, mais vu la répétition du code, je me demande s'il n'y a pas moyen de simplifier cette partie :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <script>
$(function() {
$("#article1").autocomplete({ source: "./pages/cours/autocompletion/auto_choix_article.php", minLength: 3, });
});
$(function() {
$("#article2").autocomplete({ source: "./pages/cours/autocompletion/auto_choix_article.php", minLength: 3, });
});
$(function() {
$("#article3").autocomplete({ source: "./pages/cours/autocompletion/auto_choix_article.php", minLength: 3, });
});
$(function() {
$("#article4").autocomplete({ source: "./pages/cours/autocompletion/auto_choix_article.php", minLength: 3, });
});
$(function() {
$("#article5").autocomplete({ source: "./pages/cours/autocompletion/auto_choix_article.php", minLength: 3, });
});
$(function() {
$("#article6").autocomplete({ source: "./pages/cours/autocompletion/auto_choix_article.php", minLength: 3, });
});
$(function() {
$("#article7").autocomplete({ source: "./pages/cours/autocompletion/auto_choix_article.php", minLength: 3, });
});
</script> |
La requête MySQL est dans cette page auto_choix_article.php
Les 7 articles sont sous forme d'un formulaire par une boucle et c'est évidemment l'ID qui rempli l'autocomplétion : je pourrais en mettre plus au besoin, la variable $nbr_autocompletion est en début de page
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?php
$nbr_autocompletion=7;
for ($z=1;$z<=$nbr_autocompletion;$z ++) {
$nom_article='article'.$z;
$paiement_article='paiement'.$z;
$paiement_article_post='check'.$z;
$$paiement_article_post='L';
if (isset($_POST[$nom_article]) && $_POST[$nom_article]!='') { $article=$_POST[$nom_article]; }
else { unset($_POST[$paiement_article]); }
print "<div class=\"div_right_20\">";?>
<font class="texte_Bleu_11-1">L <input type="radio" name="<?php echo $paiement_article ?>" value="L" <?php if ($_POST[$paiement_article]=='L') { echo 'checked=checked'; } ?> /></font>
<?php if ($s_prop_actif_type=='CA' || $s_prop_actif_type=='CE') {?>
<font class="texte_Bleu_11-1">B <input type="radio" name="<?php echo $paiement_article ?>" value="B" <?php if ($_POST[$paiement_article]=='B') { echo 'checked=checked'; } ?> /></font>
<?php } ?>
<font class="texte_Bleu_11-1">BC <input type="radio" name="<?php echo $paiement_article ?>" value="BC" <?php if ($_POST[$paiement_article]=='BC') { echo 'checked=checked'; } ?> /></font> <?php
print "</div>";
print "<div class=\"div_left_15\" align=\"right\">Article $z : </div>";
print "<input type=\"text\" name=\"$nom_article\" class=\"champ_form\" size=\"72\" id=\"$nom_article\" value=\"$article\" />";
print "<div class=\"div_space_5\"> </div>";
unset($article);
}
print "<div class=\"div_left_25\" align=\"right\"> </div>";
print "<div class=\"div_left_70\">";
print "<br /><span class=\"texte_GrisClair_11-1\">A partir de <strong>3 caractères</strong>, il y a une recherche automatique</span>";
print "</div>";
print "<div class=\"div_space_10\"> </div>";
?> |
Le formulaire n'est pas encore à 100% terminé : je dois encore faire le premier mode de paiement sur "L" et faire tout en PHP (enlever l'HTML).
En cas d'erreur dans l'envoi, je garde les valeurs envoyées ... rappeler le formulaire efface tout.
Serait-il possible de faire également une boucle comme le formulaire pour le script, avec la même variable de nombre ?
Merci pour votre aide
ddaweb