@Skyline said:
erica... non c'entra nulla
ok scusate pensavo potesse servire a qualcosa....
comunque vuol solo dire di metterlo all'inizio del file sopra tutto, come riga 1 per capirci...
ciao!
@Skyline said:
erica... non c'entra nulla
ok scusate pensavo potesse servire a qualcosa....
comunque vuol solo dire di metterlo all'inizio del file sopra tutto, come riga 1 per capirci...
ciao!
pero' scusate, la prima parte del codice non deve andare prima del doctype declaration?
o almeno io l'ho sempre messa li'...
magari fai una prova perche' non so se e' una regola o non cambia nulla.
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'immagine
quindi 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
@Skyline said:
erica è un po una casinista nel ricopiare se il problema è quello mi ammazzo, scusate l'OT
no, giurin giuretto... erano solo errori a ricopiare, dopo tutte le prove fatto volevo postarvi un riassunto delle query e dei risultati per cercare di capire come si poteva fare....
e per puro caso ho provato la combinazione giusta!
pero' ancora non l'ho capita perche' ordina in decrescente e prende il minore, bho?!? mi sembra strano ma funziona!!!!
SELECT product.code
FROM product
WHERE product.code < codegetprev
ORDER BY product.code DESC
grazie mille per la vostra pazienza!
appena sistemo tutto il codice vi mando il link al sito cosi' vedete il risultato dei nostri sforzi!
Grazie ancora!
cavolo xx:x
EUREKA!!!!!!!!
SELECT product.code
FROM product
WHERE product.code < codegetprev
ORDER BY product.code DESC
G-R-A-Z-I-E!!!!!!!!!!!!!!!!!!!
ok, pero' e' strano che non funzioni con il trucchetto di ordinarli decrescenti...
9
8
5 da questo voglio il >
2 dovrebbe essere questo!
1
@Skyline said:
dopo un po che li mandi si aumentano da soli a 350 ehehhe
bello
vi do' una bella news OT intanto che risolviamo (si spera!) questo rompicapo!
ho visto ora che i messaggi privati memorizzabili sono passati da 3 a 350!
si hai ragione, l'avevo fatto con < ho solo scritto male qui!
il maggiore > funziona, incrementa di uno soltanto
il minore < no, passa al numero piu' piccolo se ordino in modo crescente, e passa al numero piu' grande se ordino decrescente...
ma sono un'infinita' di record... non si rallenta tutto?
(a parte che non saprei come farlo...)
quello che non capisco e' perche' con il successivo funziona, mentre con il precedente non ne vuole sapere!
e per il successivo la query e' semplicemente questa:
SELECT product.code
FROM product
WHERE product.code > codegetnext
ORDER BY product.code
ho provato anche con:
SELECT product.code
FROM product
GROUP BY product.code HAVING product.code > codegetprev
LIMIT 1
ma il risultato e' lo stesso....
nulla da fare, e' proprio un rompicapo!
salta sempre all'id maggiore esistente... ma possibile?
azz...
funziona si pero' mi passa sempre al primo (che in questo caso e' l'ultimo!)
che sclero....
Sentite, stavo provando, su consiglio di Sups, a mettere LIMIT 1 in modo che "scenda solo di 1" ma mi dice che la query e' scritta male, dove sbaglio?:
SELECT product.code
FROM product
WHERE product.code > codegetprev LIMIT 1
ORDER BY product.code DESC
ho provato anche a mettere -- al posto di < per cercare di decrementarlo di uno ma da lo stesso errore... bho?!
si hai ragione teoricamente e' una domanda idiota pero' il fatto e' che il successivo mi funziona perfettamente (fino a che arriva alla fine s'intende) mentre il precedente no.
E' strano, a volte va ma spesso e volentieri salta di botto al primo id mentre ce ne sarebbero molti altri in mezzo...
sapete mica come mai?
ahhh ok scusa sono fusa!
e per quello precedente?
scusa skyline mi riposti il link perfavore? me lo trasforma in link di wikigt....
grazie mille
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...
un altro modo che mi viene in mente per fare la stessa cosa, che pero' non so come realizzare perche' probabilmente il codice da usare e' lo stesso e' quello di fare una paginazione dei risultati che mi faccia vedere un solo risultato per pagina.
Secondo voi puo' andare?
pero', come faccio a dirgli che il record da cui deve partire e' quello passato con GET?
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!
infatti il problema e' proprio che le righe non sono tutte continue, voglio dire magari gli id sono tipo: 101, 102, 105, 121...
e quindi quando arriva al numero di id che non esiste mi da' errore...