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
<?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...