Aller au contenu

Nombre d'enregistrements


Sujets conseillés

Posté

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 base
mysql_close();
echo '</table>';

//appel du haut de la page
include '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

Posté

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.

Posté

$counts = "SELECT COUNT(DISTINCT(idcommune)) FROM jonction GROUP BY idespece" ?

Posté

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

Posté

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.

Posté

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

Posté

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

  • 2 semaines plus tard...
Posté

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 base
mysql_close();
echo '</table>';

//appel du haut de la page
include '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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...