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

JavaScript Discussion :

Transformer mon mysql_fetch_array en tableau javascript


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut Transformer mon mysql_fetch_array en tableau javascript
    Bonjour,

    Je dois dans une fonction javascipt transformer une requête mysql(donc finalement un tableau mysql_fetch_array) en un tableau javascript.

    Ce qui me permettra de s'en servir pour remplir un champ de type "select" de mon formulaire.

    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
     <script type="text/javascript">
    function remplir_select
    {
     
    <?php
                                    
    $result=mysql_query('SELECT Num_compte FROM Comptes where nature_compte="Produits"';)  or die ('Erreur SQL !'.mysql_error());;
     
    $tableauPHP=mysql_fetch_array($result);
     
     
    /*   code pour construire un tableau javascript*/
     
     
    ?>	
     
    // Vider mon champ select et le remplir des éléments de mon tableau Javascript obtenu
     
    }
     
    </script>

    Je voudrais ainsi que vous m'aidiez à transformer mon tableau PHP en Javascript ?

    Merci d'avance.

    Cordialement.

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut,

    tu peux faire le classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($row=mysql_fetch_array($result)){
     //on push dans un tableau
     $num_comptes[]=$row[0];
    }
    dans le js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var num_comptes = <?php echo json_encode($num_comptes);?>;
    //normalement, num_comptes=[nombre1, nombre2, ...]

    à la syntaxe près

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut
    Merci je vois bien.

    Maintenant que j'ai un tableau javascript, mon problème devient à mettre le contenu de ce tableau comme éléments d'une liste déroulante select .

    Cordialement

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par madina Voir le message
    Merci je vois bien.

    Maintenant que j'ai un tableau javascript, mon problème devient à mettre le contenu de ce tableau comme éléments d'une liste déroulante select .

    Cordialement
    Tu peux voir la Faq.

    A+.

  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,
    ça marchait bien coté client. je gérait ça dans une fonction javascripot, qui remplissait ma liste par ce tableau. que j'avait par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo json_encode($tableau_php)?>
    Mais comme quand j'envoie les infos à en mode serveur, je perds ma liste rechargée d'où j'ai fais appel à ajax.

    J'ai une fonction javascript qui gére la fonction ajax. un fichier php me fait la requête et me retourne le résultat sous forme de tableau php array que j'ai du mal à exploiter. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => 70100 [1] => 71600 )
    Mais je peine à transformer ce tableau php sous forme de tableau javascript.

    un me donne ce message de forme de tableau qui ne peux pas s'appliquer à code de la fonction 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
    function modif_select(){
     
     
    				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){
    						montab_ajax = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options a la liste
    						document.getElementById('js_tab').innerHTML = montab_ajax ;
    						alert(montab_ajax);
    xhr.open("POST","listes_comptes_prod.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
     
     
     
    				var natcompte= '';
                      for (var i=0; i<document.test.natcompte.length;i++)
                    {
      if (document.test.natcompte[i].checked){   
        natcompte = document.test.natcompte[i].value;
                 }
    			 }
     
     
     
     
     
    	/*if (natcompte=='prod')
    				{
    				document.getElementById('ligne_branche').style.display = "";
     
    				}
    				else
    				{
    				document.getElementById('ligne_branche').style.display = none;
    				}*/
     
     
     
    					xhr.send("natcompte="+natcompte);
     
     
    			}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form>
     
    <div id="js_tab" style="display:inline"><input type="text" name="js_tab" id="js_tab"/></div></form>
    fichier php qui est appelé par mon ajax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     $num_comptes_charg=array();                    
                                                    
    while($row_charg=mysql_fetch_array($res_charg )){
     //on push dans un tableau
     
     
     array_push ($num_comptes_charg,$row_charg['Num_compte']);
    }
    //mysq_free_result($res_charg );
     
    print_r($num_comptes_charg);
    ?>
    Je piétine grave à avoir le tableau javascript sur la base de tableau php retourné par l'appel AJAX !

    si vous avez des solutions, je suis preneur.

    Cordialement

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    1) php n'est qu'une machine à écrire ...
    2) ajax ne peux envoyer et recevoir que du string

    => ton code serveur doit rédiger le bon string de d'array

    => lors de la reception (réponse ajax) tu reçois du string que tu dois évaluer ou parser ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    utilise mysql_fetch_assoc
    ce sera plus clair
    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
    ...
      $result = array(
        'count' => mysql_num_rows($res_charg),
        'rows' => array()
      );
     $num_comptes_charg=array();
     
    while($row_charg=mysql_fetch_assoc($res_charg )){
     array_push ($result['rows'],$row_charg);
    }
    mysq_free_result($res_charg );
     
    echo json_encode($result);
    ainsi dans ton javascript tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result=JSON.parse(xhr.responseText);
    et tu as accès à ton résultat
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    alert(result.count);
    for (i=0; i < result.count; i++) {
      alert(result.rows[i].Num_compte);
    }
    A+JYT

  8. #8
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    Totalement hors débat mais dans le cadre d'un développement nouveau (par là, je veux dire non-reprise d'un code ancien), autant ne plus utiliser mysql_* et passer à PHP5 avec mysqli_* (pour faire simple, si on connait bien mysql_*) ou, mieux, PDO (histoire de passer en objet). Pour info, nous ne sommes plus en 2004, année de sortie de PHP5, mysqli_* et PDO mais aussi de l'arrêt du maintien de mysql_*.

    Pour en revenir au débat, je suis d'accord avec sekaijin sur tout sauf sur JSON.parse qui n'est pas compatible pour tous les navigateurs (IE6-7, par exemple).
    Il faudrait une condition pour ces navigateurs et devoir... eval() uer le json (oui, moi aussi, je pleure)

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut
    Merci ,sekaijin pour la réponse.

    En fait vu que j'ai pas trop utilisé ces notions de tableau jusq'ici, j'ai tout à fait repris ton post mais ça marche pas.

    je suis entrain de revoir les déclarations et autres.

    car le but c'est d'avoir un tableau avec une seule indice javascript pour pourvoir vider et remplir mon champ select.


    Cordialement

  10. #10
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    entièrement d'accord

    mais ici il est fait un mysql_fetch_array et un simple changement d'un mot dans un code existant permet de se faciliter grandement la vie coté JS

    A+JYT

  11. #11
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut
    Bojour et Merci à tous j'ai résolu le probléme par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (xhr.readyState==4 && xhr.status == 200 ) 
    					{
    					montext=xhr.responseText;
    						js_table=montext.split(",");
    						js_tableau=JSON.parse(js_table);

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

Discussions similaires

  1. Transformer mon tableau php en un tableau js (50% du travail fait)
    Par beegees dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/03/2009, 11h06
  2. Réponses: 1
    Dernier message: 26/03/2008, 18h21
  3. Réponses: 2
    Dernier message: 23/05/2007, 10h40
  4. [XHTML 1.0] Transformer mon tableau en div
    Par stailer dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/05/2005, 18h50

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