Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2011, 12h39   #1
Invité régulier
 
Nicolas
Inscription : février 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Nicolas

Informations forums :
Inscription : février 2010
Messages : 18
Points : 5
Points : 5
Par défaut 2 boucles While dans un tableau

Bonjour,

Ma table sql contient une colonne "Personne" avec des noms de personne et une colonne "PourcentageOcc" avec des chiffres de % d'occupation. Une même Personne pouvant avoir plusieurs % d'occupation différent.

j'aimerais afficher dans un tableau l'ensemble des personnes, avec la moyenne de leurs différents pourcentages d'occupation. Pour cela j'ai créé le code suivant, celui ci m'affiche bien la liste des gens, mais pas leur moyenne associée.
Il m'annonce "Notice: Undefined index: PourcentageOcc in resultat.php on line 1206"
1206 qui est la ligne : echo '<td>'.$rowOcc["PourcentageOcc"].'</td>';

Y aurait il quelque chose que j'aurais oublié ? je ne vois pas...

Merci d'avance

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$query = "SELECT DISTINCT Personne FROM 'planning'";
$result = mysql_query($query) or die("Erreur de requete sql: ".mysql_error());
 
	echo '<table>'."\n";
	echo '<tr>';
	echo '<td>Personne</td>';
	echo '<td>% Occ.</td>';
	echo '</tr>'."\n";
 
	while($row = mysql_fetch_array($result))
	{
	$query2 = "SELECT AVG(PourcentageOcc) FROM 'planning' WHERE Personne = '$row[Personne]'";
	$result2 = mysql_query($query2) or die("Erreur de requete sql: ".mysql_error());
 
		while($rowOcc = mysql_fetch_array($result2))
		{
		echo '<tr>';
		echo '<td>'.$row["Personne"].'</a></td>';
		echo '<td>'.$rowOcc["PourcentageOcc"].'</td>';
		echo '</tr>'."\n";
		}
	}
         echo '</table>'."\n";
Nicolas_k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 13h34   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Hello

Je suppose que ton code ne marche pas, c'est bien le cas ?
Tu as confondu les quotes et les backquotes sur le nom de ta table, en mysql ça te génère une erreur, la syntaxe correcte pour ta première requête est:
Code :
1
2
 
$query = "SELECT DISTINCT `Personne` FROM `planning`";
Même remarque pour $query2.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 14h28   #3
Invité régulier
 
Nicolas
Inscription : février 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Nicolas

Informations forums :
Inscription : février 2010
Messages : 18
Points : 5
Points : 5
Salut,

Le code fonctionne, les requêtes sql s'exécutent correctement, ce n'est pas un problème de syntaxe mais plus un problème d'imbrication ou d'organisation de mon code, car je n'arrive pas à avoir de donnée dans ma variable $rowOcc["PourcentageOcc"].
Nicolas_k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 14h47   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Oui c'est normal, tu as mis:
Code :
1
2
 
$query2 = "SELECT AVG(PourcentageOcc) FROM 'planning' WHERE Personne = '$row[Personne]'";
Donc tu vas récuppérer un tableau dont la clé est AVG(PourcentageOcc) au lieu de PourcentageOcc (tu remarque le même problème quand tu fais un count(*) par exemple).

Il faut faire:
Code :
1
2
 
$query2 = "SELECT AVG(PourcentageOcc) AS PourcentageOcc FROM 'planning' WHERE Personne = '$row[Personne]'";
pour que ça fonctionne comme tu veux.

-- Edit:
Je te recommande une légère optimisation: tes deux requêtes peuvent être combinées pour améliorer les performances, sans connaitre la structure de tes tables, je pense que:
Code :
1
2
3
4
 
SELECT AVG(`PourcentageOcc`) AS  `PourcentageOcc`, `Personne`
FROM `planning`
GROUP BY `Personne`;
produirait le même résultat que ton algorythme.
Tu n'aurais alors qu'une seule requête et une seule boucle pour afficher les résultats.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 14h59   #5
Invité régulier
 
Nicolas
Inscription : février 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Nicolas

Informations forums :
Inscription : février 2010
Messages : 18
Points : 5
Points : 5
Super, merci Benjamin, ça marche nickel. L'optimisation en une seule requête aussi,
merci!

Nicolas.
Nicolas_k est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h57.


 
 
 
 
Partenaires

Hébergement Web