• 05-11-2012, 21:39:32
    #1
    while($row = mysql_fetch_array($sql)) {
    echo $row["id"] . "<br>";
    }
    burada $row değişkenini bir fonksyon içinde return etmek ve return ettğim yerde bir while döngüsü içinde kullanmak istiyorum, fakat ilk satırı verip sonsuz döngüye giriyor

    yani yapmaya çalıştığım olay şu
    function returnsql ()
    {
     //.....mysql kodları
    .
      return mysql_fetch_array($sql);
    }
    
    $a = returnsql ();
    
    while($a) {
    echo $a["id"] . "<br>";
    }
    yardımlarınızı bekliyorum

    saygılarımla..
  • 05-11-2012, 21:54:20
    #2
    bilgikar adlı üyeden alıntı: mesajı görüntüle
    while($row = mysql_fetch_array($sql)) {
    echo $row["id"] . "<br>";
    }
    burada $row değişkenini bir fonksyon içinde return etmek ve return ettğim yerde bir while döngüsü içinde kullanmak istiyorum, fakat ilk satırı verip sonsuz döngüye giriyor

    yani yapmaya çalıştığım olay şu
    function returnsql ()
    {
     //.....mysql kodları
    .
      return mysql_fetch_array($sql);
    }
    
    $a = returnsql ();
    
    while($a) {
    echo $a["id"] . "<br>";
    }
    yardımlarınızı bekliyorum

    saygılarımla..

    mysql_fetch_array her çalıştığında tek row fetch eder.
    fonksiyon içinde döngün olmadığı için tüm satırları döndüremezsin.
    fonksiyon içinde döngüye sokup bunu bir değişkene atman lazım.
    sonra değişkeni döndürürsün.

    function returnsql ()
    {
    //.....mysql kodları
    $say = 0;
    while($row = mysql_fetch_array($sql)){
    $degisken[$say] = $row;
    $say++;
    }
    return $degisken;
    }

    sonra
    $a = returnsql ();

    echo '<pre>';
    print_r($a);
    echo '</pre>';
  • 05-11-2012, 22:09:09
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    uğraşmak yerine Basit MySQL Sınıfı konumu incelemenizi tavsiye ederim.
  • 05-11-2012, 22:22:36
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    returnsql fonksionunuzda kullanacağınız query sadece 1 satırlık bir sonuc dönderiyor ise

    function returnsql () 
    { 
     //.....mysql kodları 
    . 
      return mysql_fetch_array($sql); 
    } 
    echo returnsql ()['id']; 
    //veya
    
    $a = returnsql();
    echo $a['id'];
    seklinde veriye ulaşabilirsiniz... ama istediğiniz 2 veya daha fazla satir ise
    digiklan'ın bahsettiği şekilde bir yapı oluşturmanız gerekmektedir..
  • 06-11-2012, 00:30:39
    #5
    Bilip bileden yazmayın diyorum her defasında, kafanıza göre çözümler üretiyorsunuz.

    Kardeşim sonsuz döngüye giriyor sen koşul mu belirttin ? Birisi de diyor ki bırak bunu benim kodu kullan.


    foreach kullan veya koşul ver while döngüsüne.

    fetch_array yerine fetch_assoc kullan daha az bellek kullanırsın.
  • 06-11-2012, 01:52:17
    #6
    Cycl0ne adlı üyeden alıntı: mesajı görüntüle
    Bilip bileden yazmayın diyorum her defasında, kafanıza göre çözümler üretiyorsunuz.

    Kardeşim sonsuz döngüye giriyor sen koşul mu belirttin ? Birisi de diyor ki bırak bunu benim kodu kullan.


    foreach kullan veya koşul ver while döngüsüne.

    fetch_array yerine fetch_assoc kullan daha az bellek kullanırsın.
    kodlara baktın mı?
    fonksiyonun dışında ne döngüsünü verirsen ver, ne koşulu verirsen ver o fonksiyon her çalıştığında içinden hep aynı tek satır kayıt döner.
    oradaki tek temel sorun sonsuz döngü değil...
  • 06-11-2012, 01:57:46
    #7
    digiklan adlı üyeden alıntı: mesajı görüntüle
    kodlara baktın mı?
    fonksiyonun dışında ne döngüsünü verirsen ver, ne koşulu verirsen ver o fonksiyon her çalıştığında içinden hep aynı tek satır kayıt döner.
    oradaki tek temel sorun sonsuz döngü değil...
    Verilen kodlara baktım ve tek temel sorun bu. Başka bir sorun yok Verilebilecek koşul da belli ki
    sıfıra tanımlanan ve +1 artan değişken < verisayısı

    veya
    list , each kullanmak
  • 06-11-2012, 02:18:59
    #8
    o zaman senin görmediğin sorunu anlatayım.

    eğer amaç sql tek row çekmekse zaten romansanta açıklamış döngüye de gerek yok.
    ama birden fazla satır çekilecekse döngü fonksiyonun içine girecek elemanlar fonksiyondan array halinde çıkacaktır.

    eğer fonksiyon içinde döngü kurulmazsa, fonksiyon dışındaki döngüde hangi koşulla kaç kez çalışırsa çalışsın fonksiyon tekrar tekrar mysql sorgusu yapıp sadece ilk satırı döndürecektir.

    istersen dene. ister fatch_array ister fetch_assoc kullan, ikisi de her çalıştığında tek satır fetch eder fonksiyondan hep ilk satır döner ve fonksiyon işlemi tamamlar. sen sadece bu tek satırlık tamamlanan işlemi tekrar tekrar yaptırırsın fonksiyon dışında kuracağın döngüyle.
  • 06-11-2012, 02:24:06
    #9
    digiklan adlı üyeden alıntı: mesajı görüntüle
    o zaman senin görmediğin sorunu anlatayım.

    eğer amaç sql tek row çekmekse zaten romansanta açıklamış döngüye de gerek yok.
    ama birden fazla satır çekilecekse döngü fonksiyonun içine girecek elemanlar fonksiyondan array halinde çıkacaktır.

    eğer fonksiyon içinde döngü kurulmazsa, fonksiyon dışındaki döngüde hangi koşulla kaç kez çalışırsa çalışsın fonksiyon tekrar tekrar mysql sorgusu yapıp sadece ilk satırı döndürecektir.

    istersen dene. ister fatch_array ister fetch_assoc kullan, ikisi de her çalıştığında tek satır fetch eder fonksiyondan hep ilk satır döner ve fonksiyon işlemi tamamlar.
    Tek değer döndürdüğünü unutmuşum.

    fetch_assoc($query)
    fonksiyonunun zaten çalışma prensibini bildiğim için kendim de örnek bir fonksiyon yazmıştım , gözden kaçmış