• 30-09-2012, 12:34:38
    #1
    Üyeliği durduruldu
    Arkadaşlar Merhaba,

    Tablom var tablomda 2 adet Alanım var id ve connectid

    Ben ID ye göre verimi sayfamda listeletiyorum id alıyorum. Şimdi diyorum ki sitemde id ye göre verimi listeledim bu listelediğim ürünün id sini alıp connectid alanını kontrol etmek istiyorum aynı id, connectid alanında varsa onlarında idlerini almak istiyorum yani bir veri listelerken ona bağlı verileride listeleticem.

    1 Verim var. bunun id si (1)

    Burada 2 verimdaha var. Bu 2 verimin connectid si (1)

    1 inci verinin yanında diğer verileride almak istiyorum ona bağlı olan.

    Yardımcı olursanız sevinirim artık düşünemiyorum

    Tablo yapım
  • 30-09-2012, 12:56:36
    #2
    İstediğiniz şey şu resmin:



    Bu hale gelmesi ise:



    Şöyle basit bir kod yardımı ile yapabilirsiniz:

    <?php
    header('Content-Type:text/html; charset="UTF-8"');
    mysql_connect('localhost','root','');
    mysql_select_db('ust');
    
    $sorgu = mysql_query("select * from tablo where ustid = 0");
    
    if(mysql_num_rows($sorgu) > 0){
    	echo '<ul>';
    	while($veri = mysql_fetch_object($sorgu)){
    		echo '<li>';
    		echo $veri->isim;
    		$sorgu2 = mysql_query("select * from tablo where ustid = '".$veri->id."'");
    		
    		if(mysql_num_rows($sorgu2)>0){
    			echo '<ul>';
    			while($veri2 = mysql_fetch_object($sorgu2)){
    				echo '<li>'.$veri2->isim.'</li>';
    			}
    			echo '</ul>';
    		}
    		echo'</li>';
    	}
    	echo '</ul>';
    
    }else{
    	echo 'Ülke yok.';
    }
    
    ?>
  • 30-09-2012, 17:38:26
    #3
    Üyeliği durduruldu
    Teşekkür ederim işime yaradı daha önce aynı tarz uygulamalarım olmuş ama bazen kafa duruyor düşünemiyor insan çok sağol ilgin için.
  • 30-09-2012, 18:19:03
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    İki farklı tablodaki verileri belli bir sütuna göre birleştirmek için left join kavramını araştırın.
  • 30-09-2012, 23:25:54
    #5
    Üyeliği durduruldu
    erginkeles adlı üyeden alıntı: mesajı görüntüle
    İki farklı tablodaki verileri belli bir sütuna göre birleştirmek için left join kavramını araştırın.
    İlgin için teşekkür ederim iki farklı tablo değilde tek tabloda iki farklı alanda arkadaşın yardımıyla işim görüldü teşekkür ederim.

    Hayırlı akşamlar.
  • 01-10-2012, 17:53:14
    #6
    erginkeles adlı üyeden alıntı: mesajı görüntüle
    İki farklı tablodaki verileri belli bir sütuna göre birleştirmek için left join kavramını araştırın.
    Eğer yapabiliyorsak tek tabloda olmuyorsa farklı tablo tek sorgu ve array yardımıyla oda kullanılamıyorsa left join yerine sorgu içinde sorgu yapmamız daha mantıklı olacaktır.
  • 06-10-2012, 18:37:07
    #7
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    İstediğiniz şey şu resmin:



    Bu hale gelmesi ise:



    Şöyle basit bir kod yardımı ile yapabilirsiniz:

    <?php
    header('Content-Type:text/html; charset="UTF-8"');
    mysql_connect('localhost','root','');
    mysql_select_db('ust');
    
    $sorgu = mysql_query("select * from tablo where ustid = 0");
    
    if(mysql_num_rows($sorgu) > 0){
    	echo '<ul>';
    	while($veri = mysql_fetch_object($sorgu)){
    		echo '<li>';
    		echo $veri->isim;
    		$sorgu2 = mysql_query("select * from tablo where ustid = '".$veri->id."'");
    		
    		if(mysql_num_rows($sorgu2)>0){
    			echo '<ul>';
    			while($veri2 = mysql_fetch_object($sorgu2)){
    				echo '<li>'.$veri2->isim.'</li>';
    			}
    			echo '</ul>';
    		}
    		echo'</li>';
    	}
    	echo '</ul>';
    
    }else{
    	echo 'Ülke yok.';
    }
    
    ?>
    Bu tip kullanımlar yanlıştır, çünkü tek sorgu tercih edilmelidir. Üstteki kodda 10 veriye göre 4 sorgu yapılır.. Performans bakımından üst düzey sitelerde yavaş sonuç verir

    $sorgu = mysql_query("SELECT id, ustid, isim FROM veri");
    
    $array = array();
    while($veri = mysql_fetch_array($sorgu))
    {
    	extract($veri);
    	 
    	if($ustid == 0)
    	{
    		$array[$id][] = array('id' => $id, 'isim' => $isim);	
    	}
    	else
    	{
    		if( ! isset($array[$ustid]))
    		{
    			$array[$ustid]['index'][] = array('id' => $ustid, 'isim' => $isim);
    		}
    			
    		$array[$ustid]['index'][] = array('id' => $id, 'isim' => $isim);
    	}
    }
    
    echo '<ul>';
    foreach($array as $key => $value)
    {
    	if(is_array($value['index']) AND count($value['index']) > 0)
    	{
    		echo '<li>' . $value[0]['isim'] . '<ol>';
    		foreach($value['index'] as $key2 => $value2)
    		{
    			echo '<li>'.$value2['isim'].'</li>';
    		}
    		echo '</ol></li>';
    	}
    	else
    	{
    		echo '<li>' . $value[0]['isim'] . '</li>';
    	}
    }
    echo '</ul>';
    bu kod ise tek sorgu ile 10 veriyi çekiyor ve sıralıyor, durumu kurtarıyor. [index] elemanlarında sıralama array verisinin sort fonksiyonları ile düzenlenebilir.
  • 16-07-2013, 20:23:03
    #8
    Arkadaşlar konuyu hortlatmış gibi olacağım ama bir alternatif de ben önereyim.

    Belki bazı arkadaşlara yardımcı olmuş olur.

    Eğer yanlızca tek bir alt kategoriye iniliyorsa şu şekilde bir sorgu iş görür.

    select id,isim,ustID, (select isim from tablo as yeni where yeni.id=tablo.ustID) as ustIsım from tablo

    (bu aynı tabloda alt sorgu oluşturma yöntemi)