İyinet'e Hoşgeldiniz!

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

Kayıt Ol!

While döngüsü .

codegenerator

0
İyinet Üyesi
Katılım
9 Mart 2011
Mesajlar
314
Reaction score
3
Konum
Ankara
Merhaba arkadaşlar,

Sabahtan beri çalışmaktan kafam uçtu heralde. Sizlere soruyorum şimdi .

PHP:
		<td width="32" height="17">:</td>
		<td width="465" height="17" valign="top">
		<select size="1" name="magazin_kategori">
EOF;
while($row= mysql_fetch_assoc(mysql_query("SELECT * FROM kategori ORDER BY id"))) {
	echo "<option> ".$row['kategori_adi']."</option>";		
	
		}
echo <<<EOF
<option selected>Seçiniz</option>
		</select></td>
	</tr>
	<tr>
		<td width="2


Kodun bir kısmını yazdım arkadaşlar .While sonsuzda dönüyor ? Neden ?
 
E

Erturk

Misafir
Bu şekilde değiştirin.

PHP:
<td width="32" height="17">:</td> 
        <td width="465" height="17" valign="top"> 
        <select size="1" name="magazin_kategori"> 
EOF; 

$cek = mysql_query("SELECT * FROM kategori ORDER BY id");
while($row= mysql_fetch_assoc($cek)) { 
    echo "<option> ".$row['kategori_adi']."</option>";         
     
        } 
echo <<<EOF 
<option selected>Seçiniz</option> 
        </select></td> 
    </tr> 
    <tr> 
        <td width="2
 
E

Erturk

Misafir
Hiçbir fark olmuyor. El ve göz alışkanlığı sadece :)

Sonsuz döngünün bu koddan kaynaklandığına eminsin ama dimi ?
 
E

Erturk

Misafir
Şu ana kadar hiç ilk yaptığın şekilde denememiştim. Mantıken sorun yaratmaması gerekiyor. El ve göz alışkanlığından dolayı sorguyu devamlı bir değişkene aktarıyorum. Demek ki while içerisinde kullanınca sorun yaratıyormuş ve bir fark varmış :) Bu sayede bunuda öğrenmiş olduk...

Sorunun çözüldüğüne sevindim.
 

codegenerator

0
İyinet Üyesi
Katılım
9 Mart 2011
Mesajlar
314
Reaction score
3
Konum
Ankara
Şu ana kadar hiç ilk yaptığın şekilde denememiştim. Mantıken sorun yaratmaması gerekiyor. El ve göz alışkanlığından dolayı sorguyu devamlı bir değişkene aktarıyorum. Demek ki while içerisinde kullanınca sorun yaratıyormuş ve bir fark varmış :) Bu sayede bunuda öğrenmiş olduk...

Sorunun çözüldüğüne sevindim.

Teşşekkür ederim ilgin için. Benimde ilk defa karşılaştığım bir durumdu . Sorunun bu sebebten kaynaklandığı aklımın ucundan bile geçmemişti.
 

Lansewebtr

0
İyinet Üyesi
Katılım
30 Aralık 2010
Mesajlar
256
Reaction score
3
Şu ana kadar hiç ilk yaptığın şekilde denememiştim. Mantıken sorun yaratmaması gerekiyor. El ve göz alışkanlığından dolayı sorguyu devamlı bir değişkene aktarıyorum. Demek ki while içerisinde kullanınca sorun yaratıyormuş ve bir fark varmış :) Bu sayede bunuda öğrenmiş olduk...

Sorunun çözüldüğüne sevindim.

Ben hep harf harf tamamını el le yazdığım için değişkene atamadan yazardım. ama hata alıp makina zorla düzelttire düzelttire alıştım. doğrusu değişkenli olan. fark olmaması lazım gibi görünüyo ama fark var.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
While (X KOSUL Y) dizgesinde, "X koşul Y" kontrolü her adımda çalıştırılır. Dolayısıyla her adımda, mysql_query() çağrılıyor ve her seferinde mysql_query ve fetch_row başarılı olduğu için sonsuza kadar uzuyor. Açıklaması bu.
 

codegenerator

0
İyinet Üyesi
Katılım
9 Mart 2011
Mesajlar
314
Reaction score
3
Konum
Ankara
While (X KOSUL Y) dizgesinde, "X koşul Y" kontrolü her adımda çalıştırılır. Dolayısıyla her adımda, mysql_query() çağrılıyor ve her seferinde mysql_query ve fetch_row başarılı olduğu için sonsuza kadar uzuyor. Açıklaması bu.

Yabancı sayfalardada buna benzer bir şeyler vardı. Değişkenle aktardığımızda orada yine X KOSUL Y ifadesi olmuş olmuyormu.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
Adım 1: mysql_query() -> mysql_fetch_row() -> eşit mi $row değişkenine -> TRUE devam et.
Adım 2: mysql_query() -> mysql_fetch_row() -> eşit mi $row değişkenine -> TRUE devam et
Adım 3: mysql_query() -> mysql_fetch_row() -> eşit mi $row değişkenine -> TRUE devam et
..sonsuz..

Oysa mysql_query() while'ın dışındaysa


Adım 1: mysql_fetch_row() -> eşit mi $row değişkenine -> TRUE devam et.
Adım 2: tüm fetch_row döndürüldü, FALSE -> break.

Birinci durumda, her adımda mysql_query() yenilendiği için yeni veri seti geliyor sürekli.
 

codegenerator

0
İyinet Üyesi
Katılım
9 Mart 2011
Mesajlar
314
Reaction score
3
Konum
Ankara
Adım 1: mysql_query() -> mysql_fetch_row() -> eşit mi $row değişkenine -> TRUE devam et.
Adım 2: mysql_query() -> mysql_fetch_row() -> eşit mi $row değişkenine -> TRUE devam et
Adım 3: mysql_query() -> mysql_fetch_row() -> eşit mi $row değişkenine -> TRUE devam et
..sonsuz..

Oysa mysql_query() while'ın dışındaysa


Adım 1: mysql_fetch_row() -> eşit mi $row değişkenine -> TRUE devam et.
Adım 2: tüm fetch_row döndürüldü, FALSE -> break.

Birinci durumda, her adımda mysql_query() yenilendiği için yeni veri seti geliyor sürekli.

Teşşekür ederim hocam açıklamalarınız için.
 

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.

Üst