firebug?
La source originale par rapport a son qu'on n'a fait n'est pas bonne.
Je dois faire un truc vite fait et je rectifie le code.
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
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
95
96
97
98
99
100
101
102 <!DOCTYPE html> <html> <head> <title></title> <link href="styles/kendo.common.min.css" rel="stylesheet" /> <link href="styles/kendo.default.min.css" rel="stylesheet" /> <script src="js/jquery.min.js"></script> <script src="js/kendo.all.min.js"></script> </head> <body> <?php include("menu.php"); ?> <?php include("connexionbdd.php"); // query for the definition, type of this problem ?> <?php $sql_pb="SELECT * from problem where id_Pb=1"; $res_pb=mysql_query($sql_pb); $rows_pb=mysql_fetch_assoc($res_pb); ?></br></br></br></br>Definition: <?php echo $rows_pb['def_Pb']; $var=$rows_pb['id_Pb_Type'] ?> </br></br> <script src="people.js"></script> <div id="example" class="k-content"> <div id="clientsDb"> <div id="grid" style="height:580px"></div> </div> <style scoped> #clientsDb { width: 892px; margin: 40px auto; padding:2px 4px 0 4px; } </style> <div id="grid"></div> <div id="grid"></div> <?php $sql_inc="SELECT tb_i.id_Inc,tb_i.id_Pb,tb_i.name_Inc,tb_i.desc_Inc,tb_i.date_Inc,tb_i.id_Loc FROM incident tb_i LEFT JOIN location tb_l ON tb_i.id_Loc = tb_l.id_Loc where tb_i.id_Pb=1 ORDER BY tb_i.date_Inc DESC LIMIT 5 "; $res_inc=mysql_query($sql_inc); while($rows_inc=mysql_fetch_assoc($res_inc)){ $data_set .= "{"; $data_set .= "date:'" . $rows_inc['date_Inc'] . "',"; $data_set .= "name:'" . $rows_inc['name_Inc'] . "',"; $data_set .= "desc:'" . $rows_inc['desc_Inc'] . "',"; $data_set .= "location:'" . $rows_inc['id_Loc'] . "'"; $data_set .= "},"; } ?> <script> alert("Plop"); //on declare une variable et on affecte le code PHP var data_set = <?php echo $data_set; ?>; //on controle le schéma js alert(data_set); //on verifie le type de donnée js alert(typeOf(data_set)); var dataSource = new kendo.data.DataSource({ data: [data_set] }); $("#grid").kendoGrid({ columns: [ { field: "date" }, { field: "name" }, { field: "desc" }, { field: "location" } ], dataSource: dataSource, groupable: true, sortable: true, pageable: { refresh: true, pageSizes: true }, }); var grid = $("#grid").data("kendoGrid"); grid.setDataSource(dataSource); </script> </div> </body> </html>
Bonjour,
si je puis me permettre...
@headmax :
Es-tu sûr que :
- ce que tu proposes répond bien à la question initiale ?
- ton interlocutrice a le niveau requis pour comprendre et assimiler ta méthode ?
- tes explications sont-elles suffisantes ? (des liens vers des tutos/cours pourraient être un plus)
- donnes-tu des réponses à ses questions (firebug ?...) ?
Je pense que tu es en mode "monologue" depuis un bon moment...
@madusa :
- comprends-tu ce que headmax te propose ? la méthode ? le principe de fonctionnement ?
- n'avais-tu pas un code à nous montrer AVANT l'intervention de headmax => celui avec lequel TU construit ton tableau + ... ?
N.B. firebug = plugin à installer sur Firefox => aide précieuse pour le débogage
Google Chrome propose aussi un outil similaire.
Je comprend la méthode donc ça va ...J'arrive à retrouver mon idée également ....
ça ne m'affiche rien (et j'ai mis $data_set=0; parce que il me donnait comme erreur que $data_set n'est pas définie
enfin voilà pour la concaténation:
le script ne marche pas parce-que j'ai aucune fenetre d'alert meme quand je place juste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... $data_set=""; $data_set ="{"; ...au début
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <script> alert("ok"); </script>
J'arrive comme un cheveu sur la soupe mais ... pas convaincu que la boucle fonctionne. A chaque tour de boucle tu sembles écraser la variable. Donc même si la requête renvoie 10 résultats, la chaîne data_set ne contiendra que le dernier.
Il faut que la chaîne finale ait ce format, non ?
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 data: [ { /*"les résultats de la première ligne de ma table"*/ }, { /*"les résultats de la seconde ligne de ma table"*/ }, { /*"les résultats de la troisième ligne de ma table"*/ } // etc ]
utilise les outils qui sont faits pour ça. Je pense à json_encode. Il te formatera ton objet javascript convenablement et tu n'auras pas de problèmes de virgules ou autres fioritures manquantes :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $data_row = array(); while($rows_inc=mysql_fetch_assoc($res_inc)){ $data_row[] = $rows_inc; } $data_set = json_encode($data_row);
oui tu as raison pour la boucle. En essayant ce code, je vois l'affichage que du dernier résultat de ma requêteSi je défini un tableau et que je le rempli de $data_set, ça devrai le faire, non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part var_dump($data_set);
a oui mais pourquoi ça ne m'affiche ce ne serais -ce que le dernier ?
Par exemple dans ton code ci dessous :
A chaque tour de boucle, $data_set = "{"; réinitialise la variable $data_set ! Du coup, seul le dernier enregistrement du résultat de ta requête sera contenu dedans.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 while($rows_inc=mysql_fetch_assoc($res_inc)){ $data_set = "{"; $data_set .= "data: ["; $data_set .= "{"; $data_set .= "date:'" . $rows_inc['date_Inc'] . "',"; $data_set .= "name:'" . $rows_inc['name_Inc'] . "',"; $data_set .= "desc:'" . $rows_inc['desc_Inc'] . "',"; $data_set .= "location:'" . $rows_inc['id_Loc'] . "'"; $data_set .= "}"; $data_set .= "]"; $data_set .= "}"; }
Oui, voir mon bout de code présenté en exemple ci-avantSi je défini un tableau et que je le rempli de $data_set, ça devrai le faire, non?
oui ça remplace à chaque fois la variable et il reste donc que le dernier résultat de la requete.
Ce n'est pas plus correct de faire ceci?
mettre dans le tableau chaque $dataset?
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 <?php $sql_inc="SELECT tb_i.id_Inc,tb_i.id_Pb,tb_i.name_Inc,tb_i.desc_Inc,tb_i.date_Inc,tb_i.id_Loc FROM incident tb_i LEFT JOIN location tb_l ON tb_i.id_Loc = tb_l.id_Loc where tb_i.id_Pb=1 ORDER BY tb_i.date_Inc DESC LIMIT 5 "; $res_inc=mysql_query($sql_inc); $data_row = array(); while($rows_inc=mysql_fetch_assoc($res_inc) && $i<4){ $data_set .= "{"; $data_set .= "date:'" . $rows_inc['date_Inc'] . "',"; $data_set .= "name:'" . $rows_inc['name_Inc'] . "',"; $data_set .= "desc:'" . $rows_inc['desc_Inc'] . "',"; $data_set .= "location:'" . $rows_inc['id_Loc'] . "'"; $data_set .= "},"; $data_row[] = $data_set; } ?>
après avoir faitj'ai bien le type de ce dernier :array avec les 4 lignes (les 4 résultats de ma requete) donc maintenant le script JS n'est pas lu car meme quand je met une alert box rien ne s'affiche...
Code : Sélectionner tout - Visualiser dans une fenêtre à part var_dump($data_rows);
J'essaye un alert box un peu partout , il marche bien tout en haut ou en bas ou entre le php et le script suivant mais pas dans le script suivant
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 <script> alert("Plop"); //on declare une variable et on affecte le code PHP var data_set = <?php echo $data_set; ?>; //on controle le schéma js alert(data_set); //on verifie le type de donnée js alert(typeOf(data_set)); var dataSource = new kendo.data.DataSource({ data: [data_set] }); $("#grid").kendoGrid({ columns: [ { field: "date" }, { field: "name" }, { field: "desc" }, { field: "location" } ], dataSource: dataSource, groupable: true, sortable: true, pageable: { refresh: true, pageSizes: true }, }); var grid = $("#grid").data("kendoGrid"); grid.setDataSource(dataSource);alert("obxx"); </script>
Essaie de faire tourner le script dans ta tête, ou sur le papier ...
- data_set n'est pas défini, donc dès la première concaténation cela va planter.
- imaginons que tu aies déclaré/initialisé data_set avant la boucle, le premier élément de ton tableau data_row sera juste, mais le deuxième ? Il contiendra et le premier résultat de la requête, et le deuxième vu que tu ne réinitialises pas data_set ...
Comme je l'ai dit plus haut, laisse les outils PHP construire la chaine pour toi ! Tu n'as pas à te soucier de ça ...
D'ailleurs pourquoi joindre la table lcoation ? Je n'ai pas l'impression que tu te serves de ce qu'elle contient ...
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 <?php // récupération des colonnes que tu souhaites avoir dans ton tableau d'objet : à savoir date, name, desc et location $sql_inc="SELECT date_Inc as date, name_Inc as name, desc_Inc as desc, id_Loc as location FROM incident WHERE id_Pb = 1 ORDER BY date_Inc DESC LIMIT 5"; $res_inc=mysql_query($sql_inc); $data_row = array(); while($rows_inc=mysql_fetch_assoc($res_inc)){ $data_row[] = $rows_inc; } $data_set = json_encode($data_row); ?>
J'utilise 2 tables donc oui la requete est utile
L'exemple ci-dessus va afficher :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
Donc je dois mettre date ,desc,name,location dans mon array ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part {"a":1,"b":2,"c":3,"d":4,"e":5}
Pour avoir
Code : Sélectionner tout - Visualiser dans une fenêtre à part {"date":1,"name":2,"desc":3,"location":4}
oui tu as tout compris.
Tu as analysé le code que je viens de poster ? Ça fait exactement ça ... c'est pour ça que j'ai renommé le nom des colonnes de ta requête
Euh... faut le dire vite quand même...Envoyé par Kaamo
![]()
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 JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
oui mais une requete ne donne que les données présents et pas le nom de la colonne + les données?
La requete ne fonctionne pas à cause de la location je pense parce que la location n'est pas dans la table incident mais location (voir le document joint)
N'hésite pas à te référer à la documentation. C'est bien expliqué, avec des exemples, c'est le premier réflexe à avoir![]()
Merci
Pour la requete le "AS " permet de renommer la colonne et non de mettre le nom de la colonne dans le résultat , n'est ce pas ?
Dans la table incident, selon cette capture d'écran, il y a bel et bien id_Loc
oui mais une requete ne donne que les données présents et pas le nom de la colonne + les données?Et bien si. Pour récupérer, par exemple, la valeur de la colonne 'date_Inc' tu fais bien $rows_inc['date_Inc'], non ?
$rows_inc est un tableau associatif. Donc si on reprend le code que j'ai posté, il ressemble à ça
:
Quand tu te pose ce genre de question n'héiste pas à lire les documentations, c'est la base. Si tu ne l'as pas appréhendé tu vas droit dans le mur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part array('date' => 'valeur de la date', 'name' => 'valeur de name', 'desc' => 'valeur de desc', 'location' => 'id de la location')
Aussi, n'hésite pas à y aller pas à pas, afficher ce que contiennent les variables. Ne copie/colle pas d'un seul bloc des codes que tu peux trouver au détour d'internet
D'accord mais je veux le nom de la location donc je dois refaire une requete pour trouver le nom de la location à partir de l'id de la location dans la table location
erreur: requete fausse me dit il
Ok
Merci de tes conseils je vais y aller pas à pas![]()
Partager