Rafraichissement d'une liste

Eléphant du PHP | 226 Messages

22 juin 2010, 10:33

Bonjour,

J'ai un formulaire dans lequel se trouve une liste. Le contenu de cette liste, des numéros de bon de commande, est généré par une requête sql:
<form action="#" method="post" name="choiceNBonCom" id="choiceNBonCom">
    <select name="listeNBonCom" id="listeNBonCom">
        ...
        <?php
        while ($data = mysql_fetch_array($result)) {
            echo '<option value="'.$data['nBonCom'].'">'.$data['nBonCom'].'</option>';
        }?>
    </select>
...
    <input type="submit" name="transfertNBonCom" id="transfertNBonCom" value="Ok">
La soumission du formulaire passe par ce javascript:

Code : Tout sélectionner

$(function(){ $("#choiceNBonCom").submit(function(){ ... $.post("fonctionsBonCom.php", $("#choiceNBonCom").serialize(), function(data){ ... if(data != "ok"){ $("#content").show().append(data); } else{ $("#content").show().append("...'") } }); return false; }); });
fonctionsBonCom.php va copier ces bons de commande et leur contenu dans une autre table, et les supprimer dans la première.
Tout cela fonctionne bien, sauf que la liste n'est pas mise à jour. Le bon de commande est supprimé, mais il ne disparaît pas de la liste. Etant donné que le soumission du formulaire est neutralisée par jquery, il n'y a plus de rafraichissement de la page. Comment puis-je faire alors sachant que je suis débutant dans l'emploi de jquery. Merci,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

ViPHP
ViPHP | 3607 Messages

22 juin 2010, 17:00

Bonjour, il faudrait supprimer le "noeud" de l'option qui a été traitée, la méthode $.remove() peut-être utilisée à mon avis, ce qui donnerais:

Code : Tout sélectionner

$(function(){ $("#choiceNBonCom").submit(function(){ ... $.post("fonctionsBonCom.php", $("#choiceNBonCom").serialize(), function(data){ ... if(data == ''){ // error!! $('#infos').html('Le bon '+data+' n\'a pas pu être traité correctement!'); } else{ $("#listeNBonCom option[value="+data+"]").remove(); $('#infos').html('Le bon '+data+' a été traité!'); } }); return false; }); });
En admettant que ton script ajax renvoie soit la valeur qui vient d'être traitée (afin de pouvoir la supprimée dans le document) soit rien (=erreur)...
C'est pour principe, tu peux adapter tout ça à tes besoins ;)

Eléphant du PHP | 226 Messages

23 juin 2010, 10:20

Extra!! Cela ouvre en plus des perspectives vraiment intéressantes! Merci bien!
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.