Problèmes de jointure

Résolu
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:
<?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

3 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

À première vue, il me semble qu'il manque des simples cotes autour de ta variable :fiche dans ta requête.

Xavier
0
Utilisateur anonyme
 
Bonjour

Dans une requête préparée, il ne faut pas de quotes autour des marqueurs comme :fiche.
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Même si on ne lui dit nulle part que le paramètre est de type string ?
0
Utilisateur anonyme
 
Même !

Tu as déjà utilisé les requêtes préparées ?
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Oui mais pas celles-là : j'utilise un framework perso...
0
Utilisateur anonyme
 
Ah bon ? Il existe plusieurs sortes de requêtes préparées ?
0
Utilisateur anonyme
 
Bonjour

$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 ?
0
Manover
 
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
$ficheincidentdonnees[e . Nom]
ce sont rajouté sur ccm.

Merci pour votre aide.
0