Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

Kategorilendirme

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
Selam,
Veritabanını su sekilde olusturdum:

PHP:
CREATE TABLE `yerler` (
  `id` int(11) NOT lisanssız auto_increment,
  `yer_adi` text NOT lisanssız,
  `alt_id` int(11) NOT lisanssız,
  PRIMARY KEY  (`id`),
  KEY `alt_id` (`alt_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;


Veri girisi ise su sekilde:

PHP:
INSERT INTO `yerler` VALUES (1, 'Adana',0);
INSERT INTO `yerler` VALUES (2, 'Antalya',0);
INSERT INTO `yerler` VALUES (3, 'Alanya',2);
INSERT INTO `yerler` VALUES (4, 'Kemer',2);
INSERT INTO `yerler` VALUES (5, 'Ankara',0);
INSERT INTO `yerler` VALUES (6, 'Side',2);


diyelim ki Antalya (id=2) sehrinin ilçelerinden bir tanesine Alanya ekleyeceğim, Alanya'yı eklerken alt_id'yi 2 yapıyorum ve bu ilçenin bağlı olduğu ilin Antalya olduğu belli oluyor. Aynı sekilde sehir eklerken de, alt_id'yi 0 olarak bırakıyorum il olduğu anlasılsın diye. Veri girisi yaparken ise formda listelemenin su sekilde olması için nasıl bir kod kullanmalıyım?

Adana
Antalya
>>Alanya
>>Kemer
>>Side
Ankara

Ek bilgi:Asağıdaki kod yerler tablosundaki bütün verileri listeletiyor, amacım ilçelerin, bağlı olduğu ilin altına gelmesi.

PHP:
<?
echo "<select name=yer>";
$sc=mysql_query("select * from yerler");
while ($cek=mysql_fetch_array($sc)):
echo "<option value=\"$cek[id]\">$cek[yer_adi]</option>";
endwhile;
echo "</select>";
?>
 

hakimi

0
Onaylı Üye
Üye
Katılım
1 Temmuz 2006
Mesajlar
1,356
Açılan Konu
157
Tepki puanı
0
sen daha iyi bilirsin ama ploop saırım bunun için çift select box ve jump menu kullanman lazım. arabam.com daki gibi. yani antalyayı seçtinmi sayfa refreshleyip alttaki select boxa ilçelerini girecek. jada ajaxla olur diye tahmin ediyorum(aynı işlev). Başka yolu varsa bende öğrenmek isterim :)
Birde ikinci select box a If (alt_id != 0) { while kontrollü bir select box alt_id için } koyarsın
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
Sadece iki basamak ise aşağıdaki şekilde yapılır. Select menu'de aynı mantık sadece düz echo yerine <option> içinde echolayacaksın, analarını option group altlarını option yaparsın mesela daha bile güzel olur.

Eğer sonsuz basamak varsa fonksiyon yazıp iç içe çağırman lazım.

PHP:
$q = mysql_query("SELECT id,yer_adi FROM yerler WHERE alt_id='0' ORDER BY id ASC");

   while ($a = mysql_fetch_array($q)) {
   echo $a[yer_adi].'<br>';

   $q2 = mysql_query("SELECT id,  yer_adi FROM yerler WHERE alt_id='$a[id]'");
 
      if (mysql_num_rows($q2) != "0") {
      
          while ($a2 = mysql_fetch_array($q2)) {
          echo '- '.$a2[yer_adi].'<br>';
          }

      }

  }
 

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
Çok uykum geldi, yatayım yarın öğlen bakıp yardım gerekirse yazarım buraya :) Tesekkurler.
 

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
Angelo tam istediğim gibi olmus, çok tesekkur ederim.
 
Üst