• 14-01-2010, 23:47:29
    #1
    $arr1[0] ve $arr2[0] olmak üzere iki dizinin için de farklı mysql sorgularından gelen veriler var. Bunları foreach ile yazdırmak istiyorum.

    Fakat şart şu: bir değişkendeki bir veri ikinci değişkende varsa onu atlayıp yazdırmaya devam edecek. yani eşleşen varsa iki kere azılmayacak, 1 kere yazılacak.

    Nasıl olmalı?
  • 14-01-2010, 23:57:39
    #2
    Üyeliği durduruldu
    $yenidizi=array_unique(array_merge($dizi[0],$dizi2[0]));
    
    # $yenidizi'de tekrar eden eleman kalmaz.
  • 15-01-2010, 00:19:39
    #3
    yapamadım D3LLy.

    Warning: array_merge() [function.array-merge]: Argument #1 is not an array in ....

    hatasını alıyorum.

    bunu foreach içinde mi kullanmalı?
  • 15-01-2010, 00:23:47
    #4
    Üyeliği durduruldu
    hayır dizileri bu fonksiyondan geçirip $yenidizi yi foreach ile döngüye sokmalısın

    ayrıca bana $dizi[0] ve $dizi2[0] birer dizi dedin dizi değilmiş..

    $yenidizi=array_unique(array_merge($dizi,$dizi2));
    
    # böyle kullanmalısın
  • 15-01-2010, 01:36:06
    #5
    D3LLy adlı üyeden alıntı: mesajı görüntüle
    hayır dizileri bu fonksiyondan geçirip $yenidizi yi foreach ile döngüye sokmalısın

    ayrıca bana $dizi[0] ve $dizi2[0] birer dizi dedin dizi değilmiş..

    $yenidizi=array_unique(array_merge($dizi,$dizi2));
    
    # böyle kullanmalısın
    herhangi bir array merge felan yapmadan bendeki $arr1 değişkeni print_r ($arr1); yapıldığında şu sonuçları döndürüyor:

    Array ( [0] => Array ( [0] => pat robertson haiti comments ) [1] => Array ( [0] => american idol last night ) [2] => Array ( [0] => wyclef jean haiti relief ) [3] => Array ( [0] => haiti earthquake 2010 news ) [4] => Array ( [0] => skip holtz ) [5] => Array ( [0] => haiti to 90999 ) [6] => Array ( [0] => earthquake haiti death toll ) [7] => Array ( [0] => megalithic ) [8] => Array ( [0] => american idol pants on the ground video ) [9] => Array ( [0] => yele wyclef ) [10] => Array ( [0] => scott ritter ) [11] => Array ( [0] => doomsday clock ) [12] => Array ( [0] => salvation army haiti relief ) [13] => Array ( [0] => teddy pendergrass dead ) [14] => Array ( [0] => fark ) [15] => Array ( [0] => red cross haiti donations ) [16] => Array ( [0] => american idol 2010 auditions ) [17] => Array ( [0] => mali vs algeria ) [18] => Array ( [0] => ups shipping to haiti ) [19] => Array ( [0] => 700 club ) )
    diğer $arr2 değişkeni de aynı şekilde ama veriler farklı. Buna göre nasıl yapacağız?
    yapamadım ben senin dediğin gibi.


         $yenidizi=array_unique(array_merge($arr1,$arr2));
    	
    	foreach ($yenidizi as $veriler) {
    	echo $veriler . '<br>';
    	}
    şeklinde yapıyorum array hatası geliyor.


         $yenidizi=array_unique(array_merge($arr1[0],$arr2[0]));
    	
    	foreach ($yenidizi as $veriler) {
    	echo $veriler . '<br>';
    	}
    bunda da sadece 2 sonuc donuyor halbuki 15 den fazla sonuc dönmesi lazım.

    nasıl olacak?
  • 15-01-2010, 08:36:44
    #6
    Üyeliği durduruldu
    ooaykac adlı üyeden alıntı: mesajı görüntüle
    Buna göre nasıl yapacağız?
    yapamadım ben senin dediğin gibi.
    hocam hatali yapiyorsunuz. array mergeye array in kendisini vermeniz gerekiyor. siz indis li vermissiniz

    $yenidizi=array_unique(array_merge($arr1[0],$arr2[0]));
    degil

    $yenidizi=array_unique(array_merge($arr1,$arr2));
    gibi olmasi lazim
  • 15-01-2010, 11:32:06
    #7
    <?php 
    $sorgu1=mysql_query('select * from (select * from tablo order by id desc limit 20) as x order by id ASC'); // son 20 
    while($row1=mysql_fetch_array($sorgu1))
    { 
    $arr1[] = $row1['title']; // results into array
    }
     
    $sorgu2=mysql_query('select * from (select * from tablo order by id desc limit 40) as x order by id ASC limit 20'); // son 20 den önceki 20
    while($row2=mysql_fetch_array($sorgu2))
    { 
    $arr2[] = $row2['title']; // results into array
    }
     
    foreach((array_unique(array_merge($arr1, $arr2))) as $veriler){
    echo $i . '. ';
    echo $veriler. '<br>';
     
    $i++; } 
     
    ?>
    Şeklinde yaptım. Oldu. Yanlız bir sorunum daha var.

    Burada iki veritabanından bilgileri alıp sorunsuz şekilde birbiriyle aynı olmayan verileri yazdırıyorum. Sorunum şu:

    Tablolardaki diğer alanlarda bulunan verileri nasıl foreach döngüsünün içine koyacağım? alanlarım ID, TITLE, LOCATION ... şeklinde. TITLE çindekileri aldımda beraberinde diğer alanları foreach e alamadım.

    $arr1 yada $arr2 değişkenlerinin içine ekleyince foreach döngüsünün içindeki array_unique olayına etki ettiği için yanlış sonuç geliyor.

    Kısacası tablolardaki diğer verileri nasıl dödüreceğim?
  • 15-01-2010, 11:43:44
    #8
    Üyeliği durduruldu
    bu kodları isteğinizde yazsaydınız daha kolay çozerdik hocam


    <?php  
    $sorgu1=mysql_query('select * from (select * from tablo order by id desc limit 20) as x order by id ASC '.
                        'UNION '.
                        'select * from (select * from tablo order by id desc limit 40) as x order by id ASC limit 20'); 
    while($row1=mysql_fetch_array($sorgu1)) 
    {  
    echo  $row1['title']; 
    } 
    
    ?>
    union aynı kayırları tekrar vermez. bir de boyle deneyin
  • 15-01-2010, 11:55:51
    #9
    D3LLy adlı üyeden alıntı: mesajı görüntüle
    bu kodları isteğinizde yazsaydınız daha kolay çozerdik hocam


    <?php  
    $sorgu1=mysql_query('select * from (select * from tablo order by id desc limit 20) as x order by id ASC '.
                        'UNION '.
                        'select * from (select * from tablo order by id desc limit 40) as x order by id ASC limit 20'); 
    while($row1=mysql_fetch_array($sorgu1)) 
    {  
    echo  $row1['title']; 
    } 
    
    ?>
    union aynı kayırları tekrar vermez. bir de boyle deneyin
    Bu şekilde olmuyor. while($row1=mysql_fetch_array($sorgu1)) satırı için
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in .....

    hatası geliyor.


    "kodları isteğinizde yazsaydınız" derken anlamadım demek istediğinizi. Kusura bakmayın.

    Ayrıca bildiğim kadarıyla UNION aynı olmayan yani ayrı tablolardaki aynı adlı alanlar için kullanılıyor. Denemiştim ama olmamıştı. Yanlış biliyor da olabilirim.


    Sorunum hala devam ediyor...