additionner des valeurs dans des champs différents d'un bbd

HD
Mammouth du PHP | 1181 Messages

28 janv. 2007, 01:19

Lol j ai fait la même erreur que toi :D
en fait la nouvelle ligne ne récupère que les valeur du quiz 51 à 54
toi en faisant * tu récupère tous les champs de la bd, ce qui est déconseillé
donc la meilleur chose à faire est de sélectionner uniquement les champs dont tu as besoin, en exploitant l'astuce de quiz... as total :!:
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

manhemane
Invité n'ayant pas de compte PHPfrance

28 janv. 2007, 01:46

Ce n'est pas de la mauvaise volonté de ma part mais je comprends pas tout.
Quelle serait alors la ligne à écrire ??

manhemane
Invité n'ayant pas de compte PHPfrance

28 janv. 2007, 01:51

Si tu dis que ma ligne de code récupère toutes les valeurs de chaque champs, pourtant le score total affiché correspond bien uniquement à la somme de quiz51 avec qui52 avec quiz53 et quiz54 alors que il y d'autres valeurs pour d'autres champs (quiz41, quiz42...) et ces valeurs ne sont pas ajouter.
Je comprends pas.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 janv. 2007, 02:27

je comprends pas pourquoi tu t'énerves. Je savais que le monde change et (...)
J'essayais juste de te faire remarquer de bien utiliser les outils du forum...
On construit un monde correct... pas parfait trop ennuyeux :wink:

Petit cours rapide.
En faissant ça :

Code : Tout sélectionner

SELECT * FROM table
Tu sélectionnes tous les champs de la table "table"

Code : Tout sélectionner

SELECT champ1, champ2 FROM table
tu ne sélectionnes que les 2 champs dont tu as besoin même si la table comporte un champ "champ3".

il te faut donc utiliser cette requete qui marche et y ajouter les champs dont tu as besoin :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

manhemane
Invité n'ayant pas de compte PHPfrance

28 janv. 2007, 10:39

désolé, si j'ai mal interprété ta réaction.
J'ai essayé une autre ligne de code en suivant tes conseils :
$query = "SELECT * quiz51,quiz52,quiz53,quiz54 FROM clubers ORDER BY quiz51+quiz52+quiz53+quiz54 DESC LIMIT 0, 50;";

et je n'ai aucun affichage des scores et des noms des joeurs alors que si je mets cette ligne de code :
$query = "SELECT * FROM clubers ORDER BY quiz51+quiz52+quiz53+quiz54 DESC LIMIT 0, 50;";
alors tout fonctionne bien.
Pourquoi la ligne de code que vous conseillé et dont je comprends le sens ne fonctionne pas ?
Est-ce que c'est moi qui réalise une erreur quelque part ?

manhemane
Invité n'ayant pas de compte PHPfrance

28 janv. 2007, 10:54

J'ai trouvé mon erreur :
la ligne à écrire était :
$query = "SELECT quiz51,quiz52,quiz53,quiz54 FROM clubers ORDER BY quiz51+quiz52+quiz53+quiz54 DESC LIMIT 0, 50;";
Maintenant tout fonctionne bien.
Merci.

manhemane
Invité n'ayant pas de compte PHPfrance

28 janv. 2007, 10:59

je crois que je me suis un peu trop emballé...
en faite avec la dernière ligne que j'ai posté, tous les scores s'affichent sous forme de totaux mais il n'y a plus le nom des joueurs..
Cela devient énervant...Gardons notre calme.

HD
Mammouth du PHP | 1181 Messages

28 janv. 2007, 11:51

$query = "SELECT quiz51,quiz52,quiz53,quiz54,LE_NOM_DU_JOUEUR FROM clubers ORDER BY quiz51+quiz52+quiz53+quiz54 DESC LIMIT 0, 50;";
REMPLACE LE_NOM_DU_JOUEUR par le nom du champs qui contient les noms
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

manhemane
Invité n'ayant pas de compte PHPfrance

28 janv. 2007, 12:15

ok j'ai écrit :
$query = "SELECT quiz51,quiz52,quiz53,quiz54,userName FROM clubers ORDER BY quiz51+quiz52+quiz53+quiz54 DESC LIMIT 0, 50;";
et cette fois tout est ok.
Merci bcp.
Cette fois l'ecriture de cette ligne est-elle correcte ?

HD
Mammouth du PHP | 1181 Messages

28 janv. 2007, 12:27

ORDER BY quiz51+quiz52+quiz53+quiz54
C'est pas top :?
puis respecter l'ordre des champs dans la bd au moment du select : select champ1 champ2 champ3 au lieu de champ2 champ3 champ1
mais sinon c'est ok
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

manhemane
Invité n'ayant pas de compte PHPfrance

28 janv. 2007, 12:47

Je vois pas qu'est-ce que l'on peut mettre après le order by.
Toi tu ecrirai quoi ??
je te mets le code complet de la page php :
$link = mysql_connect ($dbhost, $dbusername, $dbuserpassword);

if (!$link) {
	echo "&result=noconnection";
} else {
	mysql_select_db($dbname);
}

// set query to call top 50 //

$query = "SELECT quiz51,quiz52,quiz53,quiz54,userName FROM clubers ORDER BY quiz51+quiz52+quiz53+quiz54 DESC LIMIT 0, 50;"; 
$result = mysql_query ($query);

// init count
		
$count = 0;

// fetch data and output

while ($query_data = mysql_fetch_array ($result)) {
		$userName = $query_data ["userName"];
		$quiz51 = $query_data ["quiz51"];
		$quiz52 = $query_data ["quiz52"];
		$quiz53 = $query_data ["quiz53"];
		$quiz54 = $query_data ["quiz54"];
		$quiz50 = $quiz51+$quiz52+$quiz53+$quiz54;
		// data outputted as variables of this form : player0=myname ... player9=yourname //
				
		echo "&player$count=$userName"; 
		echo "&score$count=$quiz50";
			
		$count++;
}

// send extra data to flash //

echo "&result=okay";
echo "&rows=$count&";

?>



Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 janv. 2007, 13:07

Avec la requete de départ (celle que je t'ai proposé) et avec les champs que tu as ajouté :
$query = "
SELECT quiz51,quiz52,quiz53,quiz54,
quiz51+quiz52+quiz53+quiz54 as total, 
userName 
FROM clubers 
ORDER BY total DESC LIMIT 0, 50;"; 
Le champ total n'existe pas dans la table mais pour la requête oui.
Tu peux donc même récupérer ce champ "total" comme tu le fait pour quiz51 ou userName pour l'afficher à l'écran :
echo "Super ton total et de ".$query_data ["total"]." t'es un AS";

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

manhemane
Invité n'ayant pas de compte PHPfrance

28 janv. 2007, 13:14

ok merci cela fonctionne bien.
merci bcp.
j'espère ne pas avoir abusé de votre temps.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 janv. 2007, 13:24

j'espère ne pas avoir abusé de votre temps.
Non, ça va de toute façon tu paies pour ce service :)
laisse ton num de CB, merci :lol:


Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton [Mettre Résolu] qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 janv. 2007, 13:27

Ton problème est peut être résolu mais la structure de ta BD n'est absolument pas bien faite :?

Tu devras retoucher toutes les requetes à chaque ajout d'un nouveau quiz.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute