Tableau

Fermé
Root59 - 24 juil. 2014 à 16:34
 root59 - 25 juil. 2014 à 23:49
Bonjour,

j'ai un tableau dynamique et les mec veulent que je filtre les info du genre à ce qui ont un total=0 je n'affiche pas. Et ce qui se passe l'ancien développeur lui a d'abord afficher toute les données avant d'effectuer le traitement et la je dois d'abord calculer le total avant d'afficher pour filtrer. Et j'ai donc un problème pour calculer le total afin de filtrer l'afficher des lignes nulles voila le code un peu commenté et Merci de votre réponse.


<?php

session_start();

include ("config.php");

include ("session.php");

include ("lib_sundis.php");



echo "<table id=stats_tab border=1 cellpadding=5 style='width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;'>";

echo "<thead>";

echo "<tr>";

echo "<th>Enseignes</th>";

//////////////////////////////////// affiche les utilisateur ayant un etat =1 et acces > 2 ////////////////////////////////////

$res_com = mysqli_query($bdd, 'SELECT * FROM utilisateurs WHERE etat = 1 AND acces > 2');

while ($don_com = mysqli_fetch_array($res_com))

echo "<th>".nom_commercial($don_com['id_utilisateur'])."</th>";

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

echo "<th>TOTAL</th>";

echo "</tr>";

echo "</thead>";

echo "<tbody>";




$res_enseigne = mysqli_query($bdd, 'SELECT * FROM enseignes ORDER BY intitule'); // affiche les enseignes genre les noms et c'est eux qu'il faut filtrer



while ($don_enseigne = mysqli_fetch_array($res_enseigne))

{



echo "<tr>";

echo "<td>".$don_enseigne['intitule']."</td>";

$res_com = mysqli_query($bdd, 'SELECT * FROM utilisateurs WHERE etat = 1 AND acces > 2');

$total = 0;

while ($don_com = mysqli_fetch_array($res_com))



{

$res = mysqli_query($bdd, 'SELECT * FROM rapports, clients, enseignes WHERE rapports.id_client = clients.id_client AND clients.id_enseigne = enseignes.id_enseigne AND clients.id_enseigne = "'.$don_enseigne['id_enseigne'].'" AND rapports.id_utilisateur = "'.$don_com['id_utilisateur'].'" AND type != 4');

echo "<td style='text-align:center;'>".mysqli_num_rows($res)."</td>"; // affiche les rapports des clients sur les lignes

$total = $total + mysqli_num_rows($res); // ici il fait la somme pour recupérer le total

}

$somme=$total;



echo "<td style='text-align:center;'>$somme</td>"; // ici il affiche le total

//echo "<td style='text-align:center;'>$total</td>";




echo "</tr>";




echo "<tr style='background-color:lightgrey;'>";


//////////////////////////////////// Visite client avec RDV //////////////////////////////////////////////////////////////////

echo "<td>Visite client avec RDV</td>";

$res_com = mysqli_query($bdd, 'SELECT * FROM utilisateurs WHERE etat = 1 AND acces > 2');

$total = 0;

while ($don_com = mysqli_fetch_array($res_com))


{

$res = mysqli_query($bdd, 'SELECT * FROM rapports, clients, enseignes WHERE rapports.id_client = clients.id_client AND clients.id_enseigne = enseignes.id_enseigne AND clients.id_enseigne = "'.$don_enseigne['id_enseigne'].'" AND rapports.id_utilisateur = "'.$don_com['id_utilisateur'].'" AND type = 6');

echo "<td style='text-align:center;'>".mysqli_num_rows($res)."</td>";

$total = $total + mysqli_num_rows($res);

}



echo "<td style='text-align:center;'>$total</td>";


echo "</tr>";

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

echo "<tr style='background-color:lightgrey;'>";


//////////////////////// Visite client sans RDV ////////////////////////////////////////////////////////////////////////

echo "<td>Visite client sans RDV</td>";

$res_com = mysqli_query($bdd, 'SELECT * FROM utilisateurs WHERE etat = 1 AND acces > 2');

$total = 0;

while ($don_com = mysqli_fetch_array($res_com))

{

$res = mysqli_query($bdd, 'SELECT * FROM rapports, clients, enseignes WHERE rapports.id_client = clients.id_client AND clients.id_enseigne = enseignes.id_enseigne AND clients.id_enseigne = "'.$don_enseigne['id_enseigne'].'" AND rapports.id_utilisateur = "'.$don_com['id_utilisateur'].'" AND type = 7');

echo "<td style='text-align:center;'>".mysqli_num_rows($res)."</td>";

$total = $total + mysqli_num_rows($res);

}

echo "<td style='text-align:center;'>$total</td>";

echo "</tr>";

echo "<tr style='background-color:lightgrey;'>";

//////////////////////////////////////////////////////////////////////////////////////////



/////////////////// Visite sans contact //////////////////////////////////////////////////////

echo "<td>Visite sans contact</td>";

$res_com = mysqli_query($bdd, 'SELECT * FROM utilisateurs WHERE etat = 1 AND acces > 2');

$total = 0;

while ($don_com = mysqli_fetch_array($res_com))

{

$res = mysqli_query($bdd, 'SELECT * FROM rapports, clients, enseignes WHERE rapports.id_client = clients.id_client AND clients.id_enseigne = enseignes.id_enseigne AND clients.id_enseigne = "'.$don_enseigne['id_enseigne'].'" AND rapports.id_utilisateur = "'.$don_com['id_utilisateur'].'" AND rapports.id_contact = 0');

echo "<td style='text-align:center;'>".mysqli_num_rows($res)."</td>";

$total = $total + mysqli_num_rows($res);

}

echo "<td style='text-align:center;'>$total</td>";

//////////////////////////////////////////////////////////////////////////////////////////

echo "</tr>";


}






echo "</tbody>";

echo "</table>";
?>

8 réponses

Utilisateur anonyme
24 juil. 2014 à 17:18
Faire juste ça c'est impossible?

if ($total !== 0) echo "<td style='text-align:center;'>$total</td>"; 
0
il me faut filtrer toute la ligne contenant les enseignes! cette requête n'affiche juste pas le total de la ligne..
0
Utilisateur anonyme
25 juil. 2014 à 12:29
Oui enfin c'est la même base, tu fais la requête, calcul le total, et avec la condition que j'ai mis dessus, tu affiches ou non le contenu selon le total.
0
oui mais c'est trouver la bonne requête pour calculer le total parce qu'il y'a des jointures et des lignes à afficher.. si tu ne comprend pas le code je peux te le renvoyer avec tous les détails
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
25 juil. 2014 à 15:14
C'est surtout que là tu as mis tout le code, est non juste la partie intéressante, donc c'est assez dur à tout lire pour savoir quoi modifier.
0
OK je t'envois le code simplifié

<?php
$res_enseigne = mysqli_query($bdd, 'SELECT * FROM enseignes ORDER BY intitule'); //affiche les enseignes genre les noms des boutiques et c'est eux qu'il faut filtrer


while ($don_enseigne = mysqli_fetch_array($res_enseigne))

{
echo "<tr>";

echo "<td>".$don_enseigne['intitule']."</td>";


$res_com = mysqli_query($bdd, 'SELECT * FROM utilisateurs WHERE etat = 1 AND acces > 2');

$total = 0;

while ($don_com = mysqli_fetch_array($res_com))

{

$res = mysqli_query($bdd, 'SELECT * FROM rapports, clients, enseignes WHERE rapports.id_client = clients.id_client AND clients.id_enseigne = enseignes.id_enseigne AND clients.id_enseigne = "'.$don_enseigne['id_enseigne'].'" AND rapports.id_utilisateur = "'.$don_com['id_utilisateur'].'" AND type != 4');

echo "<td style='text-align:center;'>".mysqli_num_rows($res)."</td>"; // affiche les rapports des clients sur les lignes et il faut aussi le mentionner dans l'affichage


$total = $total + mysqli_num_rows($res); // ici il fait la somme pour recupérer le total

}


echo "<td style='text-align:center;'>$total</td>"; // ici il affiche le total




echo "</tr>";
}


?>
0
Utilisateur anonyme
25 juil. 2014 à 19:03
Ah c'est bon j'ai compris, tu as juste à stocker tout dans une variable, et affiche si le total n'est pas 0

<?php
$res_enseigne = mysqli_query($bdd, 'SELECT * FROM enseignes ORDER BY intitule'); 
while ($don_enseigne = mysqli_fetch_array($res_enseigne))
{
	$total = 0;
	$content = '';
	$content .= "<tr>";
	$content .= "<td>".$don_enseigne['intitule']."</td>";
	$res_com = mysqli_query($bdd, 'SELECT * FROM utilisateurs WHERE etat = 1 AND acces > 2');
	while ($don_com = mysqli_fetch_array($res_com))
	{

		$res = mysqli_query($bdd, 'SELECT * FROM rapports, clients, enseignes WHERE rapports.id_client = clients.id_client AND clients.id_enseigne = enseignes.id_enseigne AND clients.id_enseigne = "'.$don_enseigne['id_enseigne'].'" AND rapports.id_utilisateur = "'.$don_com['id_utilisateur'].'" AND type != 4');

		$content .= "<td style='text-align:center;'>".mysqli_num_rows($res)."</td>"; 
		$total = $total + mysqli_num_rows($res); 
	}
	$content .= "<td style='text-align:center;'>$total</td>";
	$content .= "</tr>";
	if ($total !== 0) echo $content;
}
?>
0
OK j'ai compris tu as stocké toute les valeurs dans les content.. Je te tire le chapeau là ! grand merci à toi tu me sauve vraiment la mise
0