Je bloque sur l'affichage de commentaires qui doivent s'afficher sous un lien.
Je me sers d'un script déjà existant, mais qui ne proposait pas l'option commentaires. Je tiens à préciser que pour le script utilisé, il n'y a plus d'aide. J'ai donc modifié le script. Les commentaires s'enregistrent bien dans la base de données. Mais lors de l'affichage, il n'y a que le dernier commentaire, pas les précédents. Mon souci de compréhension est dû au fait que le code est séparé de l'affichage, géré par un template.
Voici le script en fonction sur mon site :
http://www.flipper-fr.org/aquiflip/cart ... eec7f0c5b0
Voici une partie du code php pour l'affichage du détail du lien. J'ai rajouté la boucle while, la fonction JOIN et les lignes "USER_COMMENT" => $list["comment"], etc... car il y a 2 tables, celle des liens, et celle des commentaires.
function showMore($idx, &$title, $status = 0)
{
global $tpl, $start_script, $start_script_t, $update_link, $add_comment;
global $config, $custom;
$cont = "";
$result = mysql_query("SELECT * FROM my_links LEFT JOIN my_comments ON my_links.idx = my_comments.num_comment WHERE my_links.idx = '$idx' AND my_links.status=$status;");
if (mysql_numrows($result))
{
while($list = mysql_fetch_array($result)) {
$cat = display_category($list["cat"]);
$idx = $list["idx"];
$tpl->set_var( array(
"LINK_TITLE" => $list["title"],
"LINK_MESSAGE" => nl2br($list["message"]),
"LINK_MESSAGE_BR" => preg_replace("/\n/", "<br/>", $list["message"]),
"LINK_ADDED" => $list["date"],
"LINK_UPDATED" => $list["updated"],
"LINK_LINK" => $list["link"],
"LINK_HITS" => $list["hits"],
"LINK_COMMENTAIRE" => nl2br($list["custom_commentaire"]),
"LINK_CATEGORY" => $cat,
"LINK_GO" => $start_script_t."count=$idx",
"LINK_MORE" => $start_script_t."more=$idx",
"LINK_IDX" => $list["idx"],
"LINK_EDIT" => "$update_link&link=$idx",
"USER_COMMENT" => $list["comment"],
"USER_USER" => $list["user"],
"USER_DATE" => $list["date"]
));
# now process custom rows
reset($custom);
while (list($k,$v) = each($custom)) {
$ku = strtoupper($k);
$dt = $list[$k];
if ($dt != "") {
# set data
$tpl->set_var ($ku, filterOut($v, $dt));
} else {
# delete conditional block
$tpl->set_block ("moredetails", "IFDEF_".$ku, "deleteme");
# FIXME: does it work if there's more than one condition ?
}
}
}
# parse
$tpl->set_var("deleteme", "");
$tpl->set_var("CATEGORY_TITLE", "");
$tpl->parse("Sheet", "moredetails");
$cont .= $tpl->subst("Sheet");
$title .= " ".$list["title"];
} else {
$cont .= Message( "nothing_to_show" );
}
$cont = TextToLink($cont);
# force a reload if there's a next call
$tpl->set_var ("moredetails", "");
return $cont;
}
Dans le template, j'ai rajouté les lignes <BEGIN...> et <END...>Extrait :
<!-- BEGIN user -->
<tr>
<td>Date: {USER_DATE}</td>
<td>Nom: {USER_USER}</td>
<td>Commentaire: {USER_COMMENT}</td>
</tr>
<!-- END user -->
Malgré ma lecture de beaucoup de pages sur internet, et notamment de cet excellent tutorial : https://phpcodeur.net/articles/php/templates je bloque sur le code à ajouter à mon fichier php. Il faut certainement rajouter des "assign_block_vars" mais je m'y prends mal et ça ne marche pas. Quelqu'un pourrait me donner une solution de code ?
Merci par avance.