afficher données array php

Petit nouveau ! | 2 Messages

29 juil. 2009, 15:08

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; } }

Eléphant du PHP | 245 Messages

29 juil. 2009, 15:18

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?

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

29 juil. 2009, 15:20

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
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

ViPHP
ViPHP | 1136 Messages

29 juil. 2009, 15:22

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.

Petit nouveau ! | 2 Messages

29 juil. 2009, 21:37

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];