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] Envoyer un élément champ de type [] html en Ajax


Sujet :

AJAX

Vue hybride

madina [AJAX] Envoyer un élément... 05/08/2011, 13h48
mctarek Je convertis l'array (php) au... 05/08/2011, 14h12
madina Bonjour mctarek, En fait... 05/08/2011, 14h21
Bovino chapitre=... 05/08/2011, 14h29
madina Bonjour En ajoutant l'id... 05/08/2011, 15h26
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut [AJAX] Envoyer un élément champ de type [] html en Ajax
    Bonjour,
    je dispose dans mon formulaire des champ de type tableau que je recupére
    voilà mon formulaire :

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?php
    include('fonctions.php');
    // connexion a la BdD
    connect();
    ?>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
    	<link rel="stylesheet" media="screen" type="text/css" title="Design" href="budget_css.css" />
    	<title>Modifier un chapitre</title>
    <script type="text/javascript">
     function getXhr(){
     var xhr = null; 
    if(window.XMLHttpRequest) // Firefox et autres
      xhr = new XMLHttpRequest(); 
    else if(window.ActiveXObject){ // Internet Explorer 
      try {
     xhr = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
     xhr = new ActiveXObject("Microsoft.XMLHTTP");
              }
    }
    else { // XMLHttpRequest non supporté par le navigateur 
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
      xhr = false; 
    } 
                return xhr;
    			}
    /**
    * Méthode qui sera appelée sur le click du bouton
    */
    function envoi_modif_chapitre(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    // 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){
    reponsetxt = xhr.responseText;
    // On se sert de innerHTML pour rajouter les options a la liste
     
    alert(reponsetxt);
    }
    				}
    // Ici on va voir comment faire du post
    xhr.open("POST","valide_modif.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // Poster mes éléments tableaux						
    xhr.send()
    }
     
    </head>
    <body >
     
    <div id="formulaire">  
    <!-- formulaire -->
    <form name="test" action="valide_modif_chapitres.php" method="post" >
    <fieldset ><legend><b>Chapitres à modifier</b></legend>
     <table align="center" width="60%" >
    <thead>
    <tr>
    <th>A modifier</th>
    </tr>
    </thead>
    <tbody>
    <?php
    // requete : operations
    $sql = "SELECT * FROM chapitres;";
    $sql_result = mysql_query($sql);
    while($row_op_mod = mysql_fetch_array($sql_result)) 
    {
    $idLigne = $row_op_mod['id_chapitre']; // id UNIQUE -> on s'en sert pour identifier la ligne !
    ?>
    <tr>  
    <td class="chapt">
    <input type="text" name="chapitre[<?php echo $idLigne; ?>]" size="80" value="<?php echo $row_op_mod['designation_chapitre']; ?>" />
    <td class="box">
    <center><input type="checkbox" name="labox[<?php echo $idLigne; ?>]" value="ON" /></center>
    </td>
    </tr>
    <?php
    	} // fin while
    ?>
    <tr align="center">
    <td colspan="2">
    <input type="submit" name="envoiform" value="Modifier les données" />
    </td>
    </tr>
    </tbody>
    </table>
     </fieldset>
    </form>
    </div>
     </body>
    </html>

    dans ma page php sous forme de tableaux array().

    je veux passer par ajax pour faire la requête.
    j'ai essayé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chapitre= document.getElementById('chapitre').value;
    labox = document.getElementById('labox').value;
    mais ça marche pas.

    dans ma page php
    je les recupére comme ça :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (isset($_POST['labox']))
    {
    // recuperation des checkbox (array !)
    $array_box = $_POST['labox'];
    // on parcours l'array
    foreach($array_box as $key => $val) {
    // Si LA CASE EST COCHEE -> on traite les donnees
    if($val =='ON') 
    { 
    // on recupere les donnees (de la ligne correspondante)
    $ID_chapitre 			= $key; // $key = id_operation !
    $designation_chapitre 	= $_POST['chapitre'][$key];
    .....
    Comment je dois les envoyer dans ma fonction javascript ces éléments ?

    Merci de vos solutions.


    Cordialement.

  2. #2
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2011
    Messages : 34
    Par défaut
    Citation Envoyé par madina Voir le message
    Bonjour,
    je dispose dans mon formulaire des champ de type tableau que je recupére
    voilà mon formulaire :
    ....
    Comment je dois les envoyer dans ma fonction javascript ces éléments ?
    Merci de vos solutions.

    Cordialement.
    Je convertis l'array (php) au format json, puis je traîte directement l'objet reçu en javascript. mctarek

    Lien : json_encode

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut
    Bonjour mctarek,

    En fait avant d'avoir l'array() pHP, javascript doit d'abord envoyer un tableau de type [] html.

    Mon soucis c'est comment javascript traite ce type d’élément pour l'envoyer via ajax ?

    Cordialement

  4. #4
    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
    1
    2
    chapitre= document.getElementById('chapitre').value;
    labox = document.getElementById('labox').value;
    Tu n'as aucun élément dont l'id est chapitre ou labox... alors effectivement, c'est comme appeler ta femme par le prénom de la voisine, c'est rarement efficace

    comment javascript traite ce type d’élément
    Uniquement comme une chaine normale, il n'existe pas le même principe qu'avec PHP à ce niveau (ne serait-ce que parce la syntaxe d'ajout dans un tableau tab[] = valeur n'existe pas en JavaScript).
    Il faut donc rechercher le nom exact.
    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

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut
    Bonjour

    En ajoutant l'id sur les balise input comme cela

    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
    <?php
    // requete : operations
    $sql = "SELECT * FROM chapitres;";
    $sql_result = mysql_query($sql);
    while($row_op_mod = mysql_fetch_array($sql_result)) 
    {
    $idLigne = $row_op_mod['id_chapitre']; // id UNIQUE -> on s'en sert pour identifier la ligne !
    ?>
    <tr>  
    <td class="chapt">
    <input type="text" name="chapitre[<?php echo $idLigne; ?>]" id="chapitre[<?php echo $idLigne; ?>]" size="80" value="<?php echo $row_op_mod['designation_chapitre']; ?>" />
    <td class="box">
    <center><input type="checkbox" name="labox[<?php echo $idLigne; ?>]" id="labox[<?php echo $idLigne; ?>]" value="ON" /></center>
    </td>
    </tr>
    <?php
    	} // fin while
    ?>

    et en faisant :

    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
    function envoi_modif_chapitre(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    // 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){
    reponsetxt = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options a la liste
    alert(reponsetxt);
    }
    }
    // Ici on va voir comment faire du post
    xhr.open("POST","valide_modif_chapitres.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    chapitre= document.getElementById('chapitre').value;
    labox = document.getElementById('labox').value;
    xhr.send("chapitre="+chapitre+"&labox="+labox);
    			}
    là, j'obtiens plus aucun message

    je crois c'est à la transmission des éléments [] qui pose tjrs probléme.

    Cordialement

  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
    D'abord, ce serait sympa de poster le code HTML généré et pas le PHP (voir : Important : Les règles incontournables d'utilisation de ce forum).

    Ensuite, tu n'as toujours pas d'id chapitre ou labox
    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. [AJAX] Envoyer champs sans les afficher
    Par Scalp4 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/10/2008, 11h06
  2. [AJAX] traitement dynamique d'une zone texte HTML/PHP/AJAX
    Par Hyuge dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/07/2008, 09h48
  3. Valeur d'un champ de type File dans une page HTML
    Par AlainTech dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/12/2007, 13h17
  4. Un champ de type lien HTML ?
    Par Hervé73000 dans le forum 4D
    Réponses: 2
    Dernier message: 07/04/2007, 06h41
  5. Réponses: 16
    Dernier message: 24/05/2006, 21h57

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