Problèmes de jointure
Résolu
Manover
-
Manover -
Manover -
Bonjour,
Je développe actuellement quelques pages web avec php pour gérer des sanctions dans un collège. Mais je bloque sur une jointure et je ne trouve pas l'erreur peux être qu'un regard neuf me sauvera :)
Je n'ai pas de message d'erreur et quand je tape mon "SELECT" dans "sql" ça fonctionne ...
Voici mon code:
J'ai 6 tables:
-Eleves avec les champs:
-IdEleves
-Nom
-Prenom
-Division
-Personnels avec les champs:
-IdPersonnels
-NomPersonnel
-PrenomPersonnel
-StatusPersonnel
-Incidents avec les champs:
-IdIncidents
-NomIncident
-Punitions avec les champs:
-IdPunitions
-Punition
-Sanction avec les champs:
-IdSanctions
-NomSanctions
-IncidentsEleves avec les champs:
-IdIncidentsEleves
-IdEleves
-DteEvenements
-IdPersonnels
-IdIncidents
-IdPunitions
-IdSanctions
Je développe actuellement quelques pages web avec php pour gérer des sanctions dans un collège. Mais je bloque sur une jointure et je ne trouve pas l'erreur peux être qu'un regard neuf me sauvera :)
Je n'ai pas de message d'erreur et quand je tape mon "SELECT" dans "sql" ça fonctionne ...
Voici mon code:
<?php
if (isset($_GET['incident'])) {
$_GET['incident'] = htmlspecialchars($_GET['incident']);
echo $_GET['incident'];
echo '<table>';
$ficheincident = $bdd -> prepare('SELECT e.Nom, e.Prenom, e.Division, ie.DteEvenements, pe.NomPersonnel, pe.PrenomPersonnel, pe.StatutPersonnel
FROM IncidentsEleves AS ie
LEFT JOIN Incidents AS i ON ie.IdIncidents = i.IdIncidents
LEFT JOIN Eleves AS e ON ie.IdEleves = e.IdEleves
LEFT JOIN Personnels AS pe ON ie.IdPersonnels = pe.IdPersonnels
LEFT JOIN Punitions AS pu ON ie.IdPunitions = pu.IdPunitions
LEFT JOIN Sanctions AS s ON ie.IdSanctions = s.IdSanctions
WHERE i.NomIncident = :fiche
ORDER BY DteEvenements');
$ficheincident -> execute(array('fiche' => $_GET['incident']));
while ($ficheincidentdonnees = $ficheincident -> fetch()) {
echo '<tr>';
echo '<td>' . $ficheincidentdonnees[e . Nom] . '</td>';
echo '<td>' . $ficheincidentdonnees[e . Prenom] . '</td>';
echo '<td>' . $ficheincidentdonnees[e . Division] . '</td>';
echo '<td>' . $ficheincidentdonnees[ie . DteEvenements] . '</td>';
echo '<td>' . $ficheincidentdonnees[pe . NomPersonnel] . '</td>';
echo '<td>' . $ficheincidentdonnees[pe . PrenomPersonnel] . '</td>';
echo '<td>' . $ficheincidentdonnees[pe . StatusPersonnel] . '</td>';
echo '</tr>';
}
$ficheincident -> closeCursor();
echo '<table>';
} else {
echo '</p><a href="index.php?page=ajouter&incident=incident">Ajouter un type d\'incident</a></p>';
echo '<table>';
$incident = $bdd -> query('SELECT NomIncident FROM Incidents ORDER BY NomIncident');
while ($incidentdonnees = $incident -> fetch()) {
echo '<tr>';
echo '<td><a href="index.php?page=incidents&incident=' . $incidentdonnees[NomIncident] . '">' . utf8_encode($incidentdonnees[NomIncident]) . '</a></td>';
echo '<td><a href="index.php?page=modifier&incident=' . $incidentdonnees[NomIncident] . '">Modifier</a></td>';
echo '<td><a href="index.php?page=supprimer&incident=' . $incidentdonnees[NomIncident] . '">Supprimer</a></td>';
echo '</tr>';
}
$incident -> closeCursor();
echo '<table>';
}
?>
J'ai 6 tables:
-Eleves avec les champs:
-IdEleves
-Nom
-Prenom
-Division
-Personnels avec les champs:
-IdPersonnels
-NomPersonnel
-PrenomPersonnel
-StatusPersonnel
-Incidents avec les champs:
-IdIncidents
-NomIncident
-Punitions avec les champs:
-IdPunitions
-Punition
-Sanction avec les champs:
-IdSanctions
-NomSanctions
-IncidentsEleves avec les champs:
-IdIncidentsEleves
-IdEleves
-DteEvenements
-IdPersonnels
-IdIncidents
-IdPunitions
-IdSanctions
A voir également:
- Problèmes de jointure
- Jointure excel - Guide
- Pb de jointure ✓ - Forum MySQL
- [Excel,vba,ado] faire une jointure de tables - Forum VB / VBA
- Jointure en php - Forum PHP
- PHP Mysql jointure ✓ - Forum MySQL
3 réponses
Bonjour,
À première vue, il me semble qu'il manque des simples cotes autour de ta variable :fiche dans ta requête.
Xavier
À première vue, il me semble qu'il manque des simples cotes autour de ta variable :fiche dans ta requête.
Xavier
Bonjour
Si tu n'as pas défini e et Nom comme des constantes en PHP, l'expression e . Nom est indéterminée. Je suppose que tu voulais écrire ['e.Nom'], avec des apostrophes, et sans espaces autour du point.
Mais avant tout, qu'est-ce qui se passe ? Tu ne le dis pas. Entres-tu dans le while ?
$ficheincidentdonnees[e . Nom]
Si tu n'as pas défini e et Nom comme des constantes en PHP, l'expression e . Nom est indéterminée. Je suppose que tu voulais écrire ['e.Nom'], avec des apostrophes, et sans espaces autour du point.
Mais avant tout, qu'est-ce qui se passe ? Tu ne le dis pas. Entres-tu dans le while ?
Bonjour,
Désolé de pas avoir répondu avant je n'ai pas trop eu le temps.
Après une nuit de repos, retour sur mon code et la je me suis rendu compte que j'avais oublié les apostrophes comme la dit "le père".
ps: les espaces dans
Merci pour votre aide.
Désolé de pas avoir répondu avant je n'ai pas trop eu le temps.
Après une nuit de repos, retour sur mon code et la je me suis rendu compte que j'avais oublié les apostrophes comme la dit "le père".
ps: les espaces dans
$ficheincidentdonnees[e . Nom]ce sont rajouté sur ccm.
Merci pour votre aide.
Dans une requête préparée, il ne faut pas de quotes autour des marqueurs comme :fiche.
Tu as déjà utilisé les requêtes préparées ?