Problème SQL/PHP
- Accueil
- Forum
- Programmation
- PHP
- Problème SQL/PHP
Green7497 Le 8 septembre 2016 à 16:36 (Édité le 25 janvier 2019 à 17:52)
Voilà je vous explique mon problème : je créer un site internet pour une petite entreprise. Et tous les jours les salariés de l'entreprise devront marquer ce qu'ils ont fait aujourd'hui ... Il renseigne donc leur nom, le chantier sur lequel il étaient et si ils avaient des coéquipier ou non. Si oui, il doivent selectionner le coéquipier en question.
Jusqu'ici rien de bien compliqué mais c'est là que ça se gatte. Il faut que j'affiche comme un chat par exemple : la date, le chantier, et la ou les personnes concernés.
Concernant la date et le chantier pas de problème... Mais c'est au niveau des personnes concernés que je bloque, j'ai simplement réussi à faire une requête SQL qui me renvoie seulement les chantier où il y a eu 3 salariés dessus (donc 1 salarié + 2 coéquipiers) ...
J'ai cherché tout l'après midi sans trouver de réponse, je me tourne donc à vous pour que vous m'aidiez
Voici le MLD de ma base de données :
personne(id_personne, nom, prenom)
chantier(id_chantier, lib_chantier, date_chantier, #id_personne, #id_coequipier1, #id_coequipier2)
Et voici mon code :
$RequeteSelect = $BDD -> query("select P1.nom as 'nom1', P2.nom as 'nom2', P3.nom as 'nom3', lib_chantier, DATE_FORMAT(date_chantier, '%d/%m/%y') AS 'date' from chantier C
inner join personne P1 on C.id_personne = P1.id_personne
inner join personne P2 on C.id_coequipier1 = P2.id_personne
inner join personne P3 on C.id_coequipier2 = P3.id_personne
order by id_chantier desc limit 0,5");
while($affichage = $RequeteSelect -> fetch())
{
if (empty($affichage['nom2']))
{
$coequipier='seul';
}
else
{
if (empty($affichage['nom3']))
{
$coequipier=$affichage['nom2'];
}
else
{
$coequipier=$affichage['nom2'] . ' et ' . $affichage['nom3'];
}
}
echo '<font size=2>[' . $affichage['date'] . ']</font><b> ' . $affichage['nom1'] . ', ' . $coequipier . ' : ' . '</b>' . $affichage['lib_chantier'] . '<br />';
}
et voici ce qu'il m'affiche :
[08/09/16] Dupont, Durand et Ducreux : chantier CHU
Merci d'avance pour vos réponse ^^
TheOldNoob Le 8 septembre 2016 à 18:43 (Édité le 1 janvier 1970 à 01:00)
J'ai pas bien compris ton problème :(
ça ne t'affiche que les chantiers avec 3 personnes et pas celles avec 2 ou 1 seule?
Green7497 Le 8 septembre 2016 à 19:17 (Édité le 1 janvier 1970 à 01:00)
Ça ne m'affiche que les chantiers avec 3 personnes et pas ceux avec 2 ou 1 personne, saurais-tu résoudre mon problème ? ^^
TheOldNoob Le 8 septembre 2016 à 20:18 (Édité le 8 septembre 2016 à 20:51)
Seul, a 2 ou a 3.
Donc tu peu faire une condition SI, une deuxieme ELSE et une 3eme ELSE IF.
if (empty($affichage['nom2'] AND (empty($affichage['nom3'])){
echo $affichage['nom1'].' seul.';
}
else (empty$affichage['nom3'])) {
echo $affichage['nom1'].' en équipe avec '.$affichage['nom2'].'.';
}
else if (!empty($affichage['nom2']) AND (!empty($affichage['nom3'])){
echo $affichage['nom1']. ' en équipe avec '.$affichage['nom2'].' et '.$affichage['nom3'];
}
Voilà, un truc du genre, je t'invite a vérifié la concaténation, les parenthèses, les acolades et tout et tout 😀
Et j'ai pas testé, car j'ai pas envie de créer une bdd pour ça 😋
Green7497 Le 8 septembre 2016 à 20:29 (Édité le 1 janvier 1970 à 01:00)
Une autre idée svp ?
TheOldNoob Le 8 septembre 2016 à 20:59 (Édité le 1 janvier 1970 à 01:00)
$RequeteSelect = $BDD -> query("select P1.nom as 'nom1', P2.nom as 'nom2', P3.nom as 'nom3', lib_chantier, DATE_FORMAT(date_chantier, '%d/%m/%y') AS 'date' from chantier C inner join personne P1 on C.id_personne = P1.id_personne
inner join personne P2 on C.id_coequipier1 = P2.id_personne
inner join personne P3 on C.id_coequipier2 = P3.id_personne
order by id_chantier desc limit 0,5");
$RequeteSelect->execute();
$team = $RequesteSelect->fetchAll(PDO::FETCH_ASSOC);
foreach($team as $showTeam) {
if (isset($showTeam['nom1'])) {
echo $showTeam['nom1'];
}
if (isset($showTeam['nom2'])) {
echo ' avec '. $showTeam['nom2'];
}
if (isset($showTeam['nom3'])) {
echo ' et '. $showTeam['nom3'];
}
}
Green7497 Le 8 septembre 2016 à 23:29 (Édité le 1 janvier 1970 à 01:00)
Donc je viens de tester ça et malheureusement, le même problème persiste encore :/
Le code ne me renvoie que les chantier où il y a 3 personnes dessus ...
Je commence à désespérer, pourtant ce que je voulais faire ne me semblait pas si compliquer que ça :o
D'autres idées svp ?