-
paging di un file
Codice PHP:
<? $id = $_GET['id'];$i = $_GET['i'];
echo"<html><body>";
$file = "fileID.txt"; $total = filesize($file);
$file2 = file_get_contents($file);
$fp = fopen($file,"r") or die("errore nell esecuzione");
$data = fread($fp, $total);
fclose($fp);
$num = $i * 500 ;
$linea = $num+500;
$perpage = $linea;
$a = $i+1; $b = $i-1;
$visualizza = substr($file2,$num,$linea);
echo" $visualizza <hr color='red'/>";echo"<br/><br/>";
echo"<big><a href='paging.php?i=$a&id=$id'> avanti </a> ";
echo"<a href='paging.php?i=$i&id=$id'> (($i)) </a>";
echo"<a href='paging.php?i=$b&id=$id'> indietro </a></big>";
echo"<br/><a href='main.php?id=$id'>torna indietro</a></body></html>"; ?>
ciao ragazzi sono una frana a manipolare i file come database :( qualcuno può aiutarmi a capire come impaginare un file.txt :( in questo caso quando clicco sul link avanti la visualizzazione di ciò che sta nel file.text viene raddoppiata :( cioè invece di visualizzare 1-da0 a 500, 2da 500 a 1000,3 da 1000 a 1500 caratteri mi da 1 da 0 a 500,2 da 0 a 1000 ,3 da 500 a 1500 e così via :( dove sbaglio??
-
Se la matematica non è un'opinione 500x0=0...
Poi ti consiglio di sistemare un po' il codice: è un po' confusionario!
Ciao!
-
e infatti se la prima pagina è zero viene 500 * 0 = 0 ai quali aggiungo + 500 per vedere da 0 a 500 se la pagina è 1 viene 500*1 = 500 ai quali aggiungo +500 e in teoria dovrei vedere da 500 a 1000 giusto? in teoria però perchè nella pratica mi casca l asino :( dove sbaglio in questo codice :(????
-
Scusami, ma mi son permesso di eliminare codice superfluo, altrimenti non ci capisco niente :lol:
Codice PHP:
<?php
$id = $_GET['id'];
$i = $_GET['i'];
$file = "fileID.txt";
$file2 = file_get_contents($file);
$num = $i * 500;
$visualizza = substr($file2,$num,$num+500);
echo"<html><body>";
echo" $visualizza <hr color='red' />";
echo"<br /><br />";
echo"<big><a href='paging.php?i=".($i+1)."&id=$id'> avanti </a>";
echo"<a href='paging.php?i=$i&id=$id'> (($i)) </a>";
echo"<a href='paging.php?i=".($i-1)."&id=$id'> indietro </a></big>";
echo"<br /><a href='main.php?id=$id'>torna indietro</a></body></html>";
?>
Se non vado errato, questo sopra dovrebbe essere equivalente al tuo iniziale.
Dovresti controllare sempre se son settati $_GET['i'] e $_GET['id'] (ad esempio, tramite la isset(), ulteriormente, anche con la is_numeric()).
Hai pensato di usare, come database di testo, sqlite? E' molto più veloce e facile da usare. "Lato PHP" ha lo stesso comportamento di un database sql, quindi si usa tramite query.
Comunque, in generale, il terzo parametro della substr(), è la QUANTITA' di caratteri che dovrebbe stampare (ovvero la lunghezza del testo): non è come (ad esempio), slice(start, end) di javascript che restituisce la stringa dal carattere start al carattere end: il 3° parametro della substr() dovrebbe essere (nel tuo caso) sempre 500, perchè ogni volta vuoi stampare 500 caratteri partendo dal carattere $num-esimo!.
Quindi, con 0 lui ti inizia da 0 scrivendo 500 caratteri. Con 1, lui inizia da 500 scrivendoti 1000 caratteri, quindi ti scrive dal carattere 500 al carattere 1500 (ovvero, 1000 caratteri partendo dal 500°), e non dal 500 al 1000 come pensavi!.. Non so se ho reso l'idea...
Ciao!
-
ciao alemoppo hai reso perfettamente l idea :) inizialmente questo script usava explode dopo i <br/> ma non mi funzionava tanto bene :( cmq ho fatto copia e incolla del tuo script e funziona uguale al mio cioè sto sempre sulla stessa pagina e ogni volta me la allunga di una linea :( pensavo che substr() fosse riferito ai caratteri !! sinceramente manco di esperienza ma l appendimento mi funziona bene :D non cè un altro modo per impaginare un file o al massimo fare in modo che il loop di inizio pagina coincida nel punto voluto?
-
Nel mio script (o nel tuo), ha messo come 3° parametro 500?
Sostituisci:
Codice PHP:
$visualizza = substr($file2,$num,$num+500);
Con:
Codice PHP:
$visualizza = substr($file2,$num,500);
In questo modo, non funziona? Che problemi da? (non ho capito)...
Ciao!
-
no così va bene :D grazie alemoppo :)