IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Gestion du return - false


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 8
    Points : 11
    Points
    11
    Par défaut Gestion du return - false
    Bonjour à tous,

    Après une semaine complète de recherche et de bidouille j'abandonne et quémande de l'aide.

    J'ai un tableau fonctionnant en AJAX dans lequel chaque ligne est un input: modifiable et supprimable + un formulaire pour ajouter une ligne au tableau.

    Tout marche à la perfection excepté si je tente d'ajouter une ligne au tableau puis de la supprimer directement après sans rafraîchir la page au préalable.
    Quand j'ajoute la ligne puis je là supprime, du côté serveur cela se passe correctement et la ligne disparaît bien de la BDD, par contre je suis envoyé sur la page "supprimgage_post.php?numerojeux=jeux1" bien que toutes les données soient bien transférées.

    Auriez-vous une idée de ce qui bloque?

    HTML:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    // Formulaire ajout ligne au tableau
    <form class="formajoutgage" id="submitnewgage" name="connection" method="post" action="ajoutergagejeux_post.php?numerojeux=jeux1">
        <div class="strut" style="width:0%;"></div>
        <input class="inputajouttitre" type="text" id="titrejeux" name="titrejeux" maxlength="22" placeholder="Ajoutez le titre" required />     
        <input class="inputajoutgage" type="text" id="gagejeux" name="gagejeux" maxlength="116" placeholder="Ajoutez le gage" required />
        <input type="submit" class="inputsubmitgage" value="Ajoutez"/>
    </form>  
     
    <tbody id="bodytableau">
        <?php                                                        
        try
        {
    // Connexion BBD 
    $query = $bdd->query("SELECT idjeux, titrejeux, gagejeux, numero FROM membrejeux WHERE pseudo = '".$_SESSION['pseudo']."' && jeux = 'jeux1' && numero >=1 && numero <=25 ORDER BY numero ASC");   // Requete pour obtenir les lignes du tableau
    }
    while ($donnees = $query->fetch())   // Affichage lignes du tableau
    echo '
     
    <tr class="'.$donnees['idjeux'].'">
     
        <td class="col1">
            <form class="formcachejeuxmodif" action="modifgage_post.php?numerojeux=jeux1" method="post">             //Formulaire pour modifier ligne
                <input type="text" name="numero" value="'.$donnees['numero'].'" />
            </td>
            <td class="col2"><input type="text" name="titrejeux" value="'.$donnees['titrejeux'].'" /></td>
            <td class="col3"><input type="text" name="gagejeux" value="'.$donnees['gagejeux'].'" /></td>
            <input type="hidden" style="display:none;" name="idjeux" value="'.$donnees['idjeux'].'" />
            <td class="col4 '.$donnees['idjeux'].'"> <input type="submit" value="modifier" />
            </form>
             
     
            <form class="formcachejeux3" action="supprimgage_post.php?numerojeux=jeux1" method="post">                 //Formulaire pour supprimer ligne
                <input type="hidden" name="idjeux" value="'.$donnees['idjeux'].'" />
                <input type="hidden" name="titrejeux" value="'.$donnees['titrejeux'].'" />
                <input type="hidden" name="gagejeux" value="'.$donnees['gagejeux'].'" />
                <input type="hidden" style="display:none;" name="numero" value="'.$donnees['numero'].'" />
                <input type="submit" value="supprimer" />
            </form>
             
        </td>
    </tr>
    '; 
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
    ?>
    </div>
    </tbody>
    </table>

    AJAX:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <script type="text/javascript">
    $(function(){                                       // Ajouter la ligne dans le tableau
     
        $("#submitnewgage").submit(function(){
            $('.inputsubmitgage').removeClass('result');
     
     
            titrejeux= $(this).find("input[name=titrejeux]").val();
            gagejeux= $(this).find("input[name=gagejeux]").val();
     
            titrejeuxInput = $(this).find("input[name=titrejeux]");
            gagejeuxInput = $(this).find("input[name=gagejeux]");
     
            form =$(this);
     
            url=$(this).attr("action");
            $.post(url,{titrejeux:titrejeux,gagejeux:gagejeux},function(data){
     
                if(data.erreur=="no"){
                    $('#bodytableau').append(data.retour1);
                    $('tr:last').hide().fadeIn(2000);
                }
                else{
                    if(data.erreurVide){
                        $('#msgapparition').fadeIn(2500);
                    }
                    if(data.erreurPlein){
                        $('#msgapparition2').fadeIn(2500);
                    }
                    if(data.erreurSession){
                    }
                }
            },"json");
            return false;
        });
    });
    </script>
     
    <script type="text/javascript">
     
    $(function(){                                       // Supprimer la ligne
     
        $(".formcachejeux3").submit(function(){
     
            idjeux= $(this).find("input[name=idjeux]").val();
            numero= $(this).find("input[name=numero]").val();
     
            idjeuxInput = $(this).find("input[name=idjeux]");
            numeroInput = $(this).find("input[name=numero]");
     
            form =$(this);
     
     
            url=$(this).attr("action");
            $.post(url,{idjeux:idjeux,numero:numero},function(data){
     
                if(data.erreur=="no"){
                    var x = data.retourid;
     
                    $('.' + x ).hide();
                }
                else{
                    if(data.erreurVide){
                    }
                }
     
            },"json");
            return false;
        });
    });
    </script>
    PHP: Insertion Lignes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php session_start();
    try
    {
    // Connexion BBD  
     
        $query = $bdd->query("SELECT idjeux FROM membrejeux WHERE pseudo = '".$_SESSION['pseudo']."' && jeux ='".$_GET['numerojeux']."'");
        $count = $query->rowCount();
        $numjeux = $count + 1;
     
        $t = array();
     
        if (empty($_POST['titrejeux']) OR empty($_POST['gagejeux']))
        {
            $t["erreurVide"] = '<div class="error">Veuillez remplir tous les champs du formulaire</div>';
        }
        elseif ($count >= 150)
        {
            $t["erreurPlein"] = '<div class="error">Trop de lignes dans le tableau</div>';
        }
        elseif(empty($_SESSION['pseudo']))
        {
            header('Location: index.php');
        }
        else
        {
     
            $t["erreur"] = "no";
     
            $req = $bdd->prepare('INSERT INTO membrejeux (titrejeux, gagejeux, pseudo, jeux, numero) VALUES (?, ?, ?, ?, ?)');
            $req->execute(array($_POST['titrejeux'], $_POST['gagejeux'], $_SESSION['pseudo'], $_GET['numerojeux'], $numjeux));
     
            $query2 = $bdd->query("SELECT idjeux, titrejeux, gagejeux, numero FROM membrejeux WHERE pseudo = '".$_SESSION['pseudo']."' && jeux = '".$_GET['numerojeux']."' &&  idjeux=LAST_INSERT_ID()");
     
            while ($donnees2 = $query2->fetch()){
     
                $t["retour1"] = '<tr class="'.$donnees2['idjeux'].'">
                <td class="col1">
                    <form class="formcachejeuxmodif" action="modifgage_post.php?numerojeux=jeux1" method="post">                       //Formulaire pour modifier ligne
                        <input type="text" name="numero" value="'.$donnees2['numero'].'" />
                    </td>
                    <td class="col2"><input type="text" name="titrejeux" value="'.$donnees2['titrejeux'].'" /></td>
                    <td class="col3"><input type="text" name="gagejeux" value="'.$donnees2['gagejeux'].'" /></td>
                    <input type="hidden" style="display:none;" name="idjeux" value="'.$donnees2['idjeux'].'" />
                    <td class="col4 '.$donnees2['idjeux'].'"> <input type="submit" value="modifier" />
                    </form>
     
                    <form class="formcachejeux3" action="supprimgage_post.php?numerojeux=jeux1" method="post">                               //Formulaire pour supprimer ligne
                        <input type="hidden" name="idjeux" value="'.$donnees2['idjeux'].'" />
                        <input type="hidden" name="titrejeux" value="'.$donnees2['titrejeux'].'" />
                        <input type="hidden" name="gagejeux" value="'.$donnees2['gagejeux'].'" />
                        <input type="hidden" style="display:none;" name="numero" value="'.$donnees2['numero'].'" />
                        <input type="submit" value="supprimer" />
                    </form>
     
                </td>
            </tr>';
     
        }
    }
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
    echo json_encode ($t);
    ?>

    PHP: Suppression Lignes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    <?php session_start();
    try
    {
    // Connexion BBD  
     
        $idjeux2 = $_POST['idjeux']; 
        $numero2 = $_POST['numero']; 
        $_SESSION['pseudo'] = $pseudo;
        $jeux2 = $_GET['numerojeux']; 
     
        $t = array();
     
        if (empty($_POST['idjeux']) OR empty($_POST['numero']) OR empty($_GET['numerojeux']) OR empty ($_SESSION['pseudo']))
        {
            $t["erreurVide"] = '<div class="error">Veuillez remplir tous les champs du formulaire</div>';
        }
        else{
     
            $t["erreur"] = "no";   
            $t["retourid"] =$idjeux2;
     
            $req = $bdd->prepare("UPDATE membrejeux SET numero = numero-1 WHERE numero > :numerox && pseudo = :pseudo && jeux = :jeux");
            $req->execute(array(
                ':numerox' => $numero2,     
                ':jeux' => $jeux2,
                ':pseudo' => $pseudo,
                ));
            $query2 = $bdd->query("DELETE FROM membrejeux WHERE idjeux = '$idjeux2'");
     
        }
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
    echo json_encode ($t);
    ?>

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    au chargement de la page, le code JavaScript $(".formcachejeux3") sélectionne uniquement les formulaires déjà présent dans le code HTML.
    donc le formulaire qui ajouté après coup n'est pas concerné et c'est le bouton submit de base qui s'occupe d'envoyer le formulaire

    pour que le code de suppression soit appliqués à tous les formulaires concernés, il faut par exemple le transformer comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(document).on("submit", ".formcachejeux3", function (e) { ... });

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    Bonjour Mathieu,

    Je ne savais pas que seul les formulaires déjà présent serait pris en compte, en effet c'est bien ça qui bloquait!
    Merci beaucoup pour ton aide et pour m'avoir appris une nouvelle chose.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. onclick="return false" ne fonctionne pas
    Par pcdj dans le forum ASP.NET
    Réponses: 16
    Dernier message: 13/09/2007, 15h31
  2. Réponses: 3
    Dernier message: 02/09/2007, 11h53
  3. verification de formulaire malgres return false
    Par emile13 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/03/2006, 18h54
  4. Return false inopérent sur un "onclick"
    Par El Riiico dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/01/2006, 11h47
  5. Demande d'explication : "return false"
    Par mickeliette dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/10/2004, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo