Calcul sur des entrées

Petit nouveau ! | 3 Messages

21 mars 2006, 14:22

Bonjour à tous
Je suis nouveau sur le forum et je débute en php.

Je cherche actuellement à calculer (pour faire un classement) avec des valeurs dans les entrées.
Ma table est de la forme : id - pilote - q_circuit1 - q_circuit1 - ..... - q_total.

J'ai déjà fait un code qui marche mais je voudrais savoir si il y a moyen de le simplifier

Code : Tout sélectionner

<?php $reponse = mysql_query("SELECT * FROM championnat_GT WHERE id='1'"); // Requête SQL $donnees = mysql_fetch_array($reponse) ; $reponse2 = mysql_query("SELECT * FROM championnat_GT WHERE id='2'"); $donnees2 = mysql_fetch_array($reponse2) ; ?> <?php $resultat = ($donnees['q_circuit1'] + $donnees['q_circuit2'] + $donnees['q_circuit3'] + $donnees['q_circuit4'] + $donnees['q_circuit5'] + $donnees['q_circuit6'] + $donnees['q_circuit7'] + $donnees['q_circuit8'] + $donnees['q_circuit9'] + $donnees['q_circuit10']); mysql_query(" UPDATE championnat_GT SET q_total='$resultat' WHERE id='1' "); ?> <?php echo $donnees['pilote'];?> : <?php echo "$resultat";?> <br /> ------ <br /> <?php $resultat2 = ($donnees2['q_circuit1'] + $donnees2['q_circuit2'] + $donnees2['q_circuit3'] + $donnees2['q_circuit4'] + $donnees2['q_circuit5'] + $donnees2['q_circuit6'] + $donnees2['q_circuit7'] + $donnees2['q_circuit8'] + $donnees2['q_circuit9'] + $donnees2['q_circuit10']); mysql_query(" UPDATE championnat_GT SET q_total='$resultat2' WHERE id='2' "); ?> <?php echo $donnees2['pilote'];?> : <?php echo "$resultat2";?> <br /> ------ <br />
Cet exemple est juste pour les premiers , donc si il y a beaucoup plus d epilotes ca risque d'être compliqué ; de plus avec cette méthode il va falloir que j'édite pour rajouter le nouveau "id"

Quelqu'un saurait comment puis je simplifier tout ça...
Merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 mars 2006, 14:34

Salut,

tu pourrais préciser quelles sont les données contenues dans ta table ("q_circuit1" c'est quoi ? un temps ? une place ?) et ce que tu cherches à calculer stp (moyenne, addition) ?

On est pas dans problème, on ne peut pas deviner... :)

Mais effectivement il y a sûrement une meilleure méthode ;)
Et généralement quand on a plusieurs colonnes avec le même nom (ici : "q_circuit"), juste différenciées par un numéro, c'est qu'il y a un problème de conception, tu aurais utiliser 2 tables et une jointure

Petit nouveau ! | 3 Messages

21 mars 2006, 14:46

id : ce sont les numéros qui s'auto incrémentent.
Pilote : nom du pilote
q_circuitx (qui veut dire qualif circuit n°x) : ce sont des points
q_total : addition de tous les points q_circuitx

A noter que le script prend un compte que les points en qualif et que dans la table il y aussi la même chose en c_circuitx (course circuit n°x) mais dans cette application je ne m'en sers pas.
J'ai nommé circuit1 par exemple car je ne sais pas quel circuit sera encore utilisé mais ce n'est rien , il n'y a donc pas de problème.

Vous savez tout maintenant je pense
Désolé de ne pas avoir été plus précis dès le début :oops:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 mars 2006, 15:04

Par curiosité, combien y'a-til de colonnes dans ta table ? :shock:

Ce n'est pas comme ça qu'on fait, quand on a 1 pilote <-> 1 ou plusieurs circuits

Voici ce que tu aurais du faire (dans le genre) :

Code : Tout sélectionner

| Pilotes | Circuits | Courses | Qualifications ---------- ----------- ----------- -------------- | id_pilote | id_circuit | id_course | id_qualif | nom_pilote | nom_circuit | date_course | temps_qualif | temps | num_qualif # s'il y a plusieurs séances pour une course
Avec des jointures pour relier tout ça

Code : Tout sélectionner

# Pour relier Pilotes à Courses a_couru ------- id_pilote id_course temps_course # Pour relier Pilotes à Qualif a_couru_qualif ------- id_pilote id_qualif temps_qualif # Pour relier Circuits à Courses se_deroule ------- id_circuit id_course date_course
Ce n'est sûrement pas parfait, mais ça ressemble déjà plus à qelquechose de propre
Dans ta solution, tu es obligé de modifier tes tables, et la structure de tes requêtes, si un jour il y a une course en plus
Et tu ne peux pas stocker plusieurs saisons

Donc, dans ton cas, tu peux déjà essayer de faire l'addition directement en SQL
Mais je serais toi, je reverrais mon schéma ;)

Petit nouveau ! | 3 Messages

21 mars 2006, 17:04

Oki merci Ouckileou je vais réfléchir à tout ça :wink: