İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

while ve dosya

worshiphim

0
İyinet Üyesi
Katılım
16 Ocak 2005
Mesajlar
670
Reaction score
0
Konum
Suisse
Merhaba arkadaşlar aşağıdaki kodda bir sorun var içinden çıkamadım.
amacım metin.txt dosyasındaki her satırın başına ve sonuna istediğim şeyi yazdırmak...
Bu kodu çalıştırdığınızda metin.txt dosyasını satır satır okutuyorum ama
bu sefer aynı metini belirilen kere ekrana basıyor sonra öbür metine geçiyor

PHP:
<?php
$handle = @fopen("metin.txt", "r");
if ($handle) {
   while (!feof($handle)) {
       $buffer = fgets($handle, 50);
       echo ("<br>");
	$sayac = 1;
	while ( $sayac <= 50 ) {

	print ("$sayac $buffer<br>");

	$sayac ++;
	}



   }
   fclose($handle);
}
?>

Ne yapmayılım..
Teşekkürler
 

Grafix

0
İyinet Üyesi
Katılım
16 Aralık 2006
Mesajlar
1,153
Reaction score
0
Konum
Bursa
bunu bul

Kod:
}
   fclose($handle);
}
?>

bununla değiştir

Kod:
{
   fclose($handle);
}
?>

bakalım sonuç ne olacak?
 

worshiphim

0
İyinet Üyesi
Katılım
16 Ocak 2005
Mesajlar
670
Reaction score
0
Konum
Suisse
merhaba,
aşağıdaki gibi hata verdi
Parse error: syntax error, unexpected $end in /usr/local/apache/htdocs/w.php on line 22
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
PHP:
$dosya = file_get_contents("metin.txt");

$satirlar = explode("\n",$dosya);

   foreach ($satirlar as $satir) {
   $satir = "basina yaz".$satir."sonuna yaz";
   echo $satir."<br>";
   flush();
   }

?>
 

worshiphim

0
İyinet Üyesi
Katılım
16 Ocak 2005
Mesajlar
670
Reaction score
0
Konum
Suisse
merhaba demin dalgınlığıma geldi
benim istediğim aslında
satırlara numara vermekti
1 ilk satır
2 ikinci satır
şeklinde
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
Aşağıdakileri senin mesajının altına yazıyorum ama sürekli şekilde sorulduğu için böyle yazıyorum:


Döngü, (for, while, foreach, do while..) belirli bir şart var olduğu sürece içerisinde bulundurduğu işlemi gerçekleştiren birimdir. Benim mesleğim programcılık değil ama öyle sanıyorum ki bir programlama diline başlandığında ilk öğretilen şeylerden biridir. Ilk egzersizler, birden ona kadar sayıların ekrana basılması, 1'den 100'e kadar sayıların toplanması vb'dir. Eğer böyle şeyleri yapmadıysan bence bir an önce yap. O zaman her değişik sorun karşına çıktığında elindekileri nasıl kullanacağını daha iyi bilirsin.

Örnek:

--
$i = 27;

while ($i <= 100) {
echo $i;
}
--

Ne yapacak? Sonsuza kadar ekrana 27 basacak, çünkü i 100'den küçük eşit olduğu sürece yap diyor. i üzerinde değişiklik yapmadığımız için sonsuza kadar döngü içinde kalacak.

--
$i = 1;

while ($i<=10) {
echo $i;
$i++;
}
--

Birden ona kadar ekrana basacak ve döngüden çıkacak, çünkü her adımda i'yi bir arttırdık (i++). 10.u adımda i'nin değeri 11 olacak ve koşulu sağlamadığı için döngüden çıkacak.

Bunun muadili;

--
for ($i=1; $i<=10; $i++) {
echo $i;
}
--

Bizim kodumuz buydu;

--
$dosya = file_get_contents("metin.txt");

$satirlar = explode("\n",$dosya);

foreach ($satirlar as $satir) {
$satir = "basina yaz".$satir."sonuna yaz";
echo $satir."<br>";
flush();
}
--

echo $satir dediğimiz yere numara koyacağız. Birinci adım 1 ile başlayacağı için ilk yapacağımız şey, döngü öncesi i'ye 1 atamak ve döngünün her adımında i'yi arttırmak. Otomatik olarak atayacaktır.

PHP:
$dosya = file_get_contents("metin.txt"); 

$satirlar = explode("\n",$dosya); 
$i = 1;  // <-

   foreach ($satirlar as $satir) { 
   $satir = "basina yaz".$satir."sonuna yaz"; 
   echo $i.".".$satir."<br>"; 
   flush();
   $i++;  // <-
   }

Ben bunu for'la yapacağım derseniz. For'da bir limit koymamız gerektiği için sınırlayıcı, elimizdeki eleman sayısını bilmemiz lazım. Foreach'de dizi içindeki her bir eleman için dedik, eleman bitince otomatik durdurur o. Şimdi limit lazım bize. Onu da dizinin toplam eleman sayısı olarak düşüneceğiz. Dizi 0'dan başladığı, biz 1 den başlatacağımız için limitimizi 1 düşürerek bulacağız.

PHP:
$dosya = file_get_contents("metin.txt"); 

$satirlar = explode("\n",$dosya); 
$limit = count($satirlar) - 1;   // <-


   for ($i=1; $i<=$limit; $i++) { 
   $satir = "basina yaz".$satirlar[$i]."sonuna yaz"; 
   echo $i.".".$satir."<br>"; 
   flush();
   // i'yi degistirmiyorum zaten for adımında kendisi degisiyor.
   }
 

worshiphim

0
İyinet Üyesi
Katılım
16 Ocak 2005
Mesajlar
670
Reaction score
0
Konum
Suisse
Bende sürekli öğrenmeye çalışıyorum ama işlerden çok fırsat olmuyor ama mantığı anladım..
Genelde . gibi işaretlerde şaşırıyorum açıkcası

Çok Teşekkürler.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst