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 :

Modifier et sauvegarder une valeur dans un tableau


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 22
    Par défaut Modifier et sauvegarder une valeur dans un tableau
    Bonjour à tous,
    je code un formulaire qui contient un tableau, et je voudrais pouvoir modifier une cellule du tableau en cliquant dessus, puis je modifie la valeur dans un prompt() et enfin je recharge le div qui englobe la cellule.
    C'est sur cette dernière étape que j'ai un problème.
    Après plusieurs essais, voici la partie concernée de mon code:

    Dans le header:
    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
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">  </script>
    <script type="text/javascript">
     
     
    //function displayValue() {
     
    $(".toreload").on('click',function() {alert("poi");
     
            // je récupère les valeurs
            var saisie = $('#saisie').val(); alert('saisie js:'+saisie);
     
            // je vérifie une première fois pour ne pas lancer la requête HTTP
            // si je sais que mon PHP renverra une erreur
            if(saisie == ''){
                alert('Les champs doivent êtres remplis');
            } else {
                // appel Ajax
                $.ajax({
                    url: $(this).attr('action'), // le nom du fichier indiqué dans le formulaire
                    type: $(this).attr('method'), // la méthode indiquée dans le formulaire (get ou post)
                    data: $(this).serialize(), // je sérialise les données (voir plus loin), ici les $_POST
                    success: function(html) { // je récupère la réponse du fichier PHP
    			 $('div.toreload').html();
                    }
                });
            }
            return false; // j'empêche le navigateur de soumettre lui-même le formulaire
    });
    //};
    </script>
     
    <script language="JavaScript"> 
    function changeValue(r,t,v){
     
        var rows = document.getElementById("tableau").rows;
        var numOfRows = rows.length
        var numOfCols = rows [0].cells.length;
        var rowElement = rows[t];
        var cellNode = rowElement.cells[v];
     
        if(confirm ("Vous aller modifier la valeur: "+ cellNode.innerHTML)) 
             var saisie = prompt("Nouvelle valeur:", cellNode.innerHTML);
     
        if (saisie!=null) {
             document.forms["compare"].elements["name"+r+t+v].value=saisie;
             alert(document.forms["compare"].elements["name"+r+t+v].value);
        }
    }
    </script>
    Code PHP:
    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
    echo "<form id='compare' method='post' action ='modif.php'>";
    [...]
    echo "<table id='tableau'>";
    $t=1; $r=1;
    foreach($liste1 as $ligne => $donnees){
        echo "<tr id='ligne'><td style='background-color:#ccc'><input type='checkbox' id='check1' name='valeur.$r.$t' value='".implode(";",$donnees)."'></td>";
     
        $liste1_all[]=implode(";",$donnees); //echo "liste1_all:"; print_r($liste1_all);
     
        $v=1;
        foreach($donnees as $cle => $value){
     
            if(in_array($value,array_keys($tab_compare)) && isset($tab_compare[$value]) && isset($title1[$cle]) && strtoupper($title1[$cle])==$tab_compare[$value]) // on filtre aussi sur le titre
                 echo "<div id='toreload' class='toreload'><td style='background-color:#7FDD4C' onclick='changeValue($r,$t,$v);'>"; //vert
            else 
                 echo "<div id='toreload' class='toreload'><td style='background-color:#FF5E4D' onclick='changeValue($r,$t,$v);'>"; //rouge
     
            echo utf8_decode($value); echo "</td></div>";
            echo "<input type='hidden' id='id$r$t$v' name='name$r$t$v' value='$value'>";
            $v++;
        }
        $t++;
     
        echo "</tr>";
    }
    echo "</table>";
    Comment afficher ma valeur dans la cellule svp? Je ne parviens même pas à afficher l'alerte de test "poi" :\

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    au moment de l'affectation de l'événement à ton élément celui ci est-il déjà dans le DOM, ne manquerait-il pas un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    jQuery(function($){
      // ton code d'initialisation
    })
    Qu'est-ce que la notion de Ready ?

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 22
    Par défaut
    Bonjour NoSmoking!
    Merci beaucoup pour ton aide, j'ai enfin accès à ma fonction
    Cependant, la valeur de saisie est 'undefined'. Cela ne me surprend pas, je vais revoir mon code.
    N'hésite pas si tu as une suggestion

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Plusieurs choses,

    - Important : Les règles incontournables d'utilisation de ce forum

    - Une ID DoIt être UNIQUE.

    - Dans le code que tu montres on ne trouve pas d'INPUT ayant pour ID saisie.

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 22
    Par défaut
    Oui en effet, il n'y a pas d'input 'saisie', j'ai bien compris le problème.
    La variable 'saisie' est une variable js, et je n'arrive pas à la récupérer, mais je cherche ^^

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var saisie = $('#saisie').val(); alert('saisie js:'+saisie);
    Certes, saisie est une variable JavaScript, mais qui correspond à la valeur de l'input ayant l'id saisie...

    il n'y a pas d'input 'saisie'
    Dans ce cas, ça va devenir un peu compliqué d'en récupérer la valeur !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

Discussions similaires

  1. modifier une valeur dans un tableau
    Par kanwulf62 dans le forum MATLAB
    Réponses: 1
    Dernier message: 24/05/2013, 09h31
  2. pouvoir modifier une valeur dans un tableau
    Par adri_99 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/10/2007, 19h32
  3. Chercher une valeur dans un tableau
    Par christel1982 dans le forum ASP
    Réponses: 5
    Dernier message: 14/09/2006, 09h01
  4. Rechercher une valeur dans un tableau
    Par pafi76 dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 14h23
  5. Réponses: 21
    Dernier message: 28/02/2006, 15h23

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