Probleme requete sur plusieurs table
Double_JJ
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Double_JJ Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Double_JJ Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite lister plusieurs table à partir d'une table, j'arrive à retourner tous les éléments de ma première table sans problème, mais quand je doit lister les autres tables cela me retourner que la première valeur.
Voici mon code :
- Pour le controller :
-Pour le modèle :
-pour ma vue :
Pouvez-vous m'aider car je ne comprends pas vraiment d'où vient mon problème ?
Pour infos le echo $data['Eedf'] me retourne bien se que je veut mais je n'arrive pas à le mettre dans ma vue.
Là je ne comprend pas vraiment ce qui coince .
Je souhaite lister plusieurs table à partir d'une table, j'arrive à retourner tous les éléments de ma première table sans problème, mais quand je doit lister les autres tables cela me retourner que la première valeur.
Voici mon code :
- Pour le controller :
// On stocke la liste des productions dans $production
// Compte le nombre de ligne dans la 1er table
$count = $this->Production->getCountAll();
for($i = '1'; $i <= $count; $i++){
$centrales = $this->Production->getAll($i);
foreach($centrales as $key => $value){
$productions = $this->Production->getProduction($value);
foreach($productions as $data){
echo $data['Eedf'];
}
}
$maintenance = $this->Production->getMaintenance();
}
// On envoie les données (compact) à la vue index
$this->render('index', compact('count','centrales','data','maintenance'));
-Pour le modèle :
// Méthode permettant d'obtenir tous les enregistrements de la table choisie
public function getAll(){
$sql = "SELECT * FROM ".$this->table." ORDER BY ".$this->titre." ".$this->order1;
$query = $this->_db_connect->prepare($sql);
$query->execute();
return $query->fetchAll(PDO::FETCH_ASSOC);
}
// Methode permettant d'obtenir le visuel de la production d'une centrale
public function getProduction($value){
$sql = "SELECT * FROM ".$value['view_table']." ORDER BY ".$this->hdate." ".$this->order2." LIMIT 0, ".$this->limit;
$query = $this->_db_connect->query($sql);
return $query->fetchAll();
}
// Methode permettant de compter le nombre d'entrée dans la base de données
public function getCountAll(){
$sql = "SELECT * FROM ".$this->table;
$query = $this->_db_connect->prepare($sql);
$query->execute();
return $query->rowCount();
}
-pour ma vue :
<?php
foreach($centrales as $center) :
?>
<tr class="grade">
<td><a href="index.php?p=<?= $tiny_titre ?>/lire/<?= $center['id'] ?>"><?= str_replace("_", " ", $center['centrale']) ?></a></td>
<td><?= $center['view_table'] ?></td>
<?php
if ($maintenance){
//foreach($maintenance as $key->$valeur){
$phase = "Maintenance en Cours";
?>
<td class="text-red"><b><?= $phase ?></b></td>
<?php
// }
}
include('./utility/calcul.php');
?>
<td><?= $data['Eedf'] ?></td>
<td><?= $data['OndX_ETotal'] ?></td>
<td><?= $data['Irr_Total'] ?></td>
<td></td>
<td><?= $data['PR_Total'] ?></td>
</tr>
<?php
endforeach;
?>
Pouvez-vous m'aider car je ne comprends pas vraiment d'où vient mon problème ?
Pour infos le echo $data['Eedf'] me retourne bien se que je veut mais je n'arrive pas à le mettre dans ma vue.
Là je ne comprend pas vraiment ce qui coince .
Configuration: Windows / Opera 71.0.3770.271
A voir également:
- Probleme requete sur plusieurs table
- Table ascii - Guide
- Table des matières word - Guide
- Table des caractères - Guide
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Tableau croisé dynamique ou table de pilote - Guide
4 réponses
D'autre test sur le controller :
Celui-ci me retourne la dernières valeurs :
Quand à celui, il me retourne que la première valeur :
Sur ma vue je n'est plus de foreach.
Que pensez-vous ? Suis-je sur le bon chemin?
Celui-ci me retourne la dernières valeurs :
// On stocke la liste des productions dans $production
// Compte le nombre de ligne dans la 1er table
$count = $this->Production->getCountAll();
for($i = '1'; $i <= $count; $i++){
$centrales = $this->Production->getAll($i);
}
foreach($centrales as $key => $value){
echo $value['centrale']." - ".$value['view_table']." - ";
$productions = $this->Production->getProduction($value);
foreach($productions as $data){
echo $data['Eedf']." - ".$data['Irr1']."<br>";
}
}
$maintenance = $this->Production->getMaintenance();
// On envoie les données (compact) à la vue index
$this->render('index', compact('count','value','data','maintenance'));
Quand à celui, il me retourne que la première valeur :
$count = $this->Production->getCountAll();
for($i = '1'; $i <= $count; $i++){
$centrales = $this->Production->getAll($i);
}
foreach($centrales as $key => $value){
echo $value['centrale']." - ".$value['view_table']." - ";
$productions = $this->Production->getProduction($value);
foreach($productions as $data){
echo $data['Eedf']." - ".$data['Irr1']."<br>";
}
$maintenance = $this->Production->getMaintenance();
// On envoie les données (compact) à la vue index
$this->render('index', compact('count','value','data','maintenance'));
}
Sur ma vue je n'est plus de foreach.
Que pensez-vous ? Suis-je sur le bon chemin?
Du coup j'ai refait différemment dans ma vue.
Voici le code :
Je sais pas si c'est la meilleur solution, mais sa fonctionne à merveille.
Voici le code :
<?php
foreach($centrales as $key => $value):
$productions = $this->Production->getProduction($value);
foreach($productions as $data):
?>
<tr class="grade">
<td><a href="index.php?p=<?= $tiny_titre ?>/lire/<?= $value['view_table'] ?>"><?= str_replace("_", " ", $value['centrale']) ?></a></td>
<td><?= $value['view_table'] ?></td>
<?php
if ($maintenance){
//foreach($maintenance as $key->$valeur){
$phase = "Maintenance en Cours";
?>
<td class="text-red"><b><?= $phase ?></b></td>
<?php
// }
}
//include('./utility/calcul.php');
?>
<td><?= $data['Eedf'] ?></td>
<td><?= $data['Ond1_ETotal'] ?></td>
<td><?= $data['Irr1'] ?></td>
<td></td>
<td></td>
</tr>
<?php
endforeach;
endforeach;
?>
Je sais pas si c'est la meilleur solution, mais sa fonctionne à merveille.