PHP .TXT Okurken Sayfalama
-
Bilmiyorum başlık ne kadar açıklayıcı oldu hocalar ama txt den veri okumayı ilk defa kulanmak zorunda kalıyorum. MySQL de çekerken sorguda limit belirleyerek sayfa yapısını kaç adet kayıt geleceğini oluşturabiliyoruz peki txt satır satır okurken bunu nasıl yapıyoruz ?
Diyelim ki 3000 satırlık bir txt verisi var ve bunu 500 er den 6 sayfa şeklinde sayfalamak istiyorum nasıl yaparız ?
-
döngü kullanabilirsin.
-
php txt split diye aratırsan bir sürü kod çıkar
https://gist.github.com/elvisciotti/1783585
http://www.zubrag.com/scripts/text-splitter.php
http://stackoverflow.com/questions/5039824/php-script-to-split-large-text-file-into-multiple-files
-
error_reporting(0);
set_time_limit(0);
$nerden = $_GET["nerden"];
$nereye = $_GET["nereye"];
$dosyaadi = "dosyaadi.txt";
if($nerden<0):
die("Nerden değeri 0dan ufak olamaz.");
endif;
$dosya = fopen($dosyaadi, 'r');
$icerik = fread($dosya, filesize($dosyaadi));
$parcala = explode("\n",$icerik);
$kacsatirvar = count($parcala);
if($nereye>$kacsatirvar):
die("Toplam Satır Sayisi: $kacsatirvar sizin istediğiniz $nereye dir. Bu olamaz...");
endif;
for ( $say=$nerden ; $say <= $nereye ; $say++ )
{
echo $parcala[$say]."<br>";
}
Şeklinde goster.php olarak kaydet... Sonra goster.php?nerden=0&nereye=500 dersen
ilk 500 satır görüntülenir. goster.php?nerden=500&nereye=1000 dersen 500 ile 1000 görüntülenir.
Not: satır satır direk okuma yapmak için buda kullanılabilir...
$asd = file('dosyaadi.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($asd as $sirasi=>$value) {
echo $value."<br>";
}
Ben illa otomatik olsun diyorsan http://www.phpr.org/php-ile-sayfalama/ burayı ince okadar yazmadım.
-
Erdem bunu yazdı
Çok teşekkür ederim hocam, bende şöyle bir kaynak buldum bu sırada bunu kullandım sizinkiyle aynı zaten hemen hemen. Tek sıkıntım şimdi datayı explode ederken bu kod ile. txt içeriğim şöyle; ABC|123|456. Bu kod bana arraya tümünü atıp veriyor.
<?PHP $lines = file('test.txt'); $perpage = 500; $start = isset($_GET['start']) ? $_GET['start'] : 0; for($i = $start; $i <= ($start + $perpage); $i++){ if($lines[$i] != ''){ echo $lines[$i] . '<br />'; } } # print pages echo '<a href="text_split.php"><< Basa don</a> '; for($j = 1; $j <= (count($lines) / $perpage)-1; $j++){ if($start == $j){ echo $j; } else{ echo '<a href="?start=' . ($j * $perpage) . '">' . $j . '</a> |'; } } ?> -
<?PHP $lines = file('test.txt'); $perpage = 500; $start = isset($_GET['start']) ? $_GET['start'] : 0; for($i = $start; $i <= ($start + $perpage); $i++){ if($lines[$i] != ''){ // echo $lines[$i] . '<br />'; $satiritekrarparcala = explode("|",$lines[$i]); foreach($satiritekrarparcala as $asilicerik){ echo $asilicerik."<br>"; } } } # print pages echo '<a href="text_split.php"><< Basa don</a> '; for($j = 1; $j <= (count($lines) / $perpage)-1; $j++){ if($start == $j){ echo $j; } else{ echo '<a href="?start=' . ($j * $perpage) . '">' . $j . '</a> |'; } } ?> Sanırım bunu demek istedin. Bu saatte bunu anladım hocam kusura bakma.Erdem tarafından 09/Oca/15 01:44 tarihinde düzenlenmiştir -
Erdem bunu yazdı
Çok doğru anlamışsın hocam teşekkür ederim :)
-
Bu arada satır satır işlem bitmeden ekrana bassın istiyorsan Fonksiyon bu :
function fls(){
ob_end_flush();
flush();
ob_start();
}Tarayıcı biraz yorabilir. Ama satır satır çıktı almak için en sondaki foreach in dışına for un bitimine eklersen teker teker sonuç alırsın.
Büyük işlemlerde tarayıcı kasabilir o zaman eski adı ile msdos üzerinden de işlemlerini yaptırabilirsin. Tarayıcı ile uğraşmadan
php dosyanın üzerinde sağ tıkla, özellikler.. Çalıştırma yerine
dosya.php "c:/xammp/asd/asd/php.exe" olarak tanımla çift tıkladığında tamper boşaltma derdin felanda olmaz.
Sanırım böle birşeylerdi. Kafa gitti
Kolay gelsin..
Erdem tarafından 09/Oca/15 02:11 tarihinde düzenlenmiştir
