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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : additionner des valeurs dans des champs différents d'un bbd

par manheman » 28 janv. 2007, 22:19

merci en tout cas et je reviendrai car j'ai encore un petit projet mais je pense que tu dois saturer alors je poserai ma question ultérieurement.

par Truc » 28 janv. 2007, 22:15

En attandant on va taguer ce sujet [Résolu] (définitivement)
Si tu as d'autres question n'hésite pas à revenir et de t'inscrire :wink:

par manhemane » 28 janv. 2007, 21:45

ok je vois mieux ce que tu veux dire.
Cela veut dire que je dois tout restructurer mon site qui est en flash.
(http://electrons.free.fr).
Je crois que j'ai encore pas mal de boulot...
j'aimerai bien un gros coup de main. ok je vais revoir comment mieux structurer la base de donnée.

par Truc » 28 janv. 2007, 20:52

oui, non je ne voulais pas la voir cette structure... mais il fautdrait la refaire, changer le schéma de la BD pour éviter de devoir ajouter un nouveau champ en cas d'ajout d'un nouveau quiz.

Par exemple:

Code : Tout sélectionner

table quiz id_quiz nom autres_champ table membre id_mem nom autre_champs table quiz_played id_mem id_quiz score
Lors d'un nouveau quiz tu ne touches pas à la structure de la BD mais tu ajoutes un enregistrement dans la table "quiz".

par manhemane » 28 janv. 2007, 17:42

la structure a été posté au début du message.
La table s'appelle clubers.
et les champs sont :
users--userspassword--usersemail--quiz51--quiz52--quiz53--quiz54--quiz41--quiz42 ect...
Il y a d'autre champs aussi.
Tout d'abord le membre du club s'identifie puis une fois identifié, il peut jouer au quiz et enregistre son score qui est actualisé à chaque fois qu'il joue.
quiz51, quiz52 quiz53 et quiz54 correspondent à des quiz définis pour un niveau précis.

par Truc » 28 janv. 2007, 16:58

Il faudrait revoir la structure de tes tables et donc les scripts et requetes qui vont avec...

par Invité » 28 janv. 2007, 14:57

En faite, il faut effectuer une requete dans une somme de n valeurs dans les champs quiz51+quiz52+...quiz5n
c'est ça ?

par Invité » 28 janv. 2007, 14:39

Je sais mais je vois pas comment on peut faire. Tu as une idée toi ?

par Truc » 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.

par Truc » 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 !!! ;)

par manhemane » 28 janv. 2007, 13:14

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

par Truc » 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";

par manhemane » 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&";

?>


par HD » 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

par manhemane » 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 ?