• 11-11-2009, 00:02:39
    #1
    arkadaşlar fonksiyonda 1 değer döndürdüğümde sorun yok ikinci bir değer eklediğimde hata veriyor.

    hata kodu.
    Warning: Missing argument 2 for sinirsiz_kategori(), called in F:\wamp\www\haber\includes\fonksiyonlar.php on line 48 and defined in F:\wamp\www\haber\includes\fonksiyonlar.php on line 29
    php kodu
    function sinirsiz_kategori($parent, $bolum) {
    
    	$sql = mysql_query("SELECT * FROM kategoriler WHERE bolum='$bolum' ORDER BY id DESC");
    
    	while($row = mysql_fetch_array($sql)) {
    		 $diziler[$row['id']] = array('kategori' => $row['kategori'],'parent' => $row['parent']);
    	}
    
    	$has_childs = false;
    
    	foreach($diziler as $key => $value)  {
    			if ($value['parent'] == $parent) {       
    
    					if ($has_childs === false){
    							$has_childs = true;
    							echo "\t<ul>";
    					}
    
    					echo "<li><a href=\"".$value['kategori'].".html\">".$value['kategori']."</a>";
    					sinirsiz_kategori($key);
    					echo "</li>\n";
    			}
    	}
    
    	if ($has_childs === true) echo "</ul>";
    
    }
    Yardımlarınızı Bekliyorum
  • 11-11-2009, 00:32:24
    #2
    Üyeliği durduruldu
    İki argumanlı bir fonksiyonu tek argüman vererek çağırmak istiyorsunuz, zaten yapılamaz bu, hata vermesi gayet doğal.

    Eğer istediğiniz gibi çağırmak istiyorsanız argümanları baştan birşeye eşitlemelisiniz. Yani

    function sinirsiz_kategori($parent, $bolum=0)
    olursa fonksiyonunuz $bolum argümanını doldurmayarak sadece

    sinirsiz_kategori(1);
    //aynı zamanda sinirsiz_kategori(1,5) şeklinde de çağırılabilir..
    şeklinde çağırabilirsiniz, aksi halde "Missing argument" hatası verecektir..
  • 11-11-2009, 09:41:42
    #3
    Üyeliği durduruldu
    paremetreyi dizi olarak alip dönderdiginiz degeri dizi olarak dönderebilirsiniz
  • 11-11-2009, 13:56:59
    #4
    Üyeliği durduruldu
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    paremetreyi dizi olarak alip dönderdiginiz degeri dizi olarak dönderebilirsiniz
    Birden fazla değer döndürmek için diziler tek yol, yalnız fonksiyona parametre yollarken dizi yollamanın mantığı nedir? fonksiyonun yapısını karmaşıklaştırmaktan başka bir işe yaramaz sanırım söylediğiniz?
  • 11-11-2009, 14:05:31
    #5
    Üyeliği durduruldu
    _Janberka adlı üyeden alıntı: mesajı görüntüle
    Birden fazla değer döndürmek için diziler tek yol, yalnız fonksiyona parametre yollarken dizi yollamanın mantığı nedir? fonksiyonun yapısını karmaşıklaştırmaktan başka bir işe yaramaz sanırım söylediğiniz?
    paremetre sayiniz değişkense ki böyle fonkisyonlar mevcut o zaman dizi kullanma ihtiyaci duyabilirsiniz. özelliklede gönderdiginiz değişkenin birden fazla boyutlu ise.

    mesela şöyle bir paremetre alan fonksiyonu nasil yazarsiniz;

    $parametre = array(
           0 => array( "adi"=>"xxx", "soyadi" => "yyy"),
           1 => array("adi"=>"Uydurma", "soyadi"=>"Bir kişi")
    );
    tabi bunlarin hepsi seçim meselesi. öyle olmak zorunda diye bir şart yok.
    func_num_args(), func_get_arg() kullanarakta hiç parametre tanımlamadan tüm parametreler alinabilir.

    Anti parantez pointer kullanirsaniz fonksiyon ile birden fazla değer dönderebilirsiniz dolayli yoldan dizi kullanmadan
  • 11-11-2009, 14:24:04
    #6
    Üyeliği durduruldu
    Anladım, farklı şeyler düşünüyormuşuz. Tabiki array ihtiyacı varsa fonksiyonun array yollanır...

    func_num_args(), func_get_arg() fonksiyonları yavaşlıktan başka bir işe yaramaz sanırım array karşısında...

    Pointer döndürmek değilde eşitlemek gibi daha çok

    Array döndürmek dışında bir yol daha var json... json_encode ve json_decode yapabilirsiniz fonksiyondan birden fazla değer döndürmek için. Tabi ne kadar gereksiz ve hantal bir iş olacağı makul...
  • 11-11-2009, 14:37:08
    #7
    Üyeliği durduruldu
    _Janberka adlı üyeden alıntı: mesajı görüntüle
    json_encode ve json_decode yapabilirsiniz
    var_export, serialize, unserialize, json_encode , json_decode alternatif olarak sayilabilir.

    fonksiyonda tanimli parametrede işaretçi (&) kullaniladabilir. tabi bunlar çok uç noktada örnekler
  • 11-11-2009, 14:41:17
    #8
    Üyeliği durduruldu
    Doğru konudan saptık, kolay gelsin...
  • 11-11-2009, 16:47:15
    #9
    abiler php bilgim pek iyi değil yazdıklarınızı anlamakta zorluk çekiyorum :S

    fonksiyonda $parent ve $bolume gore işlem yapmaya çalışıyorum ve bunlarda değişiyor
    örnek olarak sinirsiz_kategori(1,2) diyede fonksiyonu çağırıyorum.

    kategorileri sıralıyor ama hata vererek