Php MySQL: Sortir des Id par ordre de sore
gemça
-
Alain42 -
Alain42 -
Bonjour,
Je sais plus comment faire, j'espère que l'un de vous pourra m'aider.
J'ai ce code qui compare un variable donnée par la page ($grp) et des variable issue d'une table ($vise).
while($row = mysql_fetch_array($result)){
$score=0;
$vise= unserialize($row["Data"]);
echo "<hr>Comparaison du fichier <b>".$Fichier."</b> avec l'Id".$row["Id"].":<br>\"".$row["Nom"]."\" avec un écart de ".$ecart."%<br>";
if (sizeof($grp)==sizeof($vise)){
for($i=0; $i<sizeof($vise);$i++){
$ecartgrp[$i]=abs(($ecart/100)*$grp[$i]);
if ((($grp[$i]-$ecartgrp[$i]) <= $vise[$i]) && ($vise[$i] <= ($grp[$i]+$ecartgrp[$i]))){
$score++;
}
}
echo "score:".$score."/".($numgrp+1)."valeurs<br>";
}
else{
echo "Le fichier envoyé n'a pas été traité car il n'est pas au bon format ou ne contient pas le même nombre de données";
}
}
Je voudrais faire aficher les Id de la table par ordre de score du plus grand au plus petit.
j'ai essayé de placer les $score dans une variable array et de traiter ensuite avec un arsort($score, $key => $val) mais je n'arrive plus ensuite a traiter l'affichage de Id car je ne suis plus dans la boucle du while..
Si vous pouvez m'indiquer le code et/ou l'astuce qui me manque, ce serait super!
Merci d'avance
Je sais plus comment faire, j'espère que l'un de vous pourra m'aider.
J'ai ce code qui compare un variable donnée par la page ($grp) et des variable issue d'une table ($vise).
while($row = mysql_fetch_array($result)){
$score=0;
$vise= unserialize($row["Data"]);
echo "<hr>Comparaison du fichier <b>".$Fichier."</b> avec l'Id".$row["Id"].":<br>\"".$row["Nom"]."\" avec un écart de ".$ecart."%<br>";
if (sizeof($grp)==sizeof($vise)){
for($i=0; $i<sizeof($vise);$i++){
$ecartgrp[$i]=abs(($ecart/100)*$grp[$i]);
if ((($grp[$i]-$ecartgrp[$i]) <= $vise[$i]) && ($vise[$i] <= ($grp[$i]+$ecartgrp[$i]))){
$score++;
}
}
echo "score:".$score."/".($numgrp+1)."valeurs<br>";
}
else{
echo "Le fichier envoyé n'a pas été traité car il n'est pas au bon format ou ne contient pas le même nombre de données";
}
}
Je voudrais faire aficher les Id de la table par ordre de score du plus grand au plus petit.
j'ai essayé de placer les $score dans une variable array et de traiter ensuite avec un arsort($score, $key => $val) mais je n'arrive plus ensuite a traiter l'affichage de Id car je ne suis plus dans la boucle du while..
Si vous pouvez m'indiquer le code et/ou l'astuce qui me manque, ce serait super!
Merci d'avance
A voir également:
- Php MySQL: Sortir des Id par ordre de sore
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert - Forum PHP
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
7 réponses
Bonjour,
pour sortir des scores du plus gd au plus petit :
requette : "SELECT * FROM ta_table ORDER BY score DESC"
et dans ta boucle while($row = mysql_fetch_array($result)){
echo "ID: ".$row['id']." Score ".$row['score'];
}
si le nom du champ de la table qui contient les scores est "score
pour sortir des scores du plus gd au plus petit :
requette : "SELECT * FROM ta_table ORDER BY score DESC"
et dans ta boucle while($row = mysql_fetch_array($result)){
echo "ID: ".$row['id']." Score ".$row['score'];
}
si le nom du champ de la table qui contient les scores est "score
Bonjour alain et merci pour cette approche,
malheuresuement ma variable $score n'est pas stockée dans la table, mais elle est générée par le script dans la boucle for() qui elle même est dans le while qui rapatrie le Id de la table.
Je n'arrive donc pas a faire un select de $score.
Tout mon problème est là en fait:
Je rapartie des Id d'une table, j'en extrait la variable $vise que je compare avec une variable $grp.
Cette comparaison donne un $score.
Il me faudrait ensuite faire afficher les Id par score DESC.
Merci pour votre aide.
malheuresuement ma variable $score n'est pas stockée dans la table, mais elle est générée par le script dans la boucle for() qui elle même est dans le while qui rapatrie le Id de la table.
Je n'arrive donc pas a faire un select de $score.
Tout mon problème est là en fait:
Je rapartie des Id d'une table, j'en extrait la variable $vise que je compare avec une variable $grp.
Cette comparaison donne un $score.
Il me faudrait ensuite faire afficher les Id par score DESC.
Merci pour votre aide.
Rebonjour,
je ne comprend pas trop ton problème
déja une anomalie::
if (sizeof($grp)==sizeof($vise))
sizeof n'est pas approprié, pour comparer deux variables tu fais:
sizeof(..) c'est pour obtenir le nombre d'éléments d'un array
et ta boucle for sur sizeof($vise) si $vise n'est pas un array, a première vue ce n'en est pas un, ça ne peut pas marcher.
et le bout de code que tu mets ne correspond pas à ce que tu demandes.
Cordialement
@lain
je ne comprend pas trop ton problème
déja une anomalie::
if (sizeof($grp)==sizeof($vise))
sizeof n'est pas approprié, pour comparer deux variables tu fais:
if ($grp == $vise)tout simplement
sizeof(..) c'est pour obtenir le nombre d'éléments d'un array
et ta boucle for sur sizeof($vise) si $vise n'est pas un array, a première vue ce n'en est pas un, ça ne peut pas marcher.
et le bout de code que tu mets ne correspond pas à ce que tu demandes.
Cordialement
@lain
bonsoir alain,
je compare bien deux variables array $grp et $vise ($vise vient d'un unserialize de la colone Data de la table).
C'est pour cela que je teste d'abord leur tailles avec sizeof(..).
Ensuite, dans la boucle for, chaque fois que la condition if est vrai le score s'incremente.
j'ai donc pour chaque Id de ma table un score qui est généré.
par exemple
Id1 aura $score=10
Id2 aura $score=12
Id3 aura $score=9
Id4 aura $score=15
je voudrasi "simplement" voir a l'écran un affichage du style.
Score:
Id4 avec score=15
Id2 avec score=12
Id1 avec score=10
Id3 avec score=9
mais je n'arrive pas a faire afficher en même temps les données de la table en fonctiuon du score..
En tout cas merci pour ton aide.
je compare bien deux variables array $grp et $vise ($vise vient d'un unserialize de la colone Data de la table).
C'est pour cela que je teste d'abord leur tailles avec sizeof(..).
Ensuite, dans la boucle for, chaque fois que la condition if est vrai le score s'incremente.
j'ai donc pour chaque Id de ma table un score qui est généré.
par exemple
Id1 aura $score=10
Id2 aura $score=12
Id3 aura $score=9
Id4 aura $score=15
je voudrasi "simplement" voir a l'écran un affichage du style.
Score:
Id4 avec score=15
Id2 avec score=12
Id1 avec score=10
Id3 avec score=9
mais je n'arrive pas a faire afficher en même temps les données de la table en fonctiuon du score..
En tout cas merci pour ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je crois que je viens de trouver en faisant, après la boucle while..:
arsort ($score);
foreach($score as $key => $val){
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
if($key==$row["ID"]){
echo "<hr>Votre fichier <b>".$Fnm."</b> avec tolérence à ".$ecart."% score ".$val."/".($numgrp+1)." avec:<br>";
echo"ID:".$row["ID"].":<b>".$row["Nom"]."</b><br>";
echo"Localité: ".$row["Localite"]."<br>";
}
}
}
Ca fera surement bondir les programmeurs.. mais bon amateurismle oblige et sa semble fonctionner
Merci @lin
arsort ($score);
foreach($score as $key => $val){
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
if($key==$row["ID"]){
echo "<hr>Votre fichier <b>".$Fnm."</b> avec tolérence à ".$ecart."% score ".$val."/".($numgrp+1)." avec:<br>";
echo"ID:".$row["ID"].":<b>".$row["Nom"]."</b><br>";
echo"Localité: ".$row["Localite"]."<br>";
}
}
}
Ca fera surement bondir les programmeurs.. mais bon amateurismle oblige et sa semble fonctionner
Merci @lin
Bonjour,
sizeof() qui est identique à count() compte le nombre d'éléments d'un tableau ou si pas tableau le nombre de propriétés.
Donc ça ne peut pas te servir a compare deux varaibles.
pour comprare deux variables
$var1= 1235
et
$var2=1630
par exemple
if($var1==$var2) egal ?
if($var1!=$var2) different ?
if($var1>$var2) plus grand ?
if($var1<$var2) plus petit ?
sizeof() qui est identique à count() compte le nombre d'éléments d'un tableau ou si pas tableau le nombre de propriétés.
Donc ça ne peut pas te servir a compare deux varaibles.
pour comprare deux variables
$var1= 1235
et
$var2=1630
par exemple
if($var1==$var2) egal ?
if($var1!=$var2) different ?
if($var1>$var2) plus grand ?
if($var1<$var2) plus petit ?
Bonjour,
Ca marche mais tu te complique, tu fais plusieurs fois appel à la base par mysql_query pour rien.
Ne le prend pas mal.
Essayes en:
1- requette à la base qui va te sortir tous les champs de ta table dans l'ordre des scores décroissants
2- par boucle While affichage des résultats avec les champs que tu veux
Ca marche mais tu te complique, tu fais plusieurs fois appel à la base par mysql_query pour rien.
Ne le prend pas mal.
Essayes en:
1- requette à la base qui va te sortir tous les champs de ta table dans l'ordre des scores décroissants
2- par boucle While affichage des résultats avec les champs que tu veux
//connexion a la base puis $req="SELECT * FROM ta_table ORDER BY score DESC"; $result = mysql_query($req) or die ("Pb avec la requette ".mysql_error()); while($row = mysql_fetch_array($result)){ // la tu mets ce que tu veux echo "<hr>Votre fichier <b>".$Fnm."</b> avec tolérence à ".$ecart."% score ".$val."/".($numgrp+1)." avec:<br>"; echo"ID:".$row["ID"].":<b>".$row["Nom"] ."</b>".$row['score']."<br>"; echo"Localité: ".$row["Localite"]."<br>"; }