Calcul + requete avec plusieur tables

Mammouth du PHP | 19672 Messages

11 oct. 2011, 13:50

Tu utilises des variables non définies.

Par exemple, tu fais un $req3->execute avec en paramètre $chaquepiece['id_piece'] alors que tu n'as pas récupéré le résultat de $req2
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

12 oct. 2011, 14:18

J'ai essayé de simplifié un peu plus le code pour se limité à ce que j'ai besoin.
C'est à dire 1 barre par coef de piece.
			<?php
			// On récupère l'id du projet
			$req1 = $bdd->prepare('SELECT id_projet FROM projet WHERE nom_projet = ?');
			$req1->execute(array($_POST['nom_projet']));
			$id_projet = $req1->fetch();
			// On récupère toutes les pièces du projet
			$req2 = $bdd->prepare('SELECT id_piece, nom_piece, quantite_piece, poids_total_piece FROM piece WHERE id_projet = ?');
			$req2->execute(array($id_projet['id_projet']));
			$chaquepiece = $req2->fetch();
			//On crée le graphique
			$num = 1;
			$xOffset = 0;
			$xIncrement = 40; // width of bars
			$scale = 1;
			// On effectue le calcul pour les pièces du projet	
			$req3 = $bdd->prepare('
			SELECT
			SUM(
			sous_ensemble.qte_sous_ensemble *
			(
				(
				sous_ensemble.poids_sous_ensemble *
				materiaux.indicateur_materiaux *
				process.indicateur_process
				) +
			(
			sous_ensemble.quantite_traitement_sous_ensemble *
			traitement.indicateur_traitement
			)
			)
			)AS coef_piece
			FROM sous_ensemble
			INNER JOIN materiaux ON sous_ensemble.matiere_sous_ensemble = materiaux.nom_materiaux
			INNER JOIN traitement ON sous_ensemble.traitement_matiere_sous_ensemble = traitement.nom_traitement
			INNER JOIN process ON sous_ensemble.processus_matiere_sous_ensemble = process.nom_process
			WHERE id_piece = ?');
			$req3->execute(array($chaquepiece['id_piece']));
			$coef_piece = $req3->fetch();
			while ($coef_piece = $req3->fetch())
				{
				echo "<ul class='TGraph' style='height: ".$coef_piece."px; left: ".$xOffset."px;' title='$date'>$coef_piece<br />p1</ul>";
				// On passe à la colonne suivante
				$xOffset = $xOffset + $xIncrement;
				$date = $date + 1;
				echo '</ul>';
				}
			$req1->closeCursor();
			$req2->closeCursor();
			$req3->closeCursor();?>
Mais la encore je n'ai rien d'afficher...
J'ai regardais le code source de la page généré il met rien non plus.
En fait si je reprend son code avec ses infos css, j'ai pas grand chose qui s'affiche.
Je suis pas sur de bien saisir le fonctionnement.