Problème de requête HomeCustom [Réglé]
Navalex Membre non connecté
Booster Roquette
-
Booster Roquette
- Voir le profil du membre Navalex
- Inscrit le : 12/02/2012
- Site internet
- Groupes :
Je suis en train de créer une page d'accueil avec le module HomeCustom.
Sauf que mes requêtes n'ont pas l'air de bien marché :/
Voici donc mon fichier php:
Code PHP :
<?php /*################################################## * HomeCustomHomePageExtensionPoint.class.php * ------------------- * begin : August 25, 2012 * copyright : (C) 2012 Kevin MASSY * email : kevin.massy@phpboost.com * * ################################################### * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ###################################################*/ class HomeCustomHomePageExtensionPoint implements HomePageExtensionPoint { private $template; public function get_home_page() { return new DefaultHomePage($this->get_title(), $this->get_view()); } private function get_title() { return LangLoader::get_message('title', 'common', 'HomeCustom'); } private function get_view() { $this->template = new FileTemplate('HomeCustom/home.tpl'); $this->build_view_item(); $this->build_view_news(); return $this->template; } //############################################# //# Séléction des 3 dernières news importante # //############################################# private function build_view_item() { $id_cats_item = array('2'); $querier_item = PersistenceContext::get_querier(); $results_item = $querier_item->select('SELECT cat.id, cat.rewrited_name, news.id, news.rewrited_name, news.picture_url, news.name, news.short_contents FROM ' . PREFIX . 'news news LEFT JOIN ' . PREFIX . 'news_cats cat ON cat.id = news.id_category WHERE news.id_category IN (' . implode(', ', $id_cats_item) . ') ORDER BY news.creation_date DESC'); $this->build_modules_view_item($results_item); } private function build_modules_view_item(SelectQueryResult $results_item) { $tpl_item = new FileTemplate('HomeCustom/items.tpl'); foreach ($results_item as $row_item) { if ($i_item >= 3) { break; } if($i_item==1){$class_item="item active";} else{$class_item="item";} $link_item = new Url('/news/' . $row_item['cat.id'] . '-' . $row_item['cat.rewrited_name'] . '/' . $row_item['news.id'] . '-' . $row_item['news.rewrited_name']); $tpl_item->assign_block_vars('item', array( 'U_LINK' => $link_item->absolute(), 'U_IMG' => Url::to_absolute($row_item['news.picture_url']), 'TITLE' => $row_item['news.name'], 'SHORT_CONTENT' => $row_item['news.short_contents'], 'CLASS' => $item_class )); $i_item++; } $this->template->put('ITEMS', $tpl_item); } //################################## //# Selection des 4 dernières news # //################################## private function build_view_news() { $id_cats_news = array('1', '2'); $querier_news = PersistenceContext::get_querier(); $results_news = $querier_news->select('SELECT cat.id, cat.rewrited_name, news.id, news.rewrited_name, news.picture_url, news.name, news.short_contents FROM ' . PREFIX . 'news news LEFT JOIN ' . PREFIX . 'news_cats cat ON cat.id = news.id_category WHERE news.id_category IN (' . implode(', ', $id_cats_news) . ') ORDER BY news.creation_date DESC'); $this->build_modules_view_news($results_news); } private function build_modules_view_news(SelectQueryResult $results_news) { $tpl_news = new FileTemplate('HomeCustom/news.tpl'); foreach ($results_news as $row_news) { if ($i_news >= 4) { break; } $link_news = new Url('/news/' . $row_news['cat.id'] . '-' . $row_news['cat.rewrited_name'] . '/' . $row_news['news.id'] . '-' . $row_news['news.rewrited_name']); $tpl_news->assign_block_vars('news', array( 'U_LINK' => $link_news->absolute(), 'U_IMG' => Url::to_absolute($row_news['news.picture_url']), 'TITLE' => $row_news['news.name'], 'SHORT_CONTENT' => $row_news['news.short_contents'] )); $i_news++; } $this->template->put('NEWS', $tpl_news); } } ?>
Je commence tout juste dans le domaine des modules etc.. :/
Cordialement, Navalex.
Édité par Navalex Le 04/01/2015 à 16h16
ElenWii Membre non connecté
-
Administrateur
- Voir le profil du membre ElenWii
- Inscrit le : 14/08/2009
- Site internet
- Groupes :
-
Equipe Graphique
Navalex Membre non connecté
Booster Roquette
-
Booster Roquette
- Voir le profil du membre Navalex
- Inscrit le : 12/02/2012
- Site internet
- Groupes :
ElenWii :
Alors, le résultat est que les deux TPL marche très bien, la page s'affiche, mais il n'y aucun texte ou lien, donc il y a un problème au niveau de la récupération des données :/
ElenWii Membre non connecté
-
Administrateur
- Voir le profil du membre ElenWii
- Inscrit le : 14/08/2009
- Site internet
- Groupes :
-
Equipe Graphique
Navalex Membre non connecté
Booster Roquette
-
Booster Roquette
- Voir le profil du membre Navalex
- Inscrit le : 12/02/2012
- Site internet
- Groupes :
Code TPL :
<div class="panel panel-info"> <div class="panel-heading"> <h1 class="panel-title">News importantes</h1> </div> <div id="news_slider" class="carousel slide" data-ride="carousel"> <!-- Indicators --> <ol class="carousel-indicators"> <li data-target="#news_slider" data-slide-to="0" class="active"></li> <li data-target="#news_slider" data-slide-to="1"></li> <li data-target="#news_slider" data-slide-to="2"></li> </ol> <!-- Wrapper for slides --> <div class="carousel-inner" role="listbox"> # INCLUDE ITEMS # </div> <!-- Controls --> <a class="left carousel-control" href="#news_slider" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> <a class="right carousel-control" href="#news_slider" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> </div> </div> <div class="row"> <div class="col-sm-4"> <div class="panel panel-default"> <div class="panel-heading"> <h1 class="panel-title">Twitter</h1> </div> <div class="panel-body"> <a class="twitter-timeline" href="https://twitter.com/ArkemisMG" data-widget-id="546351639968636928" data-chrome="noheader nofooter noscrollbar noborders transparent">Tweets de @ArkemisMG</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> </div> </div> </div> <div class="col-sm-4"> <div class="panel panel-default"> <div class="panel-heading"> <h1 class="panel-title">Rejoins Nous !</h1> </div> <div class="panel-body"> <p align="center"> Rejoins nous sur le serveur à l'adresse <br /><br /> <a><strong>mc.arkemis.fr</strong></a> </p> </div> </div> </div> <div class="col-sm-4"> <div class="panel panel-default"> <div class="panel-heading"> <h1 class="panel-title">Derniers Posts</h1> </div> <div class="panel-body"> Contenu </div> </div> </div> </div> <div class="row"> # INCLUDE NEWS # </div>
news.tpl:
Code TPL :
# START news # <div class="col-md-6"> <div class="thumbnail"> <a href="{news.U_LINK}" class="thumbnail"> <img src="{news.U_IMG}" title="{news.TITLE}" alt="{news.TITLE}" /> </a> <div class="caption"> <h3>{news.TITLE}</h3> <p>{news.SHORT_CONTENT}</p> <p><a href="{news.U_LINK}" class="btn btn-primary" role="button">Voir toute la news</a></p> </div> </div> </div> # END news #
items.tpl:
ElenWii Membre non connecté
-
Administrateur
- Voir le profil du membre ElenWii
- Inscrit le : 14/08/2009
- Site internet
- Groupes :
-
Equipe Graphique
Essaye de remplacer une variable avec une valeur fixe voir si cela vient de ta requete sql
Code PHP :
=> 'TITLE' => $row_news['news.name'],
Code PHP :
'TITLE' => 'test',
Navalex Membre non connecté
Booster Roquette
-
Booster Roquette
- Voir le profil du membre Navalex
- Inscrit le : 12/02/2012
- Site internet
- Groupes :
ElenWii :
Tu peux nous faire un Screenshots du résultat ?
Essaye de remplacer une variable avec une valeur fixe voir si cela vient de ta requete sql
Essaye de remplacer une variable avec une valeur fixe voir si cela vient de ta requete sql
Code PHP :
=> 'TITLE' => $row_news['news.name'],
Code PHP :
'TITLE' => 'test',
Si je met
Code PHP :
'TITLE' => 'test',
L'emplacement du titre affiche bien test
Édité par Navalex Le 04/01/2015 à 16h16
ElenWii Membre non connecté
-
Administrateur
- Voir le profil du membre ElenWii
- Inscrit le : 14/08/2009
- Site internet
- Groupes :
-
Equipe Graphique
Navalex Membre non connecté
Booster Roquette
-
Booster Roquette
- Voir le profil du membre Navalex
- Inscrit le : 12/02/2012
- Site internet
- Groupes :
Vu que j'appel deux table ?
ElenWii Membre non connecté
-
Administrateur
- Voir le profil du membre ElenWii
- Inscrit le : 14/08/2009
- Site internet
- Groupes :
-
Equipe Graphique
Navalex Membre non connecté
Booster Roquette
-
Booster Roquette
- Voir le profil du membre Navalex
- Inscrit le : 12/02/2012
- Site internet
- Groupes :
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
hum je dirais que @ElenWii à juste, pour preuve le lien tu tuto qu'il a donnée :
Code PHP :
$results = $querier->select('SELECT file.id, file.idcat, file.title, file.short_contents, file.timestamp, file.image, user.login FROM ' . PREFIX . 'download file LEFT JOIN ' . DB_TABLE_MEMBER . ' user ON user.user_id = file.user_id WHERE visible = 1 AND approved = 1 AND file.idcat IN (' . implode(', ', $id_cats) . ') ORDER BY timestamp DESC');
et plus bah on a
Code PHP :
foreach ($results as $row) { if ($i >= 3) { break; } $link = new Url('/download/download' . url('.php?id=' . $row['id'], '-' . $row['id'] . '+' . Url::encode_rewrite($row['title']) . '.php')); $tpl->assign_block_vars('item', array( 'U_LINK' => $link->absolute(), 'U_IMG' => Url::to_absolute($row['image']), 'C_IMG' => !empty($row['image']), 'TITLE' => $row['title'], 'DESC' => $row['short_contents'], 'PSEUDO' => $row['login'] )); $i++; }
Donc on vois bien que "file.id" et "file.title" par exemple se retrouve en "$row['id']" et "$row['title']" dans le foreach.
De toute façons cela ne coûte rien de changer par ce que @ElenWii à dit, au pire des cas cela ne fonctionne toujours pas, au mieux sa réponse te juste et cela fonctionne.
EDIT :
Par contre si on pouvais m'expliquer d'où sort le "file" dans "FROM ' . PREFIX . 'download file"
EDIT 2 :
laissez tomber l'edit 1 je viens de comprendre le file (pourquoi, comment et à quoi il sert).
Cordialement, janus57
Édité par janus57 Le 05/01/2015 à 00h18
Navalex Membre non connecté
Booster Roquette
-
Booster Roquette
- Voir le profil du membre Navalex
- Inscrit le : 12/02/2012
- Site internet
- Groupes :

Et bien je test demain car je n'est pas d'ordinateur sous la main.
ElenWii Membre non connecté
-
Administrateur
- Voir le profil du membre ElenWii
- Inscrit le : 14/08/2009
- Site internet
- Groupes :
-
Equipe Graphique
janus57 :
Par contre si on pouvais m'expliquer d'où sort le "file" dans "FROM ' . PREFIX . 'download file"
Si je ne me trompe pas c'est pour la jointure des deux tables. Si les tables possèdent un élément avec la même dénomination cela permet de les distinguer.
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
ElenWii :janus57 :Par contre si on pouvais m'expliquer d'où sort le "file" dans "FROM ' . PREFIX . 'download file"
Si je ne me trompe pas c'est pour la jointure des deux tables. Si les tables possèdent un élément avec la même dénomination cela permet de les distinguer.
Bonjour,
en faite j'ai trouvé l'explication entre temps, c'est tout simplement le surnom de la table, c'est pour ça que à la fin de la requ^te on peu faire : user.user_id = file.user_id
ce qui correspond en réalité à : DB_TABLE_MEMBER.user_id = PREFIX_download.user_id
Cf : http://sqlpro.developpez.com/cours/sqlaz/jointures/ II-A. Premiers essais de jointure => Exemple 4 -> Exemple 7
Cordialement, janus57
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie