Salve, ho creato un codice per mostrare dei post, ma vorrei che nella lista dei titoli potessi vedere solo un'anteprima di qualche parola senza che le parole stesse vengano tagliate. Per darvi un iea come in un blog quando si ha un'articolo e se lo vuoi leggere tutto in fondo ce leggi altro o continua a leggere, vedi solo una parte dell'articolo un'anteprima. Nel codice seguente tutto funziona ma la parte che posto è relativa all'anteprima dei post ma mi mostra i post con tutto il testo e non l'anteprima. Mi piacerebbe ricevere aiuto per capire cosa sbaglio gia che sto imparando queste cose a scuola.
Grazie mille per l'aiuto.
Ecco il codice:
Grazie mille per l'aiuto.
Ecco il codice:
PHP:
function showAllTitles(Database $db){
$out = "<div class='articles_blog'>";
$out .= "<h1>ARTICLES</h1>";
$out .= "<ul id='articles_bl'>";
//Get all Articles from db and shows all titles
$allArticle = getAllArticles($db);
foreach ($allArticle as $row) {
//Must take all rows and output list -> titles??
$id = $row->get("art_id");
$date = $row->get("art_date");
$article = $row->get("art_title");
$txt = $row->get("art_articles");
$date = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $date);
$href = "index.php?page=blog&show-article=$article";
$out .= "<li>";
$out .= "<a href='$href'>$article</a>  ";
$out .= "<em>$date</em>";
$out .= "<p class='prev_art'>";
$out .= preview($txt, 10, $href);
//$out .= substr($txt, 0, 30);
/*$preview = new Preview();
$preview->makePreview("$article");
$out .= "$preview";*/
$out .= "</p>";
$out .= "<a href='index.php?page=blog&show-article=$article'>Read more</a>";
$out .= "</li>";
}
$out .= "</ul>";
$out .= "</div>";
$out .= "</section>";
return $out;
}
//Get from DB all Articles
function getAllArticles(Database $db) {
$sql = "SELECT * FROM articles ORDER BY art_date DESC";
$db->query($sql);
//$sql = "SELECT art_title FROM articles";
$table = $db->getData($sql);
return $table;
}
function showArticle(Database $db, $whichArticle) {
$data = getArticle($db, $whichArticle);
$title = $data->get("art_title");
$author = $data->get("art_author");
$article = $data->get("art_articles");
$out = "<div class='article_blg'>";
$out .= "<h1>Title:</h1><p>$title</p>";
$out .= "<h2>Author:</h2><p>$author</p>";
$out .= "<h3>Article:</h3><p>$article<br></p>";
$out .= "</div>";
return $out;
}
function getArticle(Database $db, $articles) {
$fname = $db->escapeString($articles);
$sql = "SELECT art_title, art_articles, art_author FROM articles WHERE art_title = '$fname'";
$db->query($sql);
$data = $db->getData($sql);
$row = $data->getAt(0);
return $row;
}
function preview($txt, $long, $final) {
return (count($words = explode(' ', $txt)) > $long) ? implode(' ', array_slice($words, 0, $long)) . $final : $txt; //questo dovrebbe farmi l'anteprima??
}