Probleme requete sur plusieurs table

Fermé
Double_JJ Messages postés 4 Date d'inscription mardi 20 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020 - 20 oct. 2020 à 11:07
Double_JJ Messages postés 4 Date d'inscription mardi 20 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020 - 20 oct. 2020 à 15:23
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 :
 // 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

4 réponses

Double_JJ Messages postés 4 Date d'inscription mardi 20 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020
20 oct. 2020 à 11:31
D'autre test sur le controller :
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?
0
Double_JJ Messages postés 4 Date d'inscription mardi 20 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020
20 oct. 2020 à 14:25
Du coup j'ai refait différemment dans ma vue.
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.
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 oct. 2020 à 15:21
Bonjour,

Désolé que tu n'aies pas eu de réponse, mais content que tu t'en sois sorti, et surtout merci d'avoir tenu à jour !
Il ne reste plus qu'à marquer le sujet comme Résolu sur le message initial :)

Xavier
0
Double_JJ Messages postés 4 Date d'inscription mardi 20 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020
20 oct. 2020 à 15:23
Bonjour Reivax962,

Après je pense pas que se soit la meilleur solution, je laisse quand même ouvert quelques temps afin de voir si quelqu'un à une meilleur solution.

Merci.
0