Bonjour
Commeje ne sais pas manier le php, je propose juste l'idee, a d'autres de l'appliquer si la juge interessante :D
Rajouter un lien dans le menu de gauche "Derniers commentaires", affichant une page comportant les X derniers commentaires fait dans la gallerie serait pas mal ! (avec pour chaque commentaires un liens vers la photo correspondante)
A bientot...
Hors ligne
ok, bonne idée de MOD. Ce ne sera pas une fonctionnalité de la version de base, mais je ferai un MOD pour cela.
Hors ligne
Hello,
J'ai commencé à faire un script pour afficher les dix derniers commentaires, pour récuprer les récuprer c'est bon, par contre je voudrait afficher la miniature à côté et je bloque, bon je sias j'ai fait le plus simple mais pour niveau (0) c'était déjà pas évidentalors voilà ce que j'ai fait :
require("conf/confg.php"); mysql_select_db ("phpwebgallery_comments"); //selection total des données $req_limit = mysql_query("Select * phpwebgallery_comments"); { // maintenant on va se servir du résultat pour limiter la sortie $limite_page = '10'; //choisissez le nombre de messages par pages $nombre_page = $resultat / $limite_page; // ici on divise le total par le nombre de messages que vous avez choisi $nombre_total = ceil($nombre_page); // on arondi le nombre de page pour ne pas avoir de virgules, ici au chiffre supérieur $nombre = $nombre_total - 1; // on enlève 1 au nombre de pages, car la 1ere page est celle affiché ne fait pas partie des pages suivantes } if(isset($numero_page) || $numero_page != '0' ) // si la variable numero de page a une valeur ou est différente de 0 { $limite_mysql = $limite_page * $numero_page; // on multiplie votre limite par le numero de la page passée par l'url } else // pas de variable numero_page { $limite_mysql = '0'; // la limite est de 0 } $requete = "select * from phpwebgallery_comments ORDER BY date desc Limit $limite_mysql , $limite_page"; $envoi = mysql_query($requete); while($tableau = mysql_fetch_array($envoi)) { $comment= $tableau ['content']; $Nom= $tableau['author']; $idincomment= $tableau['image_id']; // affichage des données print " <table width='500' border='1' align='center' color='000000' bordercolor='#cd5c5c'> <tr> <td align='left' valign='middle'><b>$Nom <br></b></td> </tr> <tr> <td align='left' valign='middle' bgcolor='#FFFFCC' border='1'><font color='#cd5c5c'>$comment </font></td> </tr> </table>";
bon si quelqu'un à 5 minutes pour m'aiguiller un peu, merci :)
Arnaud
Hors ligne
je vais te donner le code de la version 1.3 qui gère cela très bien :
<?php /*************************************************************************** * comments.php * * ------------------- * * application : PhpWebGallery 1.3 * * author : Pierrick LE GALL <pierrick@z0rglub.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; * * * ***************************************************************************/ include_once( './include/isadmin.inc.php' ); //------------------------------------------------------------------- functions function display_pictures( $mysql_result, $maxtime, $validation_box = false ) { global $vtp,$sub,$lang,$conf, $array_cat_directories,$array_cat_site_id,$array_cat_names; while ( $row = mysql_fetch_array( $mysql_result ) ) { $vtp->addSession( $sub, 'picture' ); // 2. for each picture, getting informations for displaying thumbnail and // link to the full size picture $query = 'SELECT name,file,cat_id,tn_ext'; $query.= ' FROM '.PREFIX_TABLE.'images'; $query.= ' WHERE id = '.$row['image_id']; $query.= ';'; $subresult = mysql_query( $query ); $subrow = mysql_fetch_array( $subresult ); if ( $array_cat_directories[$subrow['cat_id']] == '' ) { $cat_result = get_cat_info( $subrow['cat_id'] ); $array_cat_directories[$subrow['cat_id']] = $cat_result['dir']; $array_cat_site_id[$subrow['cat_id']] = $cat_result['site_id']; $array_cat_names[$subrow['cat_id']] = get_cat_display_name( $cat_result['name'], ' > ', '' ); } $cat_directory = $array_cat_directories[$row['cat_id']]; $file = get_filename_wo_extension( $subrow['file'] ); // name of the picture $name = $array_cat_names[$subrow['cat_id']].' > '; if ( $subrow['name'] != '' ) { $name.= $subrow['name']; } else { $name.= str_replace( '_', ' ', $file ); } $name.= ' [ '.$subrow['file'].' ]'; $vtp->setVar( $sub, 'picture.title', $name ); // source of the thumbnail picture $src = ''; if ( $array_cat_site_id[$subrow['cat_id']] == 1 ) { $src.= '.'; } $src.= $array_cat_directories[$subrow['cat_id']]; $src.= 'thumbnail/'.$conf['prefix_thumbnail']; $src.= $file.'.'.$subrow['tn_ext']; $vtp->setVar( $sub, 'picture.thumb_src', $src ); // link to the full size picture $url = '../picture.php?cat='.$subrow['cat_id']; $url.= '&image_id='.$row['image_id']; $vtp->setVar( $sub, 'picture.thumb_url', add_session_id( $url ) ); // 3. for each picture, retrieving all comments $query = 'SELECT id,date,author,content'; $query.= ' FROM '.PREFIX_TABLE.'comments'; $query.= ' WHERE image_id = '.$row['image_id']; $query.= ' AND date > '.$maxtime; $query.= ' ORDER BY date DESC'; $query.= ';'; $subresult = mysql_query( $query ); while ( $subrow = mysql_fetch_array( $subresult ) ) { $vtp->addSession( $sub, 'comment' ); $vtp->setVar( $sub, 'comment.author', $subrow['author'] ); $displayed_date = $lang['day'][date( "w", $subrow['date'] )]; $displayed_date.= date( " j ", $subrow['date'] ); $displayed_date.= $lang['month'][date( "n", $subrow['date'] )]; $displayed_date.= date( " Y G:i", $subrow['date'] ); $vtp->setVar( $sub, 'comment.date', $displayed_date ); $vtp->setVar( $sub, 'comment.content', nl2br( $subrow['content'] ) ); $vtp->addSession( $sub, 'delete' ); $url = './admin.php?page=comments'; if ( isset( $_GET['last_days'] ) ) $url.= '&last_days='.MAX_DAYS; if ( isset( $_GET['show_unvalidated'] ) ) $url.= '&show_unvalidated=true'; $url.= '&del='.$subrow['id']; $vtp->setVar( $sub, 'delete.link', add_session_id( $url ) ); $vtp->closeSession( $sub, 'delete' ); // if the comment has to be validated, we display a checkbox if ( $validation_box ) { $vtp->addSession( $sub, 'validation' ); $vtp->setVar( $sub, 'validation.id', $subrow['id'] ); $vtp->closeSession( $sub, 'validation' ); } $vtp->closeSession( $sub, 'comment' ); } $vtp->closeSession( $sub, 'picture' ); } } //------------------------------------------------------------ comment deletion if ( isset( $_GET['del'] ) and is_numeric( $_GET['del'] ) ) { $query = 'DELETE FROM '.PREFIX_TABLE.'comments'; $query.= ' WHERE id = '.$_GET['del']; $query.= ';'; mysql_query( $query ); } //--------------------------------------------------------- comments validation if ( isset( $_POST['submit'] ) ) { $query = 'SELECT id'; $query.= ' FROM '.PREFIX_TABLE.'comments'; $query.= " WHERE validated = 'false'"; $query.= ';'; $result = mysql_query( $query ); while ( $row = mysql_fetch_array( $result ) ) { if ( $_POST['validate-'.$row['id']] == 'true' ) { $query = 'UPDATE '.PREFIX_TABLE.'comments'; $query.= " SET validated = 'true'"; $query.= ' WHERE id = '.$row['id']; $query.= ';'; mysql_query( $query ); } } } //----------------------------------------------------- template initialization $sub = $vtp->Open( '../template/'.$user['template'].'/admin/comments.vtp' ); $tpl = array( 'stats_last_days','delete','close','submit','open' ); templatize_array( $tpl, 'lang', $sub ); $vtp->setGlobalVar( $sub, 'user_template', $user['template'] ); //--------------------------------------------------- number of days to display if ( isset( $_GET['last_days'] ) ) define( MAX_DAYS, $_GET['last_days'] ); else define( MAX_DAYS, 0 ); //----------------------------------------- non specific section initialization $array_cat_directories = array(); $array_cat_names = array(); $array_cat_site_id = array(); //------------------------------------------------------- last comments display $vtp->addSession( $sub, 'section' ); $vtp->setVar( $sub, 'section.title', $lang['comments_last_title'] ); $vtp->addSession( $sub, 'last_days' ); foreach ( $conf['last_days'] as $option ) { $vtp->addSession( $sub, 'last_day_option' ); $vtp->setVar( $sub, 'last_day_option.option', $option ); $url = './admin.php?page=comments'; $url.= '&last_days='.($option - 1); $vtp->setVar( $sub, 'last_day_option.link', add_session_id( $url ) ); if ( $option == MAX_DAYS + 1 ) { $vtp->setVar( $sub, 'last_day_option.style', 'font-weight:bold;'); } $vtp->closeSession( $sub, 'last_day_option' ); } $vtp->closeSession( $sub, 'last_days' ); if ( isset( $_GET['last_days'] ) ) { $vtp->addSession( $sub, 'close' ); $url = './admin.php?page=comments'; if ( isset( $_GET['show_unvalidated'] ) ) { $url.= '&show_unvalidated='.$_GET['show_unvalidated']; } $vtp->setVar( $sub, 'close.url', add_session_id( $url ) ); $vtp->closeSession( $sub, 'close' ); // 1. retrieving picture ids which have comments recently added $date = date( 'Y-m-d', time() - ( MAX_DAYS*24*60*60 ) ); list($year,$month,$day) = explode( '-', $date); $maxtime = mktime( 0,0,0,$month,$day,$year ); $query = 'SELECT DISTINCT(image_id) as image_id'; $query.= ' FROM '.PREFIX_TABLE.'comments'; $query.= ', '.PREFIX_TABLE.'images as images'; $query.= ', '.PREFIX_TABLE.'categories'; $query.= ' WHERE image_id = images.id'; $query.= ' AND cat_id = images.cat_id'; $query.= ' AND date > '.$maxtime; $query.= ' ORDER BY cat_id ASC,date_available DESC'; $query.= ';'; $result = mysql_query( $query ); display_pictures( $result, $maxtime ); } $vtp->closeSession( $sub, 'section' ); //----------------------------------------------------------- sending html code $vtp->Parse( $handle, 'sub', $sub ); ?>
et le fichier de template associé :
<style> .commentsAuthor,.commentsTitle,.commentsInfos,.commentsContent,.commentsNavigationBar { color:{#text_color}; font-family:arial,sans-Serif; font-size:12px; } .commentsTitle,.commentsAuthor { text-align:center; font-weight:bold; } .commentsInfos { text-align:right; margin:3px 3px 3px 10px; font-size:11px; } .commentsContent { margin:10px; } .commentsTitle { margin-top:15px; } .commentsAuthor { margin:5px; } .commentsNavigationBar { margin:10px; } .tableComment { width:100%; border:2px solid #006699; margin:10px; } .cellAuthor { border-right:1px solid #006699; width:100px; } .cellInfo { border-bottom:1px solid #006699; } .imgLink { border:1px solid black; } </style> <!--VTP_section--> <table style="width:100%;"> <tr> <th> {#title} <!--VTP_last_days--> [ <!--VTP_last_day_option--> <a href="{#link}" style="{#style}">{#option}</a>{#separation} <!--/VTP_last_day_option--> {#stats_last_days} ] <!--/VTP_last_days--> <!--VTP_open--> [ <a href="{#url}">{#open}</a> ] <!--/VTP_open--> <!--VTP_close--> [ <a href="{#url}">{#close}</a> ] <!--/VTP_close--> </th> </tr> </table> <!--VTP_start_form--> <form action="{#action}" method="post"> <!--/VTP_start_form--> <!--VTP_picture--> <div style="border:2px solid #D3DCE3;margin:2px;"> <table style="width:100%;"> <tr> <td valign="top" width="1px"> <!-- the thumbnail of the picture, linked to the full size page --> <a href="{#thumb_url}" title="{#thumb_title}"> <img src="{#thumb_src}" class="imgLink" alt="{#thumb_alt}"/> </a> </td> <td> <div style="font-weight:bold;">{#title}</div> <!--VTP_comment--> <table style="width:100%;"> <tr> <td> <table class="tableComment"> <tr> <td rowspan="2" valign="top" class="cellAuthor"> <div class="commentsAuthor">{#author}</div> </td> <td class="cellInfo"> <div class="commentsInfos"> {#date}<!--VTP_delete--><a href="{#link}" title="{#comments_del}"><img src="../template/{#user_template}/admin/images/delete.gif" style="border:none;ma rgin-left:5px;" alt="[{#delete}]"/></a><!--/VTP_delete--> </div> </td> </tr> <tr> <td> <div class="commentsContent">{#content}</div> </td> </tr> </table> </td> <!--VTP_validation--> <td style="width:1px;"> <input type="checkbox" name="validate-{#id}" value="true" /> </td> <!--/VTP_validation--> </tr> </table> <!--/VTP_comment--> </td> </tr> </table> </div> <!--/VTP_picture--> <!--VTP_submit--> <div style="text-align:center;margin:10px;"> <input type="submit" name="submit" value="{#submit}" /> </div> <!--/VTP_submit--> <!--VTP_end_form--> </form> <!--/VTP_end_form--> <!--/VTP_section-->
Hors ligne
mais il manque le fichier isadmin.inc.php non ?
Ouinnnn il me met
Fatal error: Call to a member function on a non-object in /home/yousuxx/www/zamis/admin/comment.php on line 139
je suppose qu'il trouve pas la template, mais je c pas ou il faut la sauvegarder...
Merci !
Yep c ca merci :)
Mais j'obtient une autre erreur :(
Fatal error: Call to undefined function: templatize_array() in /home/yousuxx/www/zamis/admin/comment.php on line 142
g chercher sur google la fonction templatize_array sans resultat :(
Hors ligne
désolé, j'avais zappé ton message hier matin, j'avais eu besoin de régler un pb sur mon ordi, ma partition / était à 100%, il m'a fallu déplacer mon /home...
en ultra exclusivité pour toi la release 1.3 en cours de dev : http://phpwebgallery.net/download/phpwebga...24_01h00.tar.gz
Tu y trouveras ce dont tu as besoin, mais n'essaies pas de l'installer pour de vrai, install.php n'a pas été mis à jour du tout (c'est le dernier truc que je fais !)
Hors ligne
jmy connais pas mais je crois que t'as oublier ces deux lignes au debut de quelques fichiers :
include("vtemplate.class.php"); // Inclusion du fichier $vtp = new VTemplate; // Déclaration de l'object
En tout les cas ca ne marche pas chez moi sans ces deux lignes
Mais du coup je me retrouve avec cette erreur quand j'ouvre comments.php?id=xxxx
Warning: Invalid argument supplied for foreach() in c:\program files\easyphp\www\zamis2\admin\comments.php on line 156
Erreur de traitement n° TTT11:
La zone Array est introuvable.Vérifiez la syntaxe de cette zone.
Pour plus d'informations, consultez la doc en ligne
La ligne correspondante est la suivante :
foreach ( $conf['last_days'] as $option ) {
De plus, j'arrive vraiment pas a faire marcher la 1.3 (j'ai remplacer la majorité des fichiers de la 1.2 par la 1.3 en conservant les fichiers de configuration (mysql.....)) je pense que c'est comme ca qu'il faut faire
Mais moi je veux juste pouvoir afficher les derniers commentaires :oops: :cry:
Merci !
Hors ligne
la structure de la base (que tu n'a pas a énormément changé entre la 1.3 et la 1.2, normal que ça ne marche pas). Tu peux voir cette structure dans ./admin/phpwebgallery_structure.sql.
Adapter l'affichage des commentaires à la 1.2 me prendrait trop de temps alors que je suis en train de travailler sur la 1.3. Je te conseille de prendre ton mal en patience pour le moment et d'attendre la sortie de la 1.3
Hors ligne
Bien moi j'ai avancé mais vraiment c'est pas tout à fait au point et certainement pas bien écrit, les images miniature des sous catégories ne s'affiche pas il me manque un "if" mais j'ai pas réussis, sinon pour les images à la catégories racine c'est bon.
C'est pas terrible mais je peut voir tout les commentaires dont les derniers ce qui est pratique pour l'admin qui peut suivre ce qui se passe en attendant la version 1.3. Pour moi qui suis complétement nul en PHP j'ai fait de mon mieux :-?
Pour ceux qui veulent voir ce que ça donne
Si vous désirez le "script" n'hésitez pas à m'envoyer un mail.
Arnaud
Hors ligne