Bonjours,
je suis bloqué sur mon affichage de requette
J’ai un problème car dans ma table $row[‘command’] est a ‘0’ mais quan je l’appel avec ma requette a l’affichage il met pas le zero mais met la valeur de la commande d’un autre.
explication.
j’ai plusieur prospect et pour chaque prospect je veu le nombre de commande
mais j’ai un prospect ou il y a zero commande ce qui fait que dans mon affichage le prospect ou il y a rien prend celui d’un autre je voudrai pouvoir fair en sorte que là ou il y a le prospect avec zero commande sa m’affiche quelque chose comme un message ou autre mais que l’on voit bien que le champs est vide et pas que l’on voi la valeur d’un autre ce qui fait que mon tableau est décalé
$query_vg ="
SELECT substr(customers_from, 1, 3) AS Origin,
COUNT(*) AS effectif_vg
FROM customers
GROUP BY Origin ";
$result_vg = mysql_query($query_vg) ;
$query = " SELECT substr(customers_from, 1, 3) AS Origin,
COUNT(DISTINCT cu.customers_id) AS effectif ,count(co.commandes_status) AS command,
AVG(co.commandes_montant) AS Mmc
FROM customers cu
INNER JOIN commandes co
ON cu.customers_id=co.customers_id
WHERE co.commandes_status='1'
GROUP BY Origin ";
$result = mysql_query($query) ;
while ($row1 = mysql_fetch_array($result_vg) and $row = mysql_fetch_array($result) )
{
if($row['command'] == '0' )
{ $row['command'] .= 'zero';
?>
<tr>
<td style="background-color:#CCCCCC;"> </td>
<td style="text-align:center;"> <?php echo $row1['Origin'] ?> </td>
<td style="text-align:center;"> <?php echo $row1['effectif_vg'] ?> </td>
<td style="text-align:center;"> <?php echo $row['command'] ?> </td>
<td style="text-align:center;"> <?php echo round(($row['command']*$row['Mmc'])) ?> euro</td>
<td style="text-align:center;"> <?php echo round($row['Mmc'] ,2)?> </td>
</tr>
<?php
} }
?>
Pas étonnant. Tu ne dois pas parcourir deux result set en même temps.
Charge le contenu du premier dans un tableau, genre
while ($row = mysql_fetch_array($result_vg)) {
$data[$row['Origin']] = $row;
}
Et dans la deuxième boucle sur le second result set, récupère tes données de la sorte :
while ($row = mysql_fetch_array($result)) {
$commande = $data[$row['Origin']];
...
}
comme sa???
<?php
// REQUETE 1 :
$query = "SELECT substr(customers_from, 1, 3) AS Origin,
COUNT(*) AS effectif_vg
FROM customers
GROUP BY Origin ";
$result_vg = mysql_query($query) ;
// REQUETE 2 :
$query_produit =
" SELECT substr(customers_from, 1, 3) AS Origin,
COUNT(DISTINCT cu.customers_id) AS effectif, count(co.commandes_status) AS command,
AVG(co.commandes_montant) AS Mmc
FROM customers cu
INNER JOIN commandes co
ON cu.customers_id=co.customers_id
WHERE co.commandes_status='1'
and customers_from='".$row['Origin']."'
GROUP BY Origin ";
$result = mysql_query($query_produit) ;
while ($row = mysql_fetch_array($result_vg))
{ $data[$row['Origin']] = $row;
?>
<tr>
<td style="background-color:#CCCCCC;"> </td>
<td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
<td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
<?php
while ($row = mysql_fetch_array($result))
{ $commande = $data[$row['Origin']];
?>
<td style="text-align:center;"> <?php echo $row['command'] ?> </td>
<td style="text-align:center;"> <?php echo round($row['command']*$row_produit['Mmc']) ?> </td>
<td style="text-align:center;"> <?php echo round($row['Mmc'] ,2) ?> </td>
<?php
} }
?>
parce que là mon prestaire ma colonne VG c’est bon et j’ai que la première ligne qui est affiché
Excuse moi je regarde tes renseignements mais là j’ai de la peine a comprend ce que tu ma expliquer
Non.
J’ai pas envie de tout reprendre, donc disons simplement que tu fais le remplissage du tableau AVANT de lancer la seconde requête.
Merci mais alors comment je fais pour que sa ne remplisse pas le tableau avant de lancer la deuxième requete?
En évitant d’imbriquer les instructions?