Bien le coucou !
Je vais directement poster le code et expliquer le problème après ^^
<!-- Tableau des oeuvres de l'utilisateur -->
<div class="row">
<h4>Mes oeuvres</h4>
<table class="table table-hover">
<thead> <!-- En-tête du tableau -->
<tr>
<th>Nom de votre livre</th>
<th>Genre du livre</th>
<th>Etat</th>
<th>Actions</th>
<th>Dernière édition</th>
<th>Etat</th>
</tr>
</thead>
<tbody> <!-- Corps du tableau -->
<?php foreach ($listeStoriesAuteur as $story): ?>
<tr id="<?php echo $story'id'];?>">
<td><?php echo $story'title'];?></td>
<td>
<?php if ($story'id_category'] == $listeDesCategories'Categories']'id']):?>
<?php echo $listeDesCategories'Categories']'libelle'];?>
<?php else :?>
<?php echo "Catégorie inconnue";?>
<?php endif;?>
</td>
<td class="img-align">
<?php if (date('Y-m-d H:i:s') < $story'd_expires']): ?>
En cours
<?php else :?>
Rédaction terminée
<?php endif;?>
</td>
<td>
<?php foreach ($listeDesEntreesTableTemporaires as $listeEntree): ?>
<?php if(empty($listeEntree'Temporaires']'id_story']) || $listeEntree'Temporaires']'id_story'] !=$story'id']):?>
<?php echo $this->Html->image("icons/add_message.png",array('alt'=>'Add Message','url' => array('controller' => 'story', 'action' => 'addmessage',$story'id'])))?>
<?php else :?>
<?php echo $this->Html->image("icons/edition_en_cours.png")?>
<?php endif;?>
<?php endforeach; ?>
<?php echo $this->Html->image("icons/pdf.png",array('alt'=>'Imprimer en PDF','url' => array('controller' => 'story', 'action' => 'pdf',$story'id'])))?>
</td>
<td>09 12 2013</td>
<td>Libre</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
Petite explication du dit code :)
Il s'agit d'un tableau où l'on va voir s'afficher les histoires d'une personne. Tout simplement. J'ai donc deux boucles "Foreach", la première va construire le tableau avec l'ensemble des oeuvres que j'ai écrit (par exemple) et la seconde boucle doit parcourir le tableau des "Entrees temporaires".(C'est une restriction un peu particulière, en gros mon développement c'est comme un forum sauf que deux personnes ne peuvent pas poster en même temps ^^)
Donc dans le deuxième foreach il y à un joli "if"
<?php foreach ($listeDesEntreesTableTemporaires as $listeEntree): ?>
<?php if(empty($listeEntree'Temporaires']'id_story']) || $listeEntree'Temporaires']'id_story'] !=$story'id']):?>
<?php echo $this->Html->image("icons/add_message.png",array('alt'=>'Add Message','url' => array('controller' => 'story', 'action' => 'addmessage',$story'id'])))?>
<?php else :?>
<?php echo $this->Html->image("icons/edition_en_cours.png")?>
<?php endif;?>
<?php endforeach; ?>
Mais ce joli if ne fonctionne pas des masses avec le "empty" :'( En gros quand mon tableau est vide OU que l'id de l'histoire dans le tableau ne correspond pas à l'id de l'histoire qui est dans la ligne de ma <table> j'affiche un icone, sinon j'affiche un autre icone... Et là c'est donc le drame...le "empty" ne fonctionne pas. Il n'est pas bon ? On ne l'écrit pas cela ?
Je ne sais pas si je suis hyper hyper clair, j'avoue avoir un peu de mal à l'expliquer comme ça sur un extrait ^^ mais si besoin je peux donner des explications plus claire!
Merki à vous !
Donc si ta table est vide, $listeHistoireEnCoursDedition vaut false, si oui c'est normal que le foreach ne fonctionne pas.
<?
$add_message = $this->Html->image("icons/add_message.png",array(
'alt'=>'Add Message',
'url' => array('controller' => 'story', 'action' => 'addmessage', $story'id'])
));
if ($listeHistoireEnCoursDedition) {
foreach ($listeHistoireEnCoursDedition as $listeEntree){
if ($listeEntree'Temporaires']'id_story'] != $story'id']){
echo $add_message;
}else{
echo $this->Html->image("icons/edition_en_cours.png");
}
}
}else{
echo $add_message;
}
?>
Si ce code ne t'aide pas envoi moi un debug de $listeHistoireEnCoursDedition quant ta table est pleine et un autre quand elle est vide.
Petite question, esque $listeEntree'Temporaires']'id_story'] peut ne pas exister?
Essai avec sa
if(!$listeEntree'Temporaires']'id_story'] || $listeEntree'Temporaires']'id_story'] != $story'id']){
Chalut,
Dans l'absolu oui. En gros il existe quand on clique sur le bouton pour insérer un message ^^ J'essaie et je te dis !
Chalut, désolé je n'ai pas pu répondre avant !
Alors j'ai essayé ton option mais ça ne fonctionne pas, en gros quand la table est vide il m'affiche aucun des icônes :'(
<?php foreach ($listeHistoireEnCoursDedition as $listeEntree): ?>
<?php if(!$listeEntree'Temporaires']'id_story'] || $listeEntree'Temporaires']'id_story'] != $story'id']):?>
<?php echo $this->Html->image("icons/add_message.png",array('alt'=>'Add Message','url' => array('controller' => 'story', 'action' => 'addmessage',$story'id'])))?>
<?php else :?>
<?php echo $this->Html->image("icons/edition_en_cours.png")?>
<?php endif;?>
<?php endforeach; ?>
Bonjour.
As-tu testé avec !isset au lieu de empty ( isset permet de vérifier l'existence de la variable et si elle n'est pas NULL) ?
Ah je te kiffe ! Je me doutais que le foreach ne fonctionnait pas puisque le tableau était faux puisqu'il était vide mais je ne savais pas le traduire chose qui est faite avec ton "if ($listehistoireEnCoursDedition)" !
<?php if ($listeHistoireEnCoursDedition):?>
<?php foreach ($listeHistoireEnCoursDedition as $listeEntree):?>
<?php if ($listeEntree'Temporaires']'id_story'] != $story'id']):?>
<?php echo $this->Html->image("icons/add_message.png",array('alt'=>'Add Message','url' => array('controller' => 'story', 'action' => 'addmessage', $story'id'])));?>
<?php else:?>
<?php echo $this->Html->image("icons/edition_en_cours.png");?>
<?php endif;?>
<?php endforeach;?>
<?php else:?>
<?php echo $this->Html->image("icons/add_message.png",array('alt'=>'Add Message','url' => array('controller' => 'story', 'action' => 'addmessage', $story'id'])));?>
<?php endif;?>
Je remet ce code là avec la solution version "Cakephp" ^^ Merci encore à toi !
Au même moment je postais la réponse ^^
Oui j'ai essayé du coup avec isset, mais le truc c'est que pour lui isset donne true parce qu'il me retournait un tableau mais vide.
Ta 'solution' cakephp est exactement la même que le mienne sauf que tu n'arrête pas d'ouvrir et de fermer les balises php..
Et je serrai toi, je placerai ce code dans le controller pour que ta vue est le moins de code php possible.