Bonjour à tous,

Je suis débutant en Ajax mais j'ai vu les avantages d'utiliser cette technique et j'ai donc voulu m'y mettre

Voici mes codes ce sera plus simple pour expliquer :
La partie formulaire :

<form id="table-form<?php echo $temp;?>" action="edit.php" method="post" >
                <td><center>    <button id="<?php echo $temp;?>" class="gestion edit" type="button" value = "Edit" onclick="remplir(this);">Edit</button>
                                <input type="hidden" name="modification"  value="<?php echo $data['app_id']; ?>"/>

                                <button id="<?php echo $data['app_id']; ?> "class="gestion" type = "button" value="Delete" onclick="supp(this);">Delete</button>
                                <input type="hidden" name="suppression"  value="<?php echo $data['app_id']; ?>"/>

                </center></td>
                </form>

La partie Ajax :

function remplir(obj) {

                var id = obj.id;
                var $this = $('#table-form'+id);

                if(obj.value == "Delete")
                {
                    console.log("testbon");
                }

                 $(".load").show();

                $.ajax({
                    url: $this.attr('action'),
                    type: $this.attr('method'),
                    data: $this.serialize(),
                    dataType: 'json',
                    success: function(json) {
                        if(json.reponse == "ok")
                        {
                            console.log(json.id_app);
                            console.log(json.nom);
                            console.log(json.info_app);
                            console.log(json.app_url);
                            console.log(json.img_desc);

                            console.log('Suppression : '+json.test);

                            //document.getElementById("ecran").style.visibility = "visible";
                            //document.getElementById("popupedit").style.visibility = "visible";
                        }
                        if(json.reponse == "err")
                            {
                                console.log('ca marche');
                            }

                        $(".load").hide();
                    }

                });
            }

Et enfin la partie php :

<?php

    include('connex/connexion.php');

    if(isset($_POST['modification']))
        {
            $req = $bdd->prepare('SELECT DISTINCT * FROM applications,images WHERE app_id = :app_id AND img_app_id = :app_id');
            $req->bindParam(':app_id', $_POST['modification'], PDO::PARAM_INT);
            $req->execute();

                while($data = $req->fetch(PDO::FETCH_ASSOC))
                    {   
                        $id_app = $data['app_id'];
                        $app_name = $data['app_name'];
                        $app_info = $data['app_info'];
                        $app_url = $data['app_url'];
                        $img_desc = $data['img_desc'];
                    }

                        $reponse = 'ok';
                        $test = $_POST['suppression'];

            echo json_encode(['reponse' => $reponse, 'id_app' => $id_app, 'nom' => $app_name, 'info_app' => $app_info, 'app_url' => $app_url, 'img_desc' => $img_desc, 'test' => $test]);

        }

    if(isset($POST['suppression']))
    {
        $reponse = "err";

        echo json_encode(['reponse' => $reponse]);
    }

?>

Mon problème est simple, j'aimerai que lorsque que j'appuie sur le boutton Edit ma page PHP me selectionne tout dans ma table applications, ça c'est fonctionnel j'arrive à transmettre des données.

Mais lorsque que j'appuie sur le boutton Delete, le code PHP fais aussi la requete de selection.

Donc ma conclusion est que lors de l'appuie sur un des deux boutons, j'ai les deux variables $_POST qui se créent et que la première condition est toujours faite sans faire la deuxième du coup.

Je vous demande donc si quelqu'un voit une solution à ce problème ?

Merci d'avance.

7 réponses


betaWeb
Réponse acceptée

Beh évidemment puisque tu soumets le même formulaire pour les deux.
Sépares le tout en deux formulaires ce sera bien plus simple et plus lisible, surtout pour une opé aussi simple.

De plus, c'est normal qu'il te fasse les deux actions puisque lorsque tu soumets un formulaire il prend TOUS les champs, donc "modification" et "suppression".

PS: Quelle drôle d'idée d'utiliser des TD dans un formulaire ? Surtout que tu n'as pas de balise parente TABLE.

Hurobaki
Auteur

Bonjour,

C'est ce que je pensais faire vu que il y a forcément les deux variables $_POST mais bon on sait jamais si quelqu'un avait une solution miracle :)

Il me semble que c'est du jQuery, pourquoi ? Je ne suis pas assez bon pour être sûr qu'il est bon, il aurait quoi qui ne va pas ?

Je te conseille plutôt de faire comme ceci:
HTML

<!-- Formulaire pour la modification -->
<form id="table-form<?php echo $temp;?>-set" class="edit-form" action="edit.php" method="post" >
    <td>
        <center>            
            <input type="hidden" name="modification"  value="<?php echo $data['app_id']; ?>"/>
            <button id="<?php echo $temp;?>" class="gestion edit" type="submit">Edit</button>
        </center>
    </td>
</form>

<!-- Formulaire pour la suppression -->
<form id="table-form<?php echo $temp;?>-del" class="edit-form" action="edit.php" method="post" >
    <td>
        <center>            
            <input type="hidden" name="suppression"  value="<?php echo $data['app_id']; ?>"/>
            <button id="<?php echo $temp;?>" class="gestion edit" type="submit">Delete</button>
        </center>
    </td>
</form>

JS:

$('.edit-form').on('submit', function(e){
    e.preventDefault();
    // Ton traitement AJAX ici...
    return false;
});

D'ailleurs, tu n'as pas d'autres champs ?

Hurobaki
Auteur

J'avais vu aussi cette méthode, c'est mieux que de faire une fonction onclick() ?

Si j'en ai d'autre au-dessus mais ils ne me servent pas dans le formulaire, je récupère juste l'ID de mon application dans les INPUT et avec ça je peux sélectionner ou supprimer la bonne application.

Beh c'est plus propre selon moi, après c'est une question de feeling (je ne suis pas fan du JS inline dans le HTML).
Mais normalement, avec les modifs nécessaires ça devrait fonctionner.
Par contre, si tu veux que ton input contenant l'ID de ton app soit récupéré dynamiquement à la soumission de ton form, c'est mieux de l'adjoindre à celui-ci.

Hurobaki
Auteur

J'ai modifié tout marche nickel !

Merci pour ton aide :)

Je t'en prie.
Pense à passer ton poste en résolu en cliquant sur le bandeau "Il a répondu à ma question !".