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 :

[AJAX] Insérer données dans tableau html AJAX/JavaScript


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 68
    Par défaut [AJAX] Insérer données dans tableau html AJAX/JavaScript
    Bonjour

    Alors voilà.
    J'ai une petite application php qui crée et rempli dynamiquement un tableau avec les données de ma base de données.

    J'ai des rayons composés de familles, composées de sous-familles.
    J'affiche les données de chaque sous-famille du rayon sélectionné, le total de la famille et le total du rayon.

    Pour plus de lisibilité je voudrais ne pas afficher les données des sous-familles car il peut y en avoir beaucoup. J'aimerais que l'utilisateur puisse tout de même les voir en cliquant sur un bouton qui afficherais le détail.

    J'ai plusieurs soucis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var xhr = getXMLHttpRequest(); // On récupère un XHR
     
    var saison = encodeURIComponent(""); // Je voudrais mettre un variable PHP ici.
    var numSFamille = encodeURIComponent(""); // Je voudrais mettre un variable PHP ici.
     
    xhr.open("POST", "handlingData.php", true); // On envoie en POST
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("s="+saison+"&sf="+numSFamille);
    La j'envoi ma demande au serveur mais je n'arrive pas mettre des variables php ici. Est possible ?

    Dans mon fichier handlingData.php j'ai donc ma requête à effectuer et l'affichage.
    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
    <?php
    $saison = (isset($_POST['s'])) ? $_POST['s'] : NULL;
    $numSFamille = (isset($_POST['sf'])) ? $_POST['sf'] : NULL;
     
    if($saison && $numFamille){
    $requete = "......";
     
    $stmt = oci_parse($connect, $requete);
    oci_execute($stmt, OCI_DEFAULT);
    $res = oci_fetch_array($stmt, OCI_NUM + OCI_RETURN_NULLS);
    oci_free_statement($stmt);
    resultats($res); // Ma fonction qui affiche les résultats proprement.
    }
    ?>

    D'abord je ne suis pas sur qu'il faille faire l'affichage ici.

    Ensuite j'aimerais que le résultats s'affiche dans la case du tableau associé au bouton.
    En fait sur chaque ligne j'ai une case avec le libellé de la sous-famille et le bouton "détails", puis une case avec le libellé des informations, puis une case avec les résultats pour la saison N et enfin les résultats pour la saison N+1.
    Et là je bloque totalement....... Je ne vois pas comment récupérer les cases adjacentes à mon bouton.
    De plus je ne vois pas exactement comment récupérer le résultat de ma page handlingData.php.
    J'ai essayé de faire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var xhr = getXMLHttpRequest();
     
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
            // Je voudrais mettre mon resultat dans un case particulière d'un tableau
        }
    };
     
    xhr.open("GET", "handlingData.php", true);
    xhr.send(null);
    Mais bon je ne suis pas tout a fait sur.

    Je continu de lire pas mal de tutos et forums. Mais si quelqu'un pouvait m'aiguiller je pense pouvoir gagner un peu de temps.

    Voilà ! Si ça vous intéresse ^^

    Merci de votre aide,

    Daratar.

  2. #2
    Membre confirmé Avatar de Periah
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Par défaut
    1) tu veux utiliser des variables PHP dans le javascript?

    2) tu peux utiliser ce genre de chose pour modifier ta cellule de tableau :

    Code javascript : 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
    function cliqueBoutonLigne(indiceLigne, indiceColonne)
    {
    	var chaineParametre = "handlingData.php?indice=" + indiceLigne ; // passage du paramètre de ligne à php pour savoir quoi traiter.
     
    	xmlhttp.onreadystatechange=function()
    	{
    		if (xmlhttp.readyState==4 && xmlhttp.status==200)
    		{
    			// modification de la cellule en ligne "indiceLigne" et en colonne "indiceColonne" avec le résulat de l'ajax.
    			document.getElementById("maTable").rows[indiceLigne].cells[indiceColonne].innerHTML = xmlhttp.responseText ;
    		}
    	}
     
    	xmlhttp.open("GET", chaineParametre + "&random=" + Math.random(), true);
    	xmlhttp.send();
     
    	return true ;
    }

    Et pour que ça fonctionne, il faut que dans ton HTML chaque bouton sur chaque ligne déclenche un appel à cette fonction avec les bons paramètres et ton php formate proprement le retour au format HTML.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 68
    Par défaut
    Bonjour !

    Merci de ta réponse !

    J'ai trouvé comment passé du php en variable javascript.
    Je vais faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $variablePHP = "lol";
    <script text="language/javascript>
    var a = <?php echo $variablePHP ?>;
    </script>
    Juste quelques questions :
    Cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var chaineParametre = "handlingData.php?indice=" + indiceLigne ;
    C'est pour passer des paramètres en GET c'est ça ?

    Et pour cette variable Je dois récupérer comment ? Grace à la ligne au dessus ?

    Dernière question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cliqueBoutonLigne(indiceLigne, indiceColonne)
    C'est là que je passe mes variables php c'est ça ?

    En tout cas merci de ton aide !
    Je me rend compte que c'est pas si compliqué que ce que je pensais et que c'est même hyper puissant !

    PS : Désolé mais je n'arrive pas à mettre les bonnes balises .
    J'ai essayé [code type="php] mais ça ne fonctionne pas. Désolé pour le manque de lisibilité.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Sur chaque ligne du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	<button type="button" onclick="afficheSousFamille('<?php echo $saison; ?>', '<?php echo $numSFamille; ?>')">Détails</button>
    	<div id="affSousFam<?php echo $numSFamille; ?>"></div>
    Script 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
    function afficheSousFamille(saison, numSFamille){
    	var xhr = getXMLHttpRequest(); // On récupère un XHR
     
    	var saison = encodeURIComponent(saison);
    	var numSFamille = encodeURIComponent(numSFamille);
     
    	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    	if(xhr.readyState == 4 && xhr.status == 200){
    		document.getElementById('affSousFam'+numSFamille).innerHTML = xhr.responseText;
    	}
     
    	xhr.open("POST", "handlingData.php", true); // On envoie en POST
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xhr.send("s="+saison+"&sf="+numSFamille);
    }
    => voir : Web 2.0, allez plus loin avec AJAX et XMLHttpRequest

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 68
    Par défaut
    Étant donné que j'ai 3 case à remplir, est ce que je peux faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script text="language/javascript" src="monfichier.js">
    Avec dans le fichier "monfichier.js" une fonction qui appel 3 fonctions.
    Une pour remplir la case avec le libellé des infos, une avec les données de la saison N et enfin une dernière avec les données de la saison N+1.
    ???
    Et mon bouton ferais un onclic sur cette fonction.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 68
    Par défaut
    Désole du double post mais...
    J'ai testé ça :
    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
    function afficheSousFamille(saison, numSFamille){
    	afficherLibelles(numSFamille);
    	//afficherSaisonN1(saison, numSFamille);
    	//afficherSaison(saison, numSFamille);
    }
     
    function afficherLibelles(numSFamille){
    	var xhr = getXMLHttpRequest(); // On récupère un XHR
     
    	xhr.open("POST", "includes/javascript/libelles.php", true); // On envoie en POST
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xhr.send(null);
     
    	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    	if(xhr.readyState == 4 && xhr.status == 200){
    		document.getElementById('lib'+numSFamille).innerHTML = xhr.responseText;
    	}
    }
    Et mon bouton qui affiche le détail :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<button type="button" onclick="afficheSousFamille('.$saison.', '.$numSFamille.')">Détails</button>';

    Mais quand je clic sur le bouton rien ne se passe. Aurais-je mal indexé mais div ?
    En tout cas je n'ai pas d'erreur javascript sur Firefox.

    Une idée ?

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

Discussions similaires

  1. [AJAX] Ajouter données dans un tableau json
    Par algsoft dans le forum AJAX
    Réponses: 2
    Dernier message: 26/03/2010, 00h36
  2. [AJAX] Type données dans php via ajax.
    Par Riko63 dans le forum AJAX
    Réponses: 2
    Dernier message: 08/08/2009, 14h04
  3. [MySQL] Affichage données dans tableau html
    Par TwAzO dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 04/06/2008, 11h36
  4. [DOM] integration d'une liste dans un tableau html en javascript
    Par bb62 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 08/06/2007, 16h03
  5. Insertion javascript dans tableau HTML
    Par Rocca dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/08/2005, 12h28

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