Page 1 sur 1

afficher données array php

Posté : 29 juil. 2009, 15:08
par Patpillon
Bonjour,
J'aimerais faire afficher les resultats de trois variable d'un tableau $bestScore; $meanScore; et $worstScore;. pour l'instant il m'affiche Array ( [0] => -1 [1] => -1 [2] => -1 )

Code : Tout sélectionner

$link = mysql_connect($dbServer, $dbUsr, $dbPass); $rc = mysql_select_db($dbDatabase, $link); $Sql="select * from ResultGame"; //ResultGame = nom de ma table $Res=mysql_query($Sql); //$Compteur=mysql_num_rows($Res); //$i=1; //$j=0; //while ($i <= $Compteur) //{ // $tab_score[$j]==$Enr["ScoreG"]; //ScoreG = la colonne de la table ResultGame dont je souhaite récupérer les informations // $Enr=mysql_fetch_array($Res); // $i++; // $j++; //} //print_r($Enr); // OK, me donne la dernière ligne de ma BD avec tous les infos //print_r($tab_score); //Page blanche print_r (computeScore()); ?> <?php function computeScore($sqlGroup) { $currentScore = 0; $bestScore = -1; $meanScore = (double) 0; $sumScore = 0; $nbScore = 0; $worstScore = 101; while ($row = mysql_fetch_assoc($sqlGroup)) { $currentScore = $row['ScoreG']; if($currentScore > $bestScore) { $bestScore = $currentScore; } $sumScore = $sumScore + $currentScore; $nbScore = $nbScore + 1; if($currentScore < $worstScore) { $worstScore = $currentScore; } } $meanScore = round(($sumScore / $nbScore), 1); $lstScore = array(); if($worstScore == 101) { $worstScore = -1; } if($meanScore == 0) { $meanScore = -1; } $lstScore[0] = $bestScore; $lstScore[1] = $meanScore; $lstScore[2] = $worstScore; return $lstScore; foreach ($lstScore as $val) { echo $val; } }

Posté : 29 juil. 2009, 15:18
par enneite
ton code m'a l'air bien compliqué pour cela, sans le regarder en détail, je vois qu'il y a une boucle foreach après un return dans ta fonction, il devrait pas être avant?

Posté : 29 juil. 2009, 15:20
par Cobaye
Modération :
Patpillon, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Posté : 29 juil. 2009, 15:22
par stopher
Effectivement ,

la fonction s'arrête net apres un return !

L'affichage se fait donc par ton print_r().

A la place de ton print_r() par ta boucle foreach ($computeScore ...

Et tu devrais voir l'affichage que tu attends .


Note : N'oublies pas d'utiliser les balises PHP de ce forum pour rendre ton message bien plus lisible .. Ha ... c'est déjà dit ...

Bonne continuation ,
Ch.

merci autre question

Posté : 29 juil. 2009, 21:37
par Patpillon
merci pour les réponses, ca a réglé le problème. J'aurais besoin de retourné $groupWidth et $gender dans un tableau et ensuite faire un echo. avez-vous une idee ? merci

function findValidSample($noEdition, $noExercise, $noLevel, $gender, $age, $lstAgeGroup, $indAgeMin, $indAgeMax)
{
	$MIN_RECORD = 25;
	$MAX_GROUP_WIDTH = 15;
	
	$stop = false;
	
	//print("base indAgeMin = ");
	//print($indAgeMin);
	//print("base indAgeMax = ");
	//print($indAgeMax);
	
	while ($stop == false) 
	{
		// Requêtes #2 à N
		$query = "SELECT * FROM ResultGame WHERE NoEdition = ".$noEdition." AND NoExercise = ".$noExercise." AND NoLevel = ".$noLevel." AND Age >= ".$lstAgeGroup[	$indAgeMin]." AND Age <= ".$lstAgeGroup[$indAgeMax];
		
	
		// Requête #1 seulement
		if (strlen($gender) == 1)
		{
			$query = $query." AND Gender = '".$gender."'";
		}
	
		$result = mysql_query($query) or die(mysql_error());	
		$nbRecord = mysql_num_rows($result);
		$groupWidth = $lstAgeGroup[$indAgeMax] - $lstAgeGroup[$indAgeMin] + 1;
   
		//print("nbRecord = ");
		//print($nbRecord);
	
		if ($nbRecord < $MIN_RECORD) 
		{
			$gender = "M,F";
			
			
			if ($groupWidth < $MAX_GROUP_WIDTH) 
			{
				if (getAgeGroupDirection($age, $lstAgeGroup, $indAgeMin, $indAgeMax) == "younger")
				{
					$indAgeMin -= 2;
					//print("younger");
				}
				else
				{
					$indAgeMax += 2;
					//print("older");
				}
				
				$groupWidth = $lstAgeGroup[$indAgeMax] - $lstAgeGroup[$indAgeMin] + 1;
			
				//print("indAgeMin = ");
				//print($indAgeMin);
				//print("indAgeMax = ");
				//print($indAgeMax);
			}
			else if (($indAgeMin == 0) or ($indAgeMax == (sizeof($lstAgeGroup) - 1)))
			{
				if ($extremeGroup == false)
				{
					$extremeGroup = true;
				} 
				else
				{
					$stop = true;
				}
			}
			else
			{
				$stop = true;
			}
		}
		else
		{
			$stop = true;
		}
			
		//print("groupWidth = ");
		//print($groupWidth);
	}
	
	
	return array($lstAgeGroup[$indAgeMin], $lstAgeGroup[$indAgeMax], $gender, $result);
}  
j'ai également une erreur SQL?
$query = "SELECT * FROM ResultGame WHERE NoEdition = ".$noEdition." AND NoExercise = ".$noExercise." AND NoLevel = ".$noLevel." AND Age >= ".$lstAgeGroup[	$indAgeMin]." AND Age <= ".$lstAgeGroup[$indAgeMax];