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

jQuery Discussion :

Conserver la sélection d'une ligne dans un tableau après un submit


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 45
    Points : 15
    Points
    15
    Par défaut Conserver la sélection d'une ligne dans un tableau après un submit
    Bonjour,

    Comme explicité dans l'intitulé, je cherche une solution pour conserver ma sélection dans une table malgré que le submit du formulaire actualise la page.
    Avant d'exposer mon code, mes lectures m'apprennent qu'il vaudrait mieux utiliser AJAX pour traiter ce formulaire et empêcher l'actualisation par return false;
    Cette solution apporte son lot d'autres problème et nécessiterait pour moi de devoir revoir entièrement mon code. Si aucune autre solution ne se révèle, je devrai sans doute le faire.

    Toujours est il, que votre avis au préalable m’intéresse :

    Deux tables : l'une qui crée des commandes (orders) via son formulaire
    l'autre : qui contient les "articles"
    En selectionnant une "tr" de la table order, je filtre le contenu de la table2 sur l'id de la commande choisie.
    MAIS AUSSI :
    je récupère le contenu qui vient d'être inséré dans ma table pour le réinjecter dans le formulaire1 et une partie dans le formulaire2

    Tout va comme je le souhaite sauf que si j'entre un nouvel article, après le submit je perds la selection de ma commande dans la table 1

    Je souhaite donc savoir s'il est possible de "fixer" cette selection
    ou
    s'il est possible de ramener la sélection là où elle se trouvait avant l'actualisation.
    ou
    s'il est possible de n'actualiser qu'une partie de la page avec l'envoi du formulaire en lieu et place de la page complète.

    Le code jquery :

    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
     
    //===========  Selection d'une ligne dans Order  =======================
    var pickedup;
     
        $( "#list_Orders tr" ).on( "click", function( event ) 
        {
            if (pickedup != null) 
            {
                pickedup.css( "background-color", "#FFF" );  //well color
            }
            $("#numOrderLine").val($(this).find("td").eq(1).html());    
            $( this ).css("background-color", "#78a3d4" ); //select color
            pickedup = $(this);
            $("#numOrder").val($(this).find("td").eq(1).html());
            $("#titleInsert").val($(this).find("td").eq(2).html());
            $("#dateStartInsert").val($(this).find("td").eq(3).html());
            $("#dateCloseInsert").val($(this).find("td").eq(4).html());
            $("#noteInsert").val($(this).find("td").eq(5).html());
            $("#titleOrderLine").val($(this).find("td").eq(2).html());           
            var idorder =  $(this).find("td").eq(1).html();
            $("#list_proposals tr ").filter(function() 
            {
                $(this).toggle($(this).text().toLowerCase().indexOf(idorder) > -1)
            });
     
        });
     
     
    </script>
    Je n'ai pas mis la partie php car longue et peut être inutile pour ce que je demande. si besoin dite !

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    Salut,
    si tu ne veux pas utiliser ajax, tu peux alors utiliser localStorage

  3. #3
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    une actualisation de page lors de l'envoi du formulaire, c'est une manière déguisée de dire rechargement complet et à zéro de la page.

    Si tu a des données à placer sur le formulaire de ta page soit tu les concerve avant dans des cookies ou dans un LocalStorage, ou un sessionStorage ou si ta page envoie des données sur un serveur alors le serveur à le moyen d'envoyer la page en la composant avec les valeurs qu'il à reçu, par exemple en les mettant dans des variables de session PHP ou autre suivant le langage de ton serveur.
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 45
    Points : 15
    Points
    15
    Par défaut
    disons qu'avec AJAX, outre la structure de mon code qui en serait ébranlé, j'ai appris à mes dépends que Ajax ne veut pas fonctionner si le fichier destination n'est pas un fichier à part entière.
    Hors c'est bien le cas mais avec les "includes" ben lui il ne fait pas la différence.
    sinon je m'en servirais ...

  5. #5
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    J'ai rien compris.

    En Ajax il n'y a pas de "fichier de destination", et "un fichier à part entière" je vois pas ce que tu sous entends, un fichier c'est un fichier, je vois pas en quoi on peu y conférer la moindre "part entière" ou que ce soit.

    En Ajax tu fait un appel à un fichier contenant du code, celui-ci peut renvoyer ou non une réponse en retour qui peut être juste un "ok" ou milles autres choses.

    la demande Ajax peut elle même être de milles façons différentes. il existe des "protocoles" de dialogue (comme SOAP), ou des architectures (comme REST) pour cadrer ce mode de dialogue, mais rien n'interdit d'en faire ce que cela te chante.

    les données transférées peuvent avoir x formats différents, mais on y utilise souvent le format JSON.
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  6. #6
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 45
    Points : 15
    Points
    15
    Par défaut
    oui justement, c'était de Json dont il était question.

    J'avais entrepris de faire passer mes formulaires avec Ajax. Lorsque je dis fichier de destination je parle de la partie url où les POST vont être envoyés pour traitement côté serveur.
    Ca ne fonctionnait pas et j'ai lu qu'avec Json le fait d'incluse des fichiers de permets pas à Json d'envoyer les datas car il estime que ce ne sont pas des fichiers distincts.

    Est ce que c'est un peu plus clair comme explication ?

  7. #7
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Non.
    Déjà si tu utilises jquery et donc tu n’as pas besoin d’un formulaire pour effectuer un post. Ce qui éviterait de faire un return false sur le submit.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  8. #8
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    Citation Envoyé par delpphil Voir le message
    Lorsque je dis fichier de destination je parle de la partie url où les POST vont être envoyés pour traitement côté serveur.
    Ca ne fonctionnait pas et j'ai lu qu'avec Json le fait d'incluse des fichiers de permets pas à Json d'envoyer les datas car il estime que ce ne sont pas des fichiers distincts.

    Est ce que c'est un peu plus clair comme explication ?
    Que ce soit en jQuery ou en JavaScript "vanille" les appels Ajax peuvent envoyer les données par POST ou GET sans aucun problème. et avec n'importe quel techno serveur.

    Après bien sur il y a des limitations en volume de données transférées, mais en général, en Ajax c'est rarement Pantagruéliques

    Si ton problème c'est l'envoi de fichiers, alors tu es dans une problématique d'upLoad ce qui n'a rien à voir.

    Que fait ton formulaire ?
    - quel type d'info doit-il envoyer ? de la saisie de texte, des fichiers?


    On risque de tourner en rond en parlant de généralités avec des a priori visiblement erronés...
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    […] ou un sessionStorage ou si ta page envoie des données sur un serveur alors le serveur à le moyen d'envoyer la page en la composant avec les valeurs qu'il à reçu, par exemple en les mettant dans des variables de session PHP ou autre suivant le langage de ton serveur.
    Est-ce que tu ne confondrais pas par hasard l’API client sessionStorage avec les sessions PHP ? Je reconnais que sessionStorage est mal nommée, il aurait fallu qu’elle s’appelle tabStorage (« stockage par onglet ») ou clientStorage ou un truc du genre.
    une session de navigation n'est valable que pour le contexte de navigation actuel, c'est-à-dire que le fait d'ouvrir une page dans un nouvel onglet ou dans une nouvelle fenêtre provoquera l'initialisation d'une nouvelle session de navigation, ce qui diffère du comportement des sessions utilisant des cookies.
    Source : https://developer.mozilla.org/fr/doc...sessionStorage
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    non non, je confonds pas (mais j'ai mis en gras les "ou" pour bien montrer qu'il s'agit de choses distinctes :
    soit tu les conserve avant
    - dans des cookies
    - ou dans un LocalStorage,
    - ou un sessionStorage
    - ou si ta page envoie des données sur un serveur/../dans des variables de session PHP
    j’aurais pu ajouter la possibilité d'utiliser IndexedDB mais c'est inégalement supporté par les Navigateurs; il y a existe aussi la présence de SQL Lite sur certaines anciennes versions, mais le W3C n'a pas validé l'expérience et cela va disparaître des radars.
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  11. #11
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 45
    Points : 15
    Points
    15
    Par défaut
    je me suis résolu à transformer mes scripts pour utiliser Ajax.

    Il s'agit donc d'un formulaire qui reçoit dans ses inputs des données insérées par l'utilisateur.

    un extrait :

    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
     
    <!-- --------------------------------------------- Form Proposals  ---------------------------->
        <div class="col-md-6">
            <form id="formProp" action="" method="POST" >
                <div class="well well-md">
                    <div class="row">
                        <div class="col-md-12">
                            <h3 class="card-header text-center font-weight-bold text-uppercase py-1">Proposals</h3><br>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-6">
                            <div class="row">
                                <div class="col-md-4">                          
                                    <label for="numOrder" class="align-bottom">N° Order : </label>
                                    <input class="form-control" type="text" style="background-color:#f5f5f5;" id="numOrderLine" name="idOrderProposal" value="" />                                      
                                </div>
                                <div class="col-md-8">                            
                                    <label for="name">Titre : </label>
                                    <input class="form-control" type="text" style="background-color:#f5f5f5;" id="titleOrderLine" value="" />
                                </div>
                            </div>
                    </div>
                    </div><br>
                    <div class="row">
                        <div class="col-md-2">
                            <label for="subject">Langue</label>
                            <select class="d-block w-100 " id="langInsert" name="langInsert">
                            <option value="na" selected="">Choose</option>
                                <?php
                                    while($data = $reqlang->fetch())
                                {?>
                                    <option value="<?php echo $data['lang'];?>"><?php echo htmlspecialchars($data['lang']);?></option>
                                <?php
                                } $req->closeCursor();?> 
                            </select>                                         
                        </div>       
                        <div class="col-md-6">                        
                            <label for="name">Etablissement</label>
                            <select class="d-block w-100 " id="nameJailInsert" name="nameJailInsert">
                                <option value="na" selected="">Choose</option>
                                <?php
                                    while($data = $reqJail->fetch())
                                {?>
                                    <option value="<?php echo $data['nameJail'];?>"><?php echo htmlspecialchars($data['nameJail']);?></option>
                                <?php
                                } $req->closeCursor();?> 
                            </select>                                    
                        </div> 
                                 ................

    au niveau du fichier script :

    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
     
    / Insert Proposals
        $("#formProp").submit(function(e){
            e.preventDefault();
            idOrderProposal = $(this).find("input[name=idOrderProposal]").val();
            nameJailInsert = $(this).find("input[name=nameJailInsert]").val();
            gradeInsert = $(this).find("input[name=gradeInsert]").val();
            qtInsert = $(this).find("input[name=qtInsert]").val();
     
     
            $.ajax({
                    type: "POST",
                    url: "./inc/manager.inc.php",
                    data:{idOrderProposal: idOrderProposal, 
                          nameJailInsert: nameJailInsert,
                          gradeInsert: gradeInsert,
                          qtInsert: qtInsert},
                    success:function(data){
                        location.load();
                    }
            });
       // return false;
        });
    ...................
    si je laisse le return false ça ne fonctionne pas rien ne se passe
    si je laisse le preventdefault ça ne fonctionne pas rien ne se passe.
    je suis obligé de remettre mon url dans l'attribut action de mon formulaire pour que ça parte du coup c'est un submit php qui se produit donc refresh

    Voici une vue de ma page pour comprendre

    Formulaire de gauche alimente le tableau de gauche (commande)
    formulaire de droite alimente le tableau de droite
    un clic sur une ligne du tableau de gauche trie le tableau de droite pour n'afficher QUE ce qui concerne la commande cliquée.
    Sauf qu'à chaque ajout à droite, je perds le focus de cette ligne à gauche et j'aimerais que la commande sélectionnée reste sélectionnée à chaque submit

    Nom : Capture.PNG
Affichages : 318
Taille : 69,4 Ko

  12. #12
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    ben visiblement il manque des trucs dans ton ajax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    success:function(data){
      location.load();
    }
    car tu ne fais rien des données en retour (data) et je ne vois pas trop ce que tu peux imaginer de l'appel location.load() mais ça me semble "pas bon"

    sinon on vois pas trop ce que peut retourner comme valeurs ton php ./inc/manager.inc.php
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  13. #13
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    Citation Envoyé par delpphil
    si je laisse le return false ça ne fonctionne pas rien ne se passe
    si je laisse le preventdefault ça ne fonctionne pas rien ne se passe.
    e.preventDefault() est suffisant.

    rien ne se passe = qu'il y a peut être une erreur dans la console de ton navigateur, plus précisément la ligne location.load(); (suggestion de @psychadelic ) qui est dans le callback success. remplace cette ligne par console.log(data); pour voir si tu reçois bien une réponse depuis le fichier php.
    je te suggère aussi d'ajouter le callback error dans ajax, pour voir s'il y a une erreur ou non.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    success:function(data){
      console.log("data :",data);
    }
    ,error:function(err){//au cas ou il y a une erreur, tu le sauras
      alert('Erreur ajax :'+err.responseText);
    }
    regarde ce qui est écrit dans l'onglet console (F12 pour chrome et firefox, CTRL+Shift+i pour opéra).

    Citation Envoyé par delpphil
    je suis obligé de remettre mon url dans l'attribut action de mon formulaire pour que ça parte du coup c'est un submit php qui se produit donc refresh
    Non justement, l'intérêt de l'utilisation d'ajax, c'est de ne pas rafraîchir la page, et l'attribut action dans la form ne sert a rien dans ton cas, c'est ajax qui s'en occupe.

    puis je vois que tu récupère mal la valeur de <select class="d-block w-100 " id="nameJailInsert" name="nameJailInsert">, vu que c'est un <select>, tu dois récupérer la valeur de l'option sélectionnée et pas du select.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nameJailInsert = $(this).find("#nameJailInsert option:selected").val();//le signe "#" au début du sélecteur, indique  qu'on cible l'élément par son id.
    Citation Envoyé par delpphil
    Sauf qu'à chaque ajout à droite, je perds le focus de cette ligne à gauche et j'aimerais que la commande sélectionnée reste sélectionnée à chaque submit
    normal que tu perds le focus quand tu clique ailleurs.
    pourquoi ne pas créer une classe Css avec le nom "focus_" par exemple, et dans cette classe tu ajoute une propriété background-color:blue, puis a chaque clique sur un tr, tu ajoute cette classe au tr cliqué ?

  14. #14
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 45
    Points : 15
    Points
    15
    Par défaut
    L'alert n'a rien donnée mais la console bien. il voit trois erreurs, les deux undefined semble acréditer tes remarques sur la façon dont je récupère la valeur de mes selected.
    Ceci dit en choisissant l'option qui est le résultat d'une requête ça ne va pas non plus. je vais essayer avec ta syntaxe et je repost.

    Quand à la dernière par contre ... ha ben oui la quantité entrée j'imagine que ajax l'envoi comme un str ?



    data : <br />
    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: nameJailInsert in E:\wamp64\www\IFPipe_1.0a\inc\manager.inc.php on line <i>59</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0004</td><td bgcolor='#eeeeec' align='right'>406232</td><td bgcolor='#eeeeec'>{main}( )</td><td title='E:\wamp64\www\IFPipe_1.0a\inc\manager.inc.php' bgcolor='#eeeeec'>...\manager.inc.php<b>:</b>0</td></tr>
    </table></font>
    <br />
    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: gradeInsert in E:\wamp64\www\IFPipe_1.0a\inc\manager.inc.php on line <i>66</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0004</td><td bgcolor='#eeeeec' align='right'>406232</td><td bgcolor='#eeeeec'>{main}( )</td><td title='E:\wamp64\www\IFPipe_1.0a\inc\manager.inc.php' bgcolor='#eeeeec'>...\manager.inc.php<b>:</b>0</td></tr>
    </table></font>
    Erreur :SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

    En appliquant tes conseils :

    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
     
    // Insert Proposals
        $("#formProp").submit(function(e){
            e.preventDefault();
            idOrderProposal = $(this).find("input[name=idOrderProposal]").val();
            nameJailInsert = $(this).find("#nameJailInsert option:selected").val();
            gradeInsert = $(this).find("#gradeInsert option:selected").val();
            qtInsert = $(this).find("input[name=qtInsert]").val();
     
     
            $.ajax({
                    type: "POST",
                    url: "./inc/manager.inc.php",
                    data:{idOrderProposal: idOrderProposal, 
                          nameJailInsert: nameJailInsert,
                          gradeInsert: gradeInsert,
                          qtInsert: qtInsert},
                    success:function(data){
                        console.log("data :",data);
                    }
                    ,error:function(err){
                    alert('Erreur ajax :'+err.responseText);
                    }
            });
        });
    Là plus d'erreur dans la console mais toujours pas d'injection dans la DB

    Concernant le focus, voici comment je le sélectionne et je m'en sers pour récupérer des données et les réinjecter dans les formulaires

    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
     
    //===========  Selection d'une ligne dans Order  =======================
    var pickedup;
     
        $( "#list_Orders tr" ).on( "click", function( event ) 
        {
            if (pickedup != null) 
            {
                pickedup.css( "background-color", "#FFF" );  //well color
            }
            $("#numOrderLine").val($(this).find("td").eq(1).html());    
            $( this ).css("background-color", "#78a3d4" ); //select color
            pickedup = $(this);
            $("#numOrder").val($(this).find("td").eq(1).html());
            $("#titleInsert").val($(this).find("td").eq(2).html());
            $("#dateStartInsert").val($(this).find("td").eq(3).html());
            $("#dateCloseInsert").val($(this).find("td").eq(4).html());
            $("#noteInsert").val($(this).find("td").eq(5).html());
            $("#titleOrderLine").val($(this).find("td").eq(2).html());           
            var idorder =  $(this).find("td").eq(1).html();
            $("#list_proposals tr ").filter(function() 
            {
                $(this).toggle($(this).text().toLowerCase().indexOf(idorder) > -1)
            });
     
        });  
    });
    EDIT : HAAAA mais ça commence à aller .... en réalité rien ne se passe car ça ne raffraichi plus .... donc on a fait une partie du chemin il faudrait maintenant que le tableau s'actualise, je vais essayer un load sur la div.

    Edit 2 : CA Y EST :

    Ca fonctionne avec un bout de code trouvé sur un forum anglais. Je le mets à toutes fins utiles et avant d'indiquer résolu, si vous avez des suggestions d'amélioration c'est toujours bon à prendre.

    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
     
    // Insert Proposals
        $("#formProp").submit(function(e){
            e.preventDefault();
            idOrderProposal = $(this).find("input[name=idOrderProposal]").val();
            nameJailInsert = $(this).find("#nameJailInsert option:selected").val();
            gradeInsert = $(this).find("#gradeInsert option:selected").val();
            qtInsert = $(this).find("input[name=qtInsert]").val();
     
     
            $.ajax({
                    type: "POST",
                    url: "./inc/manager.inc.php",
                    data:{idOrderProposal: idOrderProposal, 
                          nameJailInsert: nameJailInsert,
                          gradeInsert: gradeInsert,
                          qtInsert: qtInsert},
                    success:function(data)
                    {
                        refreshedPage = $(data);
                        newDemo = refreshedPage.find("#tableProp").html();
                            $('#tableProp').html(newDemo)
                    },
                    error:function(err)
                    {
                    alert('Erreur ajax :'+err.responseText);
                    }
            });
     
        });

  15. #15
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    Citation Envoyé par delpphil
    ha ben oui la quantité entrée j'imagine que ajax l'envoi comme un str ?
    oui, ajax envoie tes variables existants dans data:{....} comme string (seulement dans ton cas, quand la clé dataType est absente, ajax utilise dataType:html par défaut).

    Citation Envoyé par delpphil
    Erreur :SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
    cette erreur signifie que le nombre de variables passés dans la requête Mysql n'est pas identique avec les valeurs, tu as surement (oublié/ajouter) quelque chose de (moins/plus).

    Citation Envoyé par delpphil
    je vais essayer un load sur la div.
    Maintenant que tu sais comment ajax se comporte, je te conseil vivement de passer au type de donnée "json" dataType:"json", mais dans ce cas ton fichier php doit retourner du json aussi, en utilisant echo json_encode($reponse); dont $reponse est une variable de type array (un tableau).
    Attention, le fichier php ne doit contenir qu'un seul echo json_encode($reponse); une seule fois.

    Oublie ton projet maintenant et commence par faire un simple exercice en json, parce que je sais que ça te parait compliquer.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 45
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Toufik83 Voir le message

    Oublie ton projet maintenant et commence par faire un simple exercice en json, parce que je sais que ça te parait compliquer.
    Qui te l'a dit !!!! ;-)

    Effectivement, je n'appréhende pas comment faire mais je vais retourner aux lectures sur le sujet. D'autant que je sature un peu là ça fait trois jours que j'essaye.

    J'ai crié victoire trop vite !

    Le focus reste bien sur la ligne de mon tableau mais en réalité c'est une illusion, le tableau une fois refresh me montre à nouveau toute la table sans la sélection.
    Enfin vous m'avez permis d'avancer. Merci

    Je posterai la version finale et fonctionnelle une fois fait...

  17. #17
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 45
    Points : 15
    Points
    15
    Par défaut
    Finalement je suis parti vers une solution à onglet car je n'avais pas pris en compte que mes utilisateurs sont dans une résolution inférieure

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

Discussions similaires

  1. [AC-2003] Conserve la sélection d'une ligne dans un treeview
    Par lio33 dans le forum IHM
    Réponses: 3
    Dernier message: 18/03/2010, 15h10
  2. Comment forcer la sélection d'une ligne dans un DataGridView
    Par Pizza Royale dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/06/2007, 13h32
  3. Sélection d'une ligne dans un DGGrid
    Par zarbouine dans le forum Delphi
    Réponses: 1
    Dernier message: 17/05/2007, 14h51
  4. Sélection d'une ligne dans un JTable
    Par dam21 dans le forum Composants
    Réponses: 3
    Dernier message: 28/07/2004, 13h57
  5. Déplacer la sélection d'une ligne dans un stringgrid
    Par jer64 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/03/2003, 01h57

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