Bonjour, 1/ Je cherche à faire une requête sur 4 tables :
Table S : synthese
Id
Code
Intitule
Numero
Source (les données reprennent certains numeros de code des 3 tables suivantes : exemple R8, A1, E1…)
Source1 (les données reprennent certains numeros de code des 3 tables suivantes : exemple R7, A2…)
Source2 (les données reprennent certains numeros de code des 3 tables suivantes : exemple R3…)
Source3 (les données reprennent certains numeros de code des 3 tables suivantes : exemple E6…)
Source4 (les données reprennent certains numeros de code des 3 tables suivantes : exemple R16…)
Source5 (les données reprennent certains numeros de code des 3 tables suivantes : exemple A3…)
Table A : global
Id
Code
Analyse
Cotation
Table E : interne
Id
Code
Analyse
Cotation
Table T : theme
Id
Code
Analyse
Cotation
2/ Mon objectif est d’afficher les analyses et les cotations des tables A, E et Tpar ordre de numero de la table S
3/ J’ai essayé de deux manières:
3.1/ Par une requête simple (export_syn_gg3.php) : cela me donne 35 fois les données
« Vous êtes connecté au serveur et à la base
numéro – Intitulé
Fin de la rubrique : R8
Analyse A1
Fin de la rubrique : A1
Analyse E1
Fin de la rubrique : E1
Sources citées : R8
Et cela 35 fois !
Le code est le suivant :
<?php
// Connexion à la base de données avec PDO (PHP Data Object)
echo 'Vous êtes connecté au serveur et à la base<br>';
?>
<?php
// On récupère les 5 derniers billets
$req = $dbh->query('SELECT synthese.numero AS numero_s, synthese.intitule AS intitule_s,
synthese.source AS source_s, synthese.source2 AS source2_s, synthese.source3 AS source3_s, synthese.source4 AS source4_s, synthese.source5 AS source5_s,
analyse_a.code AS code_a, analyse_a.analyse AS analyse_a,
analyse_e.code AS code_e, analyse_e.analyse AS analyse_e,
theme.code AS code_t, theme.analyse AS analyse_t
FROM synthese
INNER JOIN theme
ON theme.code = synthese.source OR theme.code = synthese.source2 OR theme.code = synthese.source3
INNER JOIN analyse_a
ON analyse_a.code = synthese.source OR analyse_a.code = synthese.source2 OR analyse_a.code = synthese.source3 OR theme.code = synthese.source OR theme.code = synthese.source2 OR theme.code = synthese.source3
INNER JOIN analyse_e
ON analyse_e.code = synthese.source OR analyse_a.code = synthese.source2 OR analyse_a.code = synthese.source3 OR theme.code = synthese.source OR theme.code = synthese.source2 OR theme.code = synthese.source3
ORDER BY synthese.numero');
while ($donnees = $req->fetch())
{
?>
<div class="news">
<?php echo htmlspecialchars($donnees['numero_s']); ?>
- <b><?php echo $donnees['intitule_s']; ?></b><br>
<?php echo $donnees['analyse_t']; ?><br>
<em> Fin de la rubrique : </em><?php echo $donnees['code_t']; ?><br/>
<?php echo $donnees['analyse_a']; ?><br>
<em> Fin de la rubrique : </em><?php echo $donnees['code_a']; ?><br/>
<?php echo $donnees['analyse_e']; ?><br>
<em> Fin de la rubrique : </em><?php echo $donnees['code_e']; ?><br/>
<em> Sources citées : <?php echo $donnees['source_s']; ?></em>
<em> <?php echo $donnees['source2_s']; ?></em>
<em> <?php echo $donnees['source3_s']; ?></em>
<em> <?php echo $donnees['source4_s']; ?></em>
<em> <?php echo $donnees['source5_s']; ?></em><br/><br/>
</div>
<?php
} // Fin de la boucle des billets
$req->closeCursor();
?>
3.2/ Par une requête préparée (export_syn_us7.php) : cela me donne un texte qui n’est pas exploitable :
« Vous êtes connecté au serveur et à la base
Array ( [0] => Array ( [numero_s] => 00 [intitule_s] => Introduction [source_s] => [code_e] => EI1 [analyse_e] => essai ) [1] => Array ( [numero_s] => 00 [intitule_s] => Introduction [source_s] => [code_e] => EI2 [analyse_e] => ) [2] => Array (… »
Le code est :
<?php
// Connexion à la base de données avec PDO (PHP Data Object)
echo 'Vous êtes connecté au serveur et à la base<br>';
?>
<?php
// On récupère
$results = array();
$req1 = $dbh->prepare('SELECT synthese.numero AS numero_s, synthese.intitule AS intitule_s, FROM synthese');
$req1->execute();
while($donnees = $req1->fetch(PDO::FETCH_ASSOC))
$results[] = $donnees;
$req2 = $dbh->prepare('SELECT synthese.numero AS numero_s, synthese.intitule AS intitule_s, synthese.source AS source_s, analyse_e.code AS code_e, analyse_e.analyse AS analyse_e FROM synthese INNER JOIN analyse_e');
$req2->execute();
while($donnees = $req2->fetch(PDO::FETCH_ASSOC))
$results[] = $donnees;
print_r($results);
{
?>
<?php
} // Fin de la boucle des billets
$req1->closeCursor();
$req2->closeCursor();
?>
Pouvez-vous m’aider pour afficher les résultats correctement et qu’une seule fois (cf. Requête simple) ?
Merci pour vos réponses