While döngüsü içinde if şartı

Kodla Büyü

trickboy

Üye
Mesajlar
41
<? $kategoriadi=mysql_result($kayitlar,$sayac,'kategoriadi');?>
<select name="kategoriadi"><option value="<? printf($kategoriadi);?>" ><? printf($kategoriadi);?></option>
<?php
$oku=mysql_query("select * from kategoriler");
while($cek=mysql_fetch_array($oku)){
$baslik=$cek['kategoriadi'];
if ($baslik==$kategoriadi) { $baslik=es geç hiçbişey olmasın }
echo"<option value='$baslik' >$baslik</option>";
}
?>
</select>

Buradaki amaç, açılır listede 2 kere aynı kategori adı yazılmasın. Ama nasıl?
 
trickboy' Alıntı:
<? $kategoriadi=mysql_result($kayitlar,$sayac,'kategoriadi');?>
<select name="kategoriadi"><option value="<? printf($kategoriadi);?>" ><? printf($kategoriadi);?></option>
<?php
$oku=mysql_query("select * from kategoriler");
while($cek=mysql_fetch_array($oku)){
$baslik=$cek['kategoriadi'];
if ($baslik==$kategoriadi) { $baslik=es geç hiçbişey olmasın }
echo"<option value='$baslik' >$baslik</option>";
}
?>
</select>

Buradaki amaç, açılır listede 2 kere aynı kategori adı yazılmasın. Ama nasıl?

Sorunuzu tam anlayamadım. Üst kısımdaki mysql_result ile aldığınız kategoriadi kısmının sorgusunu görmediğim için neden başta öyle birşey yaptığınızı anlayamadım.

Ama aklıma gelen iki ihtimale göre de cevap yazayım.

Birincisi; eğer başta bir kaç kategori okuyor, sonra yine aynı veritabanından başka kategoriler okuyorsanız; ve birincide görüntülettiklerinizi ikincide tekrar eklemesin diyorsanız, birincileri bir diziye alıp, ikinci döngüde bu dizide geçenleri (in_array kullanarak ya da sorgu düzenleyerek) atlatabilrsiniz.

İkinci aklıma gelense, sadece while döngüsü ile kategori veri tablosunda ismi farklı olan kayıtları almak ise SELECT DISTINCT(kategori_adi) FROM kategori ORDER BY kategori_adi şeklinde alabilirsiniz.

Üçüncü aklıma gelense, yukarıdaki tek bir kategori adının alttaki döngüde es geçilmesini istiyorsanız; if'in doğru olduğu yere continue; koyup kullanabilirsiniz. Döngüde bir sonraki tura geçer.

if ($baslik==$kategoriadi) { continue; }

Ya da echo kısmını eşit almadığı durumlarda yazdırabilirsiniz.
if ($baslik!=$kategoriadi) { echo"<option value='$baslik' >$baslik</option>"; }
 
BBNET
Geri
Üst