JeuWeb - Crée ton jeu par navigateur
retourner nom variable la plus grande - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : retourner nom variable la plus grande (/showthread.php?tid=6403)



retourner nom variable la plus grande - starmindfr - 24-09-2012

bonjour

actuellement dans un jeux avec des systemes et planetes je cherche a trouver la faction dominante cela donne :

systeme 1
planete 1 faction 4
planete 2 faction 1
planete 3 faction 4

systeme 2
planete 1 faction 3
planete 2 faction 3

systeme 3
planete 1
planete 2 faction 4
etc...

J'ai tenter le script suivant :


$factionsys = $factionsysdet = $row = array();

$query = sprintf("SELECT id from systemes");
$result = mysql_query($query);

while($row = mysql_fetch_assoc($result)) {

$faction1 = $faction2 = $faction3 = $faction4 = 0;

$query22 = sprintf("SELECT faction_id from planetes WHERE faction_id IS NOT NULL and systeme_id = '%s'",
mysql_real_escape_string($row['id']));
$result22 = mysql_query($query22);

while($row2 = mysql_fetch_assoc($result22)) {


switch ($row2['faction_id']) {
case 1: $faction1 = $faction1 +1;
break;
case 2: $faction2 = $faction2 +1;
break;
case 3: $faction3 = $faction3 +1;
break;
case 4: $faction4 = $faction4 +1;
break;
default:
break;
} // fin switch



} // fin while


$testfac = max($faction1,$faction2,$faction3,$faction4);
$row['finalfac']= $testfac;
if ($testfac != 0 && $testfac != NULL) {array_push($factionsys,$row);}
} // fin while 2


foreach ($factionsys as $VAL) {
...$VAL...
}

Le probleme ici le max me donne la valeur max exemple "2" pour le systeme 1 mais pas le nom de variable... donc la faction 4.

Je suppose qu'il y a une astuce toute bete mais je passe a coté Smile merki


RE: retourner nom variable la plus grande - starmindfr - 24-09-2012

bon j'ai regler mon probleme en bonne partie, en envoyant le "max" dans un tableau avec les 4 variables et en ajoutant un array_search sur le table pour l'indice de la variable...

le seul problème c'est qu'en cas d’égalité entre les factions j'en obtient une basée sur l'orde alphabétique, hors je préfére renvoyer une valeur vide en cas d'egalité au lieu de la 1ere


RE: retourner nom variable la plus grande - Roworll - 24-09-2012

Et pourquoi ne pas utiliser le COUNT() SQL avec un GROUP BY par Faction / planète / système ?


RE: retourner nom variable la plus grande - Plume - 24-09-2012

Y aurait pas de challenge.


RE: retourner nom variable la plus grande - starmindfr - 24-09-2012

bon pas moyen de supprimer l'autre sujet.

Donc merci pour les réponses et pour préciser le but il me faut au final :

Systeme 1 : Faction Toto
Systeme 2 :
Systeme 3 : Faction Tata
Systeme 4 : Faction Tata

Car je dessine sur une carte les systèmes et un cercle de couleur pour la faction.

Seule la faction ayant capturée une majorité de planètes revendique un système, l’égalité ne donne pas un système. Hors avec le SQL j'ai du mal a trouver comment rendre cette question de "majorité".