Barbarus Posté 28 Juin 2007 Partager Posté 28 Juin 2007 Bonsoir à tous, Me revoici avec un nouveau problème, en fait j'arrive à ce que ça me compte le nombre total d'enregistrements mais je n'arrive pas à le faire séparément pour chaque espèce. Voici la page en question La première espèce devrait me donner le chiffre 1 car il n'y a qu'une seule commune où elle a été observée. J'ai essayé COUNT qui me renvoi le nombre total. J'ai mis un WHERE mais toujours ce même résultat. Voilà mon code d'origine: <?php//appel du haut de la page$titre = "Liste des commune par espèces";include 'haut.php';require ("connection.inc.php");// LISTE DES ESPECES$sql = 'SELECT DISTINCT communes.idcommune, communes.commune, especes.idespece, especes.nomespece, especes.idfiche, jonction.date, jonction.recolteur, jonction.identificateur FROM communes, especes, jonction WHERE jonction.idcommune = communes.idcommune AND especes.idespece = jonction.idespece ORDER BY especes.nomespece, communes.commune ASC' ;// on envoie la requete$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());// on fait une boucle qui va faire un tour pour chaque enregistrement$prec = " ";while ($row = mysql_fetch_assoc($req)){ $commune = $row["nomespece"];if ($prec ==" "){/* premiere ligne */echo ' <br><br>';echo ' <center><img src="http://belgant.winetux.be/images/fourmi.jpg" width="304" height="186"></center>';echo ' <br><br>';echo '<h2><a href="http://belgant.winetux.be/forums/index.php?autocom=ibwiki&cmd=article&id='.$row['idfiche'].'" target="_blank">'.$row['nomespece'].'</a></h2>';echo '<table width="100%" border="0">';echo ' <tr>';echo ' <td width="25%"><u><strong>Commune</strong></u></td>';echo ' <td width="25%"><u><strong>Récolteur</strong></u></td>';echo ' <td width="25%"><u><strong>Identificateur</strong></u></td>';echo ' <td width="25%"><u><strong>Date de récolte</strong></u></td>';echo ' </tr>';echo ' <tr>';echo ' <td width="25%"><strong>'.$row['commune'].'</strong></td>';echo ' <td width="25%">'.$row['recolteur'].'</td>';echo ' <td width="25%">'.$row['identificateur'].'</td>';echo ' <td width="25%">'.$row['date'].'</td>';echo ' </tr>';}else{/* lignes suivantes */if($commune == $prec){/* commune egale a la precedente */echo ' <tr>';echo ' <td width="25%"><strong>'.$row['commune'].'</strong></td>';echo ' <td width="25%">'.$row['recolteur'].'</td>';echo ' <td width="25%">'.$row['identificateur'].'</td>';echo ' <td width="25%">'.$row['date'].'</td>';echo ' </tr>';}else{/* commune differente de la precedente */echo '</table>';echo '<br><hr><br>';echo '<h2><a href="http://belgant.winetux.be/forums/index.php?autocom=ibwiki&cmd=article&id='.$row['idfiche'].'" target="_blank">'.$row['nomespece'].'</a></h2>';echo '<table width="100%" border="0">';echo ' <tr>';echo ' <td width="25%"><u><strong>Commune</strong></u></td>';echo ' <td width="25%"><u><strong>Récolteur</strong></u></td>';echo ' <td width="25%"><u><strong>Identificateur</strong></u></td>';echo ' <td width="25%"><u><strong>Date de récolte</strong></u></td>';echo ' </tr>';echo ' <tr>';echo ' <td width="25%"><strong>'.$row['commune'].'</strong></td>';echo ' <td width="25%">'.$row['recolteur'].'</td>';echo ' <td width="25%">'.$row['identificateur'].'</td>';echo ' <td width="25%">'.$row['date'].'</td>';echo ' </tr>';}}$prec = $commune ;}//on ferme la connexion à la basemysql_close();echo '</table>';//appel du haut de la pageinclude 'bas.php';?> Voici la page une fois que je l'ai modifiée: <?php//appel du haut de la page$titre = "Liste des commune par espèces";include 'haut.php';require ("connection.inc.php");// LISTE DES ESPECES$sql = 'SELECT DISTINCT communes.idcommune, communes.commune, especes.idespece, especes.nomespece, especes.idfiche, jonction.date, jonction.recolteur, jonction.identificateur FROM communes, especes, jonction WHERE jonction.idcommune = communes.idcommune AND especes.idespece = jonction.idespece ORDER BY especes.nomespece, communes.commune ASC' ;$counter=mysql_query("SELECT COUNT(*) idcommune FROM jonction WHERE idespece = '$idespece'");// Récupère la seule ligne du jeu d'enregistrements$row=mysql_fetch_object($counter);// on envoie la requete$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());// on fait une boucle qui va faire un tour pour chaque enregistrement$prec = " ";while ($row = mysql_fetch_assoc($req)){ $commune = $row["nomespece"];if ($prec ==" "){/* premiere ligne */ La fin est identique et ça donne ceci Ca indique "La table comporte 518 enregistrement(s)." Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nanane Posté 29 Juin 2007 Partager Posté 29 Juin 2007 Bonjour, $counter=mysql_query("SELECT COUNT(*) idcommune FROM jonction WHERE idespece = '$idespece'"); Je ne vois pas la variable $idespece dans ton code... Tout ce que je peux dire c'est que si tu voulais le nombre pour chaque espece, il faudrait deja effectuer cette requete dans une boucle. Avec a chaque itération une espece différente (il faut donc rappatrier toutes les especes (les idespece en fait) dans un tableau et effectuer un Foreach) : $tab_especes = mysql_query("SELECT DISTINCT especes.idespece FROM especes ORDER BY idespece ASC;");$i=0;foreach (mysql_fetch_row($tab_especes) as $espece){ $idespece = $espece[0]; $counts[$i]=mysql_query("SELECT COUNT(*) idcommune FROM jonction WHERE idespece = '$idespece'");} Tu te retrouves donc avec un tableau $counts, dont la valeur $count est le nombre d'enregistrements pour l'espece avec l'id $tab_especes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lanza Posté 29 Juin 2007 Partager Posté 29 Juin 2007 $counts = "SELECT COUNT(DISTINCT(idcommune)) FROM jonction GROUP BY idespece" ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Barbarus Posté 30 Juin 2007 Auteur Partager Posté 30 Juin 2007 Bonjour, Je n'arrive toujours pas à réaliser ce count, qu'est ce que j'ai loupé encore? C'est la première fois que j'utilise Foreach, je suis un peu largué là. Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nanane Posté 2 Juillet 2007 Partager Posté 2 Juillet 2007 Foreach a une syntaxe tres simple, faite pour explorer facilement un tableau : Foreach ( XXX as YYY ){...} Foreach va s'occuper d'affecter chaque élément du tableau XXX (chaque XXX) a la variable YYY, avant d'effectuer les instructions entre les accolades. Et il s'arrete quand il est arrivé au dernier élément (sauf si on met return ou break dans la boucle). Ca revient a faire ceci : for($i=0;$i<sizeof(XXX);$i++){YYY = XXX[$i];...} Ce qui revient exactement a la meme chose, mais qui est beaucoup moins lisible. Lien vers le commentaire Partager sur d’autres sites More sharing options...
petit-ourson Posté 2 Juillet 2007 Partager Posté 2 Juillet 2007 Foreach ( XXX as YYY ){...} Ca revient a faire ceci : for($i=0;$i<sizeof(XXX);$i++){YYY = XXX[$i];...} Mais il faut noter toutefois que : Foreach ( XXX as YYY ){YYY = 'toto';} Ne revient pas à faire cela : for($i=0;$i<sizeof(XXX);$i++){XXX[$i] = 'toto';...} Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nanane Posté 2 Juillet 2007 Partager Posté 2 Juillet 2007 Héhé ca me parait normal Faire Foreach ( XXX as YYY ){YYY = 'toto';} ca revient a faire for($i=0;$i<sizeof(XXX);$i++){YYY = XXX[$i];YYY = 'toto';...} Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 2 Juillet 2007 Partager Posté 2 Juillet 2007 Dans ces cas-là, on peut aussi utiliser une boucle foreach <?phpforeach($XXX as $data) {$YYY = $data;}?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
Barbarus Posté 12 Juillet 2007 Auteur Partager Posté 12 Juillet 2007 Bonjour à tous, Bon j'ai passé des heures à trifouiller tout ça, à essayer une multitude de combinaisons mais sans succés, je commence à désespérer. Voici le code de ma page d'origine: <?php//appel du haut de la page$titre = "Liste des commune par espèces";include 'haut.php';require ("connection.inc.php");// LISTE DES ESPECES$sql = 'SELECT DISTINCT communes.idcommune, communes.commune, especes.idespece, especes.nomespece, especes.idfiche, jonction.date, jonction.recolteur, jonction.identificateur FROM communes, especes, jonction WHERE jonction.idcommune = communes.idcommune AND especes.idespece = jonction.idespece ORDER BY especes.nomespece, communes.commune ASC' ;// on envoie la requete$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());// on fait une boucle qui va faire un tour pour chaque enregistrement$prec = " ";while ($row = mysql_fetch_assoc($req)){ $commune = $row["nomespece"];if ($prec ==" "){/* premiere ligne */echo ' <br><br>';echo ' <center><img src="http://www.belgant.be/images/fourmi.jpg" width="304" height="186"></center>';echo ' <br><br>';echo '<h2><a href="http://www.belgant.be/forums/index.php?autocom=ibwiki&cmd=article&id='.$row['idfiche'].'" target="_blank">'.$row['nomespece'].'</a></h2>';echo '<table width="100%" border="0">';echo ' <tr>';echo ' <td width="25%"><u><strong>Commune</strong></u></td>';echo ' <td width="25%"><u><strong>Récolteur</strong></u></td>';echo ' <td width="25%"><u><strong>Identificateur</strong></u></td>';echo ' <td width="25%"><u><strong>Date de récolte</strong></u></td>';echo ' </tr>';echo ' <tr>';echo ' <td width="25%"><strong>'.$row['commune'].'</strong></td>';echo ' <td width="25%">'.$row['recolteur'].'</td>';echo ' <td width="25%">'.$row['identificateur'].'</td>';echo ' <td width="25%">'.$row['date'].'</td>';echo ' </tr>';}else{/* lignes suivantes */if($commune == $prec){/* commune egale a la precedente */echo ' <tr>';echo ' <td width="25%"><strong>'.$row['commune'].'</strong></td>';echo ' <td width="25%">'.$row['recolteur'].'</td>';echo ' <td width="25%">'.$row['identificateur'].'</td>';echo ' <td width="25%">'.$row['date'].'</td>';echo ' </tr>';}else{/* commune differente de la precedente */echo '</table>';echo '<br><hr><br>';echo '<h2><a href="http://www.belgant.be/forums/index.php?autocom=ibwiki&cmd=article&id='.$row['idfiche'].'" target="_blank">'.$row['nomespece'].'</a></h2>';echo '<table width="100%" border="0">';echo ' <tr>';echo ' <td width="25%"><u><strong>Commune</strong></u></td>';echo ' <td width="25%"><u><strong>Récolteur</strong></u></td>';echo ' <td width="25%"><u><strong>Identificateur</strong></u></td>';echo ' <td width="25%"><u><strong>Date de récolte</strong></u></td>';echo ' </tr>';echo ' <tr>';echo ' <td width="25%"><strong>'.$row['commune'].'</strong></td>';echo ' <td width="25%">'.$row['recolteur'].'</td>';echo ' <td width="25%">'.$row['identificateur'].'</td>';echo ' <td width="25%">'.$row['date'].'</td>';echo ' </tr>';}}$prec = $commune ;}//on ferme la connexion à la basemysql_close();echo '</table>';//appel du haut de la pageinclude 'bas.php';?> Alors où dois-je mettre ceci: $tab_especes = mysql_query("SELECT DISTINCT especes.idespece FROM especes ORDER BY idespece ASC;");$i=0;foreach (mysql_fetch_row($tab_especes) as $espece){$idespece = $espece[0];$counts[$i]=mysql_query("SELECT COUNT(*) idcommune FROM jonction WHERE idespece = '$idespece'");} Et comment puis-je appeler ce chiffre (compte des espèces) dans un echo? Désolé de revenir là dessus, mais là je suis perdu totalement, je n'arrive pas à faire quelque chose de tout ça. Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant