Bonjour
Voila j'éssaye de faire un graphique comme ceci.
Voici mon code ajax simple pour afficher le graphique.
$("#competence_users").grafikon({
width: 650,
height: 650,
general: {
fontSize: "small",
fontColor: "#000",
},
mode: "evaluation",
evaluation: {
click: false,
sections: 5,
separator: false,
separatorColor: "#3a3838",
levels: 10,
infoIn: "points",
distanceFromCentre: 9,
points: [6, 7, 6, 4, 8, 9],
activeColor: ["#11add3", "#1aaa8f", "#9952a2", "#a4846b", "#febd0d"],
directionColor: "light",
inactiveColor: "#5f81b82e",
resultsBackground: "#222",
resultsEffect: true,
resultsFontColor: "#fff"
},
responsive: {
status: true,
maxSize: 800,
minSize: 350
}
});
Pour afficher le nombre de points par compétence c'est ca
points: [6, 7, 6, 4, 8, 9],
seulement je voudrais appeler les points dans une page Php qui pour les récupérers dans la bdd.
Comment je dois faire ? je dois utiliser Ajax ?
Pouvez vous me dir ce que je dois faire ?
Tu peux utiliser ajax pour récuperer tes points en json
la partie php ne fait que renvoyer le tableau en json avec l'entête qui va bien
voici un exemple sans accès à la BD
<?php
header('Content-Type: application/json; charset=utf-8');
$points = [6, 7, 6, 4, 8, 9];
$tab = [ "points" => $points];
exit(json_encode($tab));
?>
ok je doit mettre ca dans ma page php, mais ce que je ne comprend c'est comment récupérer l'info de cette page.
à la place de
points: [6, 7, 6, 4, 8, 9],
est ce que je doit faire comme ceci ?
ajax:{
url:"includes/profile/caractere/competence.php",
type:"POST",
data: data,
success: success
},
},
Tu peux faire un appel ajax avec jQuery
let points = [];
$.get( "includes/profile/caractere/competence.php",
false,
"json")
.done(function( data, textStatus, jqXHR ) {
points = data.points;
// ici appeler la suite qui dessine
})
.fail(function( jqXHR, textStatus ) {
alert( "Error: " + jqXHR );
console.log(textStatus);
});
Bonjour
je suis en train d'essayer de récupérer une moyenne de points via la bdd.
header('Content-Type: application/json; charset=utf-8');
$concentration = "SELECT CAST(SUM(COALESCE(point_positif, 0) - COALESCE(point_negatif, 0)) / (SELECT COUNT(*) FROM point_users WHERE `to` = '".$_POST["iduser"]."' AND competence = 5) AS DECIMAL(16, 2)) AS ResultaComp FROM point_users WHERE `to` = '".$_POST["iduser"]."' AND competence = 5";
$resultconcentration = mysqli_query($connect, $concentration);
$ResultaComp = mysqli_fetch_array($resultconcentration);
$competence5 = $ResultaComp["ResultaComp"];
$points[] = $competence5;
$points[] = 4;
$points[] = 6;
$points[] = 1;
$points[] = 9;
$data = $points;
$tab = [ "points" => $data];
exit(json_encode($tab));
seulement le résultat dans la variable $compétence5 m'affiche null dans mon graphique, mais si je fais une alert de $compétence5 il me donne bien le bon résultat, je ne comprends pas pourquoi, ou je fais mon erreur.
merci
Bonjour.
Est-ce que tu reçois bien le typage correct depuis ta base de données qu'attend ton graphique ?
Car si tu lui envoies une chaîne de caractères à la place d'une valeur de type int
, il est possible que ça vienne de là ton problème.
Dans le cas où tu ne reçoives pas le bon typage depuis la base de données, il te suffit par exemple de le modifier côté PHP :
$points[] = (int)$competence5;
Par contre, pourquoi est-ce que tu utilises cette syntaxe pour définir ton tableau $points
?
Ce serait peut-être mieux de définir le tableau directement :
$points = [$competence5, 4, 6, 1, 9];
Comme tu n'as pas mis d'alias à ton calcul, il ne connait pas "ResultaComp"
Essaye simplement de récupérer le premier champ :
$competence5 = $ResultaComp[0];
La fonction CAST convertit un résultat en un type, encore faut il indiquer le type
essaye
SELECT CAST(SUM(COALESCE(point_positif, 0) - COALESCE(point_negatif, 0) AS SIGNED) \ ...
bonjour
merci à vous j'ai tout essayé mais ça ne fonctionne pas, je suis en train de m'arracher tous mes sourcils un par un tellement ça m'énerve
header('Content-Type: application/json; charset=utf-8');
$point_P = "SELECT SUM(COALESCE(point_positif, 0) - COALESCE(point_negatif, 0)) FROM point_users WHERE `to` = '".$_POST["iduser"]."' "; // calcule points positifs - points négatifs
$resultpoint_p = mysqli_query($connect, $point_P);
$resultpoint = mysqli_fetch_array($resultpoint_p);
$nbr_note = "SELECT COUNT(*) FROM point_users WHERE `to` = '".$_POST["iduser"]."' "; // compte le nombre de notes recus negatifs et positifs
$resultnbr_note = mysqli_query($connect, $nbr_note);
$resultnbr = mysqli_fetch_array($resultnbr_note);
$competence5 = $resultpoint[0] / $resultnbr[0]; // divise le total de points par le nombre de notes
// $points = [(int)$result, 4, 6, 1, 9]; // autre mthode tableau
$points[] = (int)$competence5;
$points[] = 4;
$points[] = 6;
$points[] = 1;
$points[] = 9;
$data = $points;
$tab = [ "points" => $data];
echo json_encode($tab);
lorsque je fait un echo de :
$competence5 = $resultpoint[0] / $resultnbr[0]; // divise le total de points par le nombre de notes
il me retourne bien le bon résultat, c'est dans mon tableau que je fais quelque chose de mal alors.
J'ai essayé les deux méthodes pour le tableau.
Tu ne nous dis pas ce que tu as comme résultat faux !!!
Pour voir le contenu de ton tableau, utilises var_dump($tab)
je crois que c'est ma façon d'envoyer id mon utilisateur dans mon Ajax qui ne fonctionne pas bien avec $POST, car dans mes requêtes SQL si je remplace " $_POST["iduser"] " par un id 1,2 ou 3 ça fonctionne trés bien sinon j'ai un "null" ou "0" avec " (int)$competence5 ".
je vous montre ce que je fais de mal.
Dans ma page html, mon ajax qui envoie les données pour mon tableau.
/*******************************************************************/
var iduser = $('#iduser').text(); //on envoie id utilisateur
let points = [];
$.post( "includes/profile/caractere/competence.php",
false,
"json")
.done(function( data, textStatus, jqXHR ) {
points = data.points;
iduser = data.iduser;
$("#competence_users").grafikon({
width: 650,
height: 650,
general: {
fontColor: "#fff",
fontSize: "large",
},
mode: "evaluation",
evaluation: {
click: false,
sections: 5,
separator: false,
separatorColor: "#3a3838",
levels: 10,
infoIn: "points",
distanceFromCentre: 9,
points: points,
iduser: iduser,
activeColor: ["#e40d0de0 ", "#6991d0", "#00FF00", "#FFA500 ", "#343533"],
directionColor: "light",
inactiveColor: "#5f81b82e",
resultsBackground: "#ffffff00",
resultsEffect: "shadow",
resultsFontColor: "#ffffff00",
infoInBackground: "#2125285c"
},
responsive: {
status: true,
maxSize: 800,
minSize: 250
}
});
})
.fail(function( jqXHR, textStatus ) {
alert( "Error: " + jqXHR );
console.log(textStatus);
});
/*******************************************************************/
et dans ma page php "competence.php" où je veux récupérer id utilisateur et renvoyer le résultat de mon tableau pour mon graphique.
header('Content-Type: application/json; charset=utf-8');
$point_P = "SELECT SUM(COALESCE(point_positif, 0) - COALESCE(point_negatif, 0)) FROM point_users WHERE `to` = '".$_POST["iduser"]."' "; // calcule points positifs - points négatifs
$resultpoint_p = mysqli_query($connect, $point_P);
$resultpoint = mysqli_fetch_array($resultpoint_p);
$nbr_note = "SELECT COUNT(*) FROM point_users WHERE `to` = '".$_POST["iduser"]."' "; // compte le nombre de notes recus negatifs et positifs
$resultnbr_note = mysqli_query($connect, $nbr_note);
$resultnbr = mysqli_fetch_array($resultnbr_note);
$competence5 = $resultpoint[0] / $resultnbr[0]; // divise le total de points par le nombre de notes
// $points = [(int)$result, 4, 6, 1, 9]; // autre mthode tableau
$points[] = (int)$competence5;
$points[] = 4;
$points[] = 6;
$points[] = 1;
$points[] = 9;
$data = $points;
$tab = [ "points" => $data];
echo json_encode($tab);
je vais essayer var_dump($tab) mais je crois que j'ai cette erreur qui apparaît "Error: [object Object]"
je pense que je n'envoie pas bien mon iduser
c'est bon j'y suis arrivé comme je voulais, c'était bien ma façon de $Post que je faisais mal.
$.post( "includes/profile/caractere/competence.php",
{iduser : iduser},
false,
"json")
merci a tous