Man kan ju, vet inte hur optimalt det är, det är att man läser in textdokumentet i en array, rad per rad.
ett dokument med 100 rader, blir en array med 100 items... kan vara lättare ..
5 svar · 537 visningar · startad av NeoBlizz
Sitter här och klurar på hur jag ska kunna begränsa en inläsning från en textfil.
<?
$file = @fopen("text.txt", "r")
or die("File not found");
while (!feof($file)) {
$data = fgets($file);
$info = split("[|]", $data);
?>
<img src="img/data/<?=$info[0]?>" width="248" height="193" alt="<?=$info[1]?>"/>
<?
}
fclose($file);
?>
Med denna kodsnutt, läses ju alla rader från filen in och skriver ut tillhörande bild.
Det jag vill göra nu är att begränsa vilka rader som skall användas, med hjälp av ?show=X i adressfältet, där X är en siffra.
Varje "sida" får max innehålla 12 st utskrivna data.
Om ?show=0 (eller ?show=X inte finns alls i adressfältet) skall de 12 första raderna i text.txt läsas in och inga fler.
Om ?show=12 skall de 12 första raderna i text.txt ignoreras och rad 13 och 12 rader framåt skrivas ut.
Om ?show=24 skall de 24 första raderna i text.txt ignoreras och rad 24 och 12 rader framåt skrivas ut.
Osv. osv.
Har försökt en hel del, men är inte speciellt haj på filhantering (brukar mest köra mysql) men kan tyvärr i detta fall inte köra mysql, och måste anv. vanlig fil för ändamålet.
Någon som har förslag?
Man kan ju, vet inte hur optimalt det är, det är att man läser in textdokumentet i en array, rad per rad.
ett dokument med 100 rader, blir en array med 100 items... kan vara lättare ..
Det du kan göra är att läsa in hela textinnehållet med file_get_contents(), sedan dela upp filen på varje radbrytning till en array och loopa ut de index som är aktuella.
Typ:
$contents = file_get_contents("text.txt");
$arrayOfContents = explode('\n', $contents);
$i = 0;
if(isset($_GET["show"]) && intval($_GET["show"]) > 0)
$i = intval($_GET["show"]);
for($i; $i < ($i + 12); $i++) {
echo "Bild " . $arrayOfContents[$i];
}
Ett enkelt exempel. Du bör även lägga in en boundary-kontroll så att index inte överskrider antalet element i arrayen, osv.
Eller så lägger du enkelt till en räknare i din existerande loop, som börjar utskrivning vid aktuellt värde på räknaren och sedan bryter loopen när räknaren har ökats med 12.
SPiN skrev:
Det du kan göra är att läsa in hela textinnehållet med file_get_contents(), sedan dela upp filen på varje radbrytning till en array och loopa ut de index som är aktuella.
Eller använd https://www.php.net/file
Jag tänkte väl att det fanns en sån funktion, hittade den inte i minnet bara :)
Tack, ska kolla genom era förslag och hoppas det löser sig =)