IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

2 boucles While dans un tableau [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 18
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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";

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "SELECT DISTINCT `Personne` FROM `planning`";
    Même remarque pour $query2.

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Par défaut
    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"].

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Oui c'est normal, tu as mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  5. #5
    Membre averti
    Inscrit en
    Février 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 18
    Par défaut
    Super, merci Benjamin, ça marche nickel. L'optimisation en une seule requête aussi,
    merci!

    Nicolas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boucle "while" dans un sous-formulaire
    Par philebaucis dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/04/2017, 06h15
  2. Boucle while dans tableau
    Par TheRealMike dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/06/2009, 19h50
  3. [FPDF] Problème avec un while dans un tableau
    Par nigg4z dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2007, 15h13
  4. probleme de boucle while dans une procedure stockée
    Par aboulemagnifique dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 08/08/2007, 12h39
  5. Réponses: 15
    Dernier message: 11/05/2007, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo