Bonjour à tous,
Allez voir plus bas
Merci
guigui69
while( $ligne2 = mysql_fetch_assoc($query2) && $ligne3 = mysql_fetch_assoc($query3))
va s'executer jusqu'à ce que l'une des 2 conditions soit fausse.Pourquoi ne pas mettre la valeur 0 par défaut au lieu de null? Cela éviterai ce genre de problème.Est-il possible que lorsque que la reconnait renvoir NULL pour un résultat celui ce transforme en 0.?
$tableau = array();
while( $ligne2 = mysql_fetch_assoc($query2) ){
$tableau[$id_produit]['valeur1'] = ....;
}
while( $ligne3 = mysql_fetch_assoc($query3) ){
$tableau[$id_produit]['valeur2'] = ....;
}
tu auras donc un tableau qui contient pour chaque produit les valeurs. Et fire un test si un produit ne contient pas valeur1 ou valeur2 afficher 0.$requete = "SELECT FORMAT(SUM(qte_m*pu_m)/(SUM(qte_m)-(SUM(qte_m)/100)*perte_pdt)*poids_u_m_pdt,4) as prix_u_m FROM recette INNER JOIN matiere ON recette.code_m=matiere.code_m INNER JOIN produit ON recette.ref_pdt=produit.ref_pdt WHERE produit.ref_pdt IN ($req)AND
recette.fourrage_rctt=0;";
$requete2 = "SELECT FORMAT(SUM(qte_m*pu_m)/(SUM(qte_m)-(SUM(qte_m)/100)*perte_pdt)*poids_u_f_pdt,4) as prix_u_f FROM recette INNER JOIN matiere ON recette.code_m=matiere.code_m INNER JOIN produit ON recette.ref_pdt=produit.ref_pdt WHERE produit.ref_pdt IN ($req)AND recette.fourrage_rctt=1;";
$requete3 = "SELECT FORMAT(SUM(qte_emb*pu_emb)/nbre_piece_fab_main,4) AS test2 FROM recette_emb LEFT JOIN emballage ON recette_emb.id_emb=emballage.id_emb LEFT JOIN main_d_oeuvre ON recette_emb.ref_pdt = main_d_oeuvre.ref_pdt LEFT JOIN produit ON produit.ref_pdt=recette_emb.ref_pdt WHERE produit.ref_pdt IN ($req);";
Plus une 5ème colonne qui fera la somme des lignes.$requete4 = "SELECT id_main, nbre_per_main, nbre_heure_main, taux_hor_main, nbre_piece_fab_main, nbre_per_main*nbre_heure_main*taux_hor_main AS totalcout, FORMAT((nbre_per_main*nbre_heure_main*taux_hor_main)/nbre_piece_fab_main,4) AS pdr_m_o_u FROM main_d_oeuvre INNER JOIN produit ON main_d_oeuvre.ref_pdt=produit.ref_pdt WHERE produit.ref_pdt IN ($req);";
ourecette.fourrage_rctt=0
Alors que les autres ne l'on pas.recette.fourrage_rctt=1
Code : Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr">
<head>
<?php
$matricule = $_POST['matricule'];
//$matricule = 23;
print("<center>$matricule</center>");
$server="******";
$user="*****";
$pass="*****";
$db="pdr";
mysql_connect($server,$user,$pass) or die('erreur de connexion');
mysql_select_db($db) or die ('impossible de se connecter a la base');
$listeMatriculeSQL = array();
foreach ($_POST['matricule'] as $matricule) {
$listeMatriculeSQL[] = '\'' . mysql_real_escape_string($matricule) . '\'';
}
$req = implode(', ', $listeMatriculeSQL);
echo $req;
$requete = "SELECT
ref_pdt,
(SELECT FORMAT(SUM(qte_m*pu_m)/(SUM(qte_m)-(SUM(qte_m)/100)*perte_pdt)*poids_u_m_pdt,4) as prix_u_m
FROM recette
INNER JOIN matiere ON recette.code_m=matiere.code_m
INNER JOIN produit ON recette.ref_pdt=produit.ref_pdt
WHERE produit.ref_pdt IN ($req)AND recette.fourrage_rctt=0)
AS somme1,
(SELECT FORMAT(SUM(qte_m*pu_m)/(SUM(qte_m)-(SUM(qte_m)/100)*perte_pdt)*poids_u_f_pdt,4) as prix_u_f
FROM recette
INNER JOIN matiere ON recette.code_m=matiere.code_m
INNER JOIN produit ON recette.ref_pdt=produit.ref_pdt
WHERE produit.ref_pdt IN ($req)AND recette.fourrage_rctt=1)
AS somme2,
(SELECT FORMAT(SUM(qte_emb*pu_emb)/nbre_piece_fab_main,4) AS test2
FROM recette_emb
LEFT JOIN emballage ON recette_emb.id_emb=emballage.id_emb
LEFT JOIN main_d_oeuvre ON recette_emb.ref_pdt = main_d_oeuvre.ref_pdt
LEFT JOIN produit ON produit.ref_pdt=recette_emb.ref_pdt
WHERE produit.ref_pdt IN ($req))
AS somme3,
(SELECT FORMAT((nbre_per_main*nbre_heure_main*taux_hor_main)/nbre_piece_fab_main,4) AS pdr_m_o_u
FROM main_d_oeuvre
INNER JOIN produit ON main_d_oeuvre.ref_pdt=produit.ref_pdt
WHERE produit.ref_pdt IN ($req))
AS somme4,
(SELECT FORMAT(SUM(qte_m*pu_m)/(SUM(qte_m)-(SUM(qte_m)/100)*perte_pdt)*poids_u_m_pdt,4) as prix_u_m
FROM recette
INNER JOIN matiere ON recette.code_m=matiere.code_m
INNER JOIN produit ON recette.ref_pdt=produit.ref_pdt
WHERE produit.ref_pdt IN ($req)AND recette.fourrage_rctt=0)
+
(SELECT FORMAT(SUM(qte_m*pu_m)/(SUM(qte_m)-(SUM(qte_m)/100)*perte_pdt)*poids_u_f_pdt,4) as prix_u_f
FROM recette
INNER JOIN matiere ON recette.code_m=matiere.code_m
INNER JOIN produit ON recette.ref_pdt=produit.ref_pdt
WHERE produit.ref_pdt IN ($req)AND recette.fourrage_rctt=1)
+
(SELECT FORMAT(SUM(qte_emb*pu_emb)/nbre_piece_fab_main,4) AS test2
FROM recette_emb
LEFT JOIN emballage ON recette_emb.id_emb=emballage.id_emb
LEFT JOIN main_d_oeuvre ON recette_emb.ref_pdt = main_d_oeuvre.ref_pdt
LEFT JOIN produit ON produit.ref_pdt=recette_emb.ref_pdt
WHERE produit.ref_pdt IN ($req))
+
(SELECT FORMAT((nbre_per_main*nbre_heure_main*taux_hor_main)/nbre_piece_fab_main,4) AS pdr_m_o_u
FROM main_d_oeuvre
INNER JOIN produit ON main_d_oeuvre.ref_pdt=produit.ref_pdt
WHERE produit.ref_pdt IN ($req))
AS total
FROM produit
WHERE ref_pdt IN ($req);";
echo $requete;
while($ligne = mysql_fetch_assoc($query)){
echo '<br>';
echo '<b>1=> Ref_pdt : '.$ligne["ref_pdt"].'</b>';echo '<br>';
echo '<b>1=> Somme Matiere Premiere : '.$ligne["somme1"].'</b>';echo '<br>';
echo '<b>1=> Somme Fourrage : '.$ligne["somme2"].'</b>';echo '<br>';
echo '<b>1=> Somme Emballage : '.$ligne["somme3"].'</b>';echo '<br>';
echo '<b>1=> Somme Mains D oeuvre : '.$ligne["somme4"].'</b>';echo '<br>';
echo '<b>1=>Somme Total : '.$ligne["total"].'</b>';echo '<br>';
}
//while( $ligne2 = mysql_fetch_assoc($query2)){
// echo '<br>';
// echo '<b>2=>'.$ligne2["prix_u_f"].'</b>';
//}
?>
Code : Tout sélectionner
while($ligne = mysql_fetch_assoc($query)){
echo '<td width=200><u>'.$ligne["ref_pdt"].'</u></td>';
$totalmat=$totalmat+$ligne["somme1"]+$ligne["somme2"];
echo '<td width=300><u>'.$totalmat.'</u></td>';
echo '<td width=300><u>'.$ligne["somme3"].'</u></td>';
echo '<td width=300><u>'.$ligne["somme4"].'</u></td>';
$total=$total+$ligne["somme1"]+$ligne["somme2"]+$ligne["somme3"]+$ligne["somme4"];
echo '<td width=300><u>' .$total.'</u></td>';
echo '</tr>';