Probleme requete sur plusieurs table

Double_JJ Messages postés 4 Statut Membre -  
Double_JJ Messages postés 4 Statut Membre -
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

  1. Double_JJ Messages postés 4 Statut Membre
     
    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
  2. Double_JJ Messages postés 4 Statut Membre
     
    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
  3. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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
  4. Double_JJ Messages postés 4 Statut Membre
     
    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