- Home
- Categorie
- Coding e Sistemistica
- PHP
- Dividere news
-
Dividere news
Ciao a tutti...ho la pagina delle news che estrae tutte le news dal database...
vorrei farle visualizzare così:Dicembre
2-12-2007: Nuova gara a Ragusa
Novembre
9-11-2007: Finalmente Online
1-11-2007: Prova HTML
Ottobre
28-10-2007: provaCome faccio??
-
Ciao talkoman,
sei stato un po' avaro di spiegazioni... pertanto vado solo con un po' di teoria.Devi fare una query e selezionare tutte le news ordinate per data che poi listerai con un classico ciclo foreach in cui fai stampare data: titolo news. Per far comparire il mese a lettere, che mi pare di capire sia il tuo problema, potresti mettere un controllo*** if*** sul mese restituito dalla data nel ciclo foreach che supponiamo di memorizzare in $mese. Per ogni decremento di un'unità su $mese ti fai stampare a monitor il mese a lettere tipo che avrai precedentemente scritto in una array del tipo $mese_arr=array('gennaio','febbraio',...).
Supponendo ad esempio che sia marzo, 3° mese, scriverai $mese_arr[($mese-1)] che ti restituirà appunto 'marzo' perché gli array partono da 0. Ovviamente devi fare attenzione a resettare su 0 il valore 11.Detta così può sembrare complicata ma in realtà è banale. Basta fare qualche prova!
-
nn c'ho capito niente....:)
-
La tua firma dice => soluzioni per il tuo sito web ehehehe
Comunque vuoi un esempio? però con un esempio non impari molto
-
si meglio l'esempio....
soluzioni per il tuo sito web
sto imparando...-
-
Ciao Talkoman,
se hai gia' ilrecordset pronto e devi solo inserire date e titoli credo basti fare cosi'<?php echo $row_getArticles['title']; ?>: <?php echo $row_getArticles['theDate']; ?> <a href="news_detail.php?article_id=<?php echo $row_getArticles['article_id']; ?>" class="floatRight">Leggi tutto</a></p> <p> <?php } ?> </p> <?php } while ($row_getArticles = mysql_fetch_assoc($getArticles)); ?>
Dove: getArticles e' il nome del recordset, title e theDate sono titolo e data della news...
spero che ti funzioni, a me cosi' va perfettamente... facci sapere!;)
-
non manca un pezzo? così in teoria non va... chiudi due volte la graffa } e non la apri mai...
-
Hai ragione Skyline, avevo dimenticato un pezzo,
Il codice completo e' questo:<?php do { ?> <h2><?php echo $row_getArticles['title']; ?></h2> <p><?php echo $row_getArticles['theDate']; ?>: <?php $extract = getFirst($row_getArticles['article']); echo $extract[0]; if ($extract[1]) { ?> <a href="news_detail.php?article_id=<?php echo $row_getArticles['article_id']; ?>" class="floatRight">Leggi tutto</a></p> <p> </p> <p> <?php } ?> </p> <?php } while ($row_getArticles = mysql_fetch_assoc($getArticles)); ?>
e poi alla fine di tutto il codice:
<?php mysql_free_result($getArticles); function getFirst($text, $number=2) { // regular expression to find typical sentence endings $pattern = '/([.?!]["\']?)\s/'; // use regex to insert break indicator $text = preg_replace($pattern, '$1bRE@kH3re', $text); // use break indicator to create array of sentences $sentences = explode('bRE@kH3re', $text); // check relative length of array and requested number $howMany = count($sentences); $number = $howMany >= $number ? $number : $howMany; // rebuild extract and return as single string $remainder = array_splice($sentences, $number); $result = array(); $result[0] = implode(' ', $sentences); $result[1] = empty($remainder) ? false : true; return $result; } ?>
che e' la funzione che estrae i primi due paragrafi della news e li fa vedere nella pagine di "riassunto" in cui si sceglie quale news visualizzare...
Scusate!
-
cry::?
NON CAPISCO!!!!!!!!!HELP!!!!
-
allora, partiamo dal principio: che cosa hai fatto fino ad ora?
hai detto che hai la pagina delle news che estrae tutte le news dal database giusto?magari posta il codice cosi' capiamo da che punto partire...
oppure posta la struttura della tabella...
-
eccolo...
[PHP]<?php
$news=@mysql_query('SELECT * FROM news ORDER BY data DESC');
if (!$news){
exit('<p>Errore, impossibile recuperare le news dal database!<br/>'.
'Errore: ' . mysql_error() . '</p>');
}
while($notice=mysql_fetch_array($news)){
$id=$notice['id_news'];
$titolo= htmlspecialchars($notice['titolo']);
$data=$notice['data'];
//$mese=date('m',$data);
$array = explode("-", $data);
//in stile DD/MM/YYYY
$data_it = $array[2]."-".$array[1]."-".$array[0];
$mese= $array[1];
if($mese==1)
$mese="Gennaio";
elseif($mese==2)
$mese="Febbraio";
elseif($mese==3)
$mese="Marzo";
elseif($mese==4)
$mese="Aprile";
elseif($mese==5)
$mese="Maggio";
elseif($mese==6)
$mese="Giugno";
elseif($mese==7)
$mese="Luglio";
elseif($mese==8)
$mese="Agosto";
elseif($mese==9)
$mese="Settembre";
elseif($mese==10)
$mese="Ottobre";
elseif($mese==11)
$mese="Novembre";
elseif($mese==12)
$mese="Dicembre";
echo "<tr>
<td width=100 align="center">$data_it $mese</td><td align="left"><a href='legginews.php?id=$id'>$titolo</a></td>" .
"</tr><tr>
<td colspan=2><div style="CLEAR: left; BACKGROUND: url(images/struttura/dott.gif) repeat-x left center; HEIGHT: 25px;"></div></td>";
}
?>[/PHP]
-
allora vado un po' di fretta, quindi ti posto qui il codice, prova a fare un po' di prove.
Considera che questo codice e' fatto per una tabella che ha le seguenti colonne:
article_id - id della news
title - titolo news
article - testo della news
updated - data ultima modifica
created - data creazione
image - immagine allegata alla news (del tipo: nome_immagine.jpg)
caption - "alt" da associare all'immaginequindi dovrai fare le dovute sostituzioni...
allora partiamo.
questo va prima della doctype declaration:
[PHP]
//connessione al database
<?php$hostname_nomeQuery = "...";
$database_nomeQuery = "...";
$username_nomeQuery = "...";
$password_nomeQuery = "...";
$nomeQuery = mysql_pconnect($hostname_nomeQuery, $username_nomeQuery, $password_nomeQuery) or trigger_error(mysql_error(),E_USER_ERROR);
?><?php
$maxRows_getArticles = 10;
$pageNum_getArticles = 0;
if (isset($_GET['pageNum_getArticles'])) {
$pageNum_getArticles = $_GET['pageNum_getArticles'];
}
$startRow_getArticles = $pageNum_getArticles * $maxRows_getArticles;mysql_select_db($database_nomeQuery, $nomeQuery);
$query_getArticles = "SELECT news.article_id, news.title, news.article, DATE_FORMAT(news.created, '%e.%c.%Y') AS theDate FROM news ORDER BY news.created DESC";
$query_limit_getArticles = sprintf("%s LIMIT %d, %d", $query_getArticles, $startRow_getArticles, $maxRows_getArticles);
$getArticles = mysql_query($query_limit_getArticles, $nomeQuery) or die(mysql_error());
$row_getArticles = mysql_fetch_assoc($getArticles);if (isset($_GET['totalRows_getArticles'])) {
$totalRows_getArticles = $_GET['totalRows_getArticles'];
} else {
$all_getArticles = mysql_query($query_getArticles);
$totalRows_getArticles = mysql_num_rows($all_getArticles);
}
$totalPages_getArticles = ceil($totalRows_getArticles/$maxRows_getArticles)-1;$queryString_getArticles = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_getArticles") == false &&
stristr($param, "totalRows_getArticles") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_getArticles = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_getArticles = sprintf("&totalRows_getArticles=%d%s", $totalRows_getArticles, $queryString_getArticles);
?>
[/PHP]poi, nel punto della pagina dove vuoi vedere le news in elenco:
[PHP]
<?php do { ?>
<h2><?php echo $row_getArticles['title']; ?></h2>
<p><strong><?php echo $row_getArticles['theDate']; ?>:</strong> <?php $extract = getFirst($row_getArticles['article']); echo $extract[0]; if ($extract[1]) { ?> <a href="news_detail.php?article_id=<?php echo $row_getArticles['article_id']; ?>" class="floatRight">Leggi tutto</a></p>
<p> </p>
<p>
<?php } ?>
</p>
<?php } while ($row_getArticles = mysql_fetch_assoc($getArticles)); ?>
<table border="0" width="50%" align="center">
<tr>
<td width="23%" align="center"><?php if ($pageNum_getArticles > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_getArticles=%d%s", $currentPage, 0, $queryString_getArticles); ?>">Primo</a>
<?php } // Show if not first page ?>
</td>
<td width="31%" align="center"><?php if ($pageNum_getArticles > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_getArticles=%d%s", $currentPage, max(0, $pageNum_getArticles - 1), $queryString_getArticles); ?>">Precedente</a>
<?php } // Show if not first page ?>
</td>
<td width="23%" align="center"><?php if ($pageNum_getArticles < $totalPages_getArticles) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_getArticles=%d%s", $currentPage, min($totalPages_getArticles, $pageNum_getArticles + 1), $queryString_getArticles); ?>">Successivo</a>
<?php } // Show if not last page ?>
</td>
<td width="23%" align="center"><?php if ($pageNum_getArticles < $totalPages_getArticles) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_getArticles=%d%s", $currentPage, $totalPages_getArticles, $queryString_getArticles); ?>">Ultimo</a>
<?php } // Show if not last page ?>
</td>
</tr>
</table>
[/PHP]infine, dopo il tag di chiusura dell'html:
[PHP]
<?php
mysql_free_result($getArticles);function getFirst($text, $number=2) {
// regular expression to find typical sentence endings
$pattern = '/([.?!]["']?)\s/';
// use regex to insert break indicator
$text = preg_replace($pattern, '$1bRE@kH3re', $text);
// use break indicator to create array of sentences
$sentences = explode('bRE@kH3re', $text);
// check relative length of array and requested number
$howMany = count($sentences);
$number = $howMany >= $number ? $number : $howMany;
// rebuild extract and return as single string
$remainder = array_splice($sentences, $number);
$result = array();
$result[0] = implode(' ', $sentences);
$result[1] = empty($remainder) ? false : true;
return $result;
}
?>
[/PHP]spero che ti funzioni,
fammi sapere