Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/07/2011, 23h30   #1
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
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 :
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.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 00h01   #2
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
salut,

tu peux faire le classique
Code :
1
2
3
4
while($row=mysql_fetch_array($result)){
 //on push dans un tableau
 $num_comptes[]=$row[0];
}
dans le js :
Code :
var num_comptes = <?php echo json_encode($num_comptes);?>;
//normalement, num_comptes=[nombre1, nombre2, ...]

à la syntaxe près
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/07/2011, 01h12   #3
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
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
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 08h06   #4
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270
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+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 09h01   #5
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
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 :
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 :
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 :
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 :
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 :
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
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 09h05   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
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
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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/07/2011, 10h35   #7
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 421
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 421
Points : 2 809
Points : 2 809
utilise mysql_fetch_assoc
ce sera plus clair
Code php :
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 :
result=JSON.parse(xhr.responseText);
et tu as accès à ton résultat
Code javascript :
1
2
3
4
alert(result.count);
for (i=0; i < result.count; i++) {
  alert(result.rows[i].Num_compte);
}
A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 11h46   #8
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
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)
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 12h17   #9
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
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
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 12h19   #10
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 421
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 421
Points : 2 809
Points : 2 809
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 00h28   #11
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Bojour et Merci à tous j'ai résolu le probléme par :
Code :
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);
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h28.


 
 
 
 
Partenaires

Hébergement Web