• 21-01-2019, 16:16:16
    #1
    PHP - WORDPRESS - YAZILIM
    Tam başlık nasıl olmalı bilmiyorum ama asıl sorunum

    Bir Dizim ve bu dizinden rastgele numara çekiyorum her istek yapıldığında gelen numarayı tablomda sorgulayarak varmı yokmu diye kontrol ediyorum.

    Eğer ilgili numara tabloda yok ise tabloya kayıt ediyorum. işleme devam ediyorum.

    Fakat sorun şu ki, örneğin rastgele numara çektiğimde bir sonraki sefere aynı numaranın gelme olasılığı mevcut bunuda if else ile kontrol ediyorum ama istiyorum ki else kısmında numara bittiyse bir sonraki numaraya geçiş yapabilsin.

    Örnek Kodlama şu şekilde;

    // Array ile ilgili veriler buradan yukarıda kalan kısımdan gelmektedir, yani bir dizim mevcut.
    
    $random_keys=array_rand($result,1);
    $arr = $result[$random_keys];
    $p = $arr['number']; // Tek Bir Numara getirdim rastgele.
    
    // Veritabanını sorguladım. Gelen Numara Bugünün tarihinde tabloda mevcut mu diye.
    date_default_timezone_set('Europe/Istanbul');
    $d = date('Y-m-d');
    $check = mysqli_query($conn, "SELECT * FROM havuz_sorgu WHERE medical_number='$p' and medical_date='$d'");
    $row = mysqli_fetch_array($check);
    
    // Buraya gelince eğer ki numara yeni ise; yani sorgum boş dönüyorsa veritabanına kayıt işlemi yapıyorum.
    if (empty($row)){
    $sql = "INSERT INTO havuz_sorgu  (medical_date, medical_number)  VALUES  ('$d', '$p')";
    if ($conn->query($sql) === TRUE) {
    $item = array();
    $item['number'] = $p;
    $veri1[] = $item;
    $jSon = json_encode($veri1);
    print_r($jSon);
    }
    } else {
    echo 'Data Bitti';
    }
    Fakat anlattığım gibi aynı numara geldiğinde data bitti demesi yerine bir sonraki numaraya geçmesini istiyorum fakat yapamıyorum ? bu konuda yardıma ihtiyacım var teşekkürler.
  • 21-01-2019, 16:33:56
    #2
    Platin üye
    goto kullanabilirsin

    burayagit:
    if (..) {
    }
    else {
    goto burayagit;
    }

    ya da tüm kodunu fonksiyon içine alıp, else içinde fonksiyonu tekrar çağırabilirsin.
  • 21-01-2019, 17:19:52
    #3
    metin_nn adlı üyeden alıntı: mesajı görüntüle
    Tam başlık nasıl olmalı bilmiyorum ama asıl sorunum

    Bir Dizim ve bu dizinden rastgele numara çekiyorum her istek yapıldığında gelen numarayı tablomda sorgulayarak varmı yokmu diye kontrol ediyorum.

    Eğer ilgili numara tabloda yok ise tabloya kayıt ediyorum. işleme devam ediyorum.

    Fakat sorun şu ki, örneğin rastgele numara çektiğimde bir sonraki sefere aynı numaranın gelme olasılığı mevcut bunuda if else ile kontrol ediyorum ama istiyorum ki else kısmında numara bittiyse bir sonraki numaraya geçiş yapabilsin.

    Örnek Kodlama şu şekilde;

    // Array ile ilgili veriler buradan yukarıda kalan kısımdan gelmektedir, yani bir dizim mevcut.
    
    $random_keys=array_rand($result,1);
    $arr = $result[$random_keys];
    $p = $arr['number']; // Tek Bir Numara getirdim rastgele.
    
    // Veritabanını sorguladım. Gelen Numara Bugünün tarihinde tabloda mevcut mu diye.
    date_default_timezone_set('Europe/Istanbul');
    $d = date('Y-m-d');
    $check = mysqli_query($conn, "SELECT * FROM havuz_sorgu WHERE medical_number='$p' and medical_date='$d'");
    $row = mysqli_fetch_array($check);
    
    // Buraya gelince eğer ki numara yeni ise; yani sorgum boş dönüyorsa veritabanına kayıt işlemi yapıyorum.
    if (empty($row)){
    $sql = "INSERT INTO havuz_sorgu  (medical_date, medical_number)  VALUES  ('$d', '$p')";
    if ($conn->query($sql) === TRUE) {
    $item = array();
    $item['number'] = $p;
    $veri1[] = $item;
    $jSon = json_encode($veri1);
    print_r($jSon);
    }
    } else {
    echo 'Data Bitti';
    }
    Fakat anlattığım gibi aynı numara geldiğinde data bitti demesi yerine bir sonraki numaraya geçmesini istiyorum fakat yapamıyorum ? bu konuda yardıma ihtiyacım var teşekkürler.
    merner adlı üyeden alıntı: mesajı görüntüle
    goto kullanabilirsin

    burayagit:
    if (..) {
    }
    else {
    goto burayagit;
    }

    ya da tüm kodunu fonksiyon içine alıp, else içinde fonksiyonu tekrar çağırabilirsin.

    @merner; hocama katılmakla birlikte;
    Anladıgım kadarıyla dizideki 1 numara 1 kere gelsin diyorsunuz.
    bunun için numarayı çektikten sonra, bu numarayı diziden silebilirsiniz - ki gereksiz yere tekrardan db ye sorgu atmazsınız ve dizinizde 10 eleman varsa kod 10 kere cagrilir, else kısmına dusmez, recursive olarak fonksiyonu yazip kullanabilirsiniz.
    Bu kodla getirilen numarayı diziden silebilirsiniz. unset($result[$random_keys]);
  • 21-01-2019, 17:58:45
    #4
    PHP - WORDPRESS - YAZILIM
    Wtapostar adlı üyeden alıntı: mesajı görüntüle
    @merner; hocama katılmakla birlikte;
    Anladıgım kadarıyla dizideki 1 numara 1 kere gelsin diyorsunuz.
    bunun için numarayı çektikten sonra, bu numarayı diziden silebilirsiniz - ki gereksiz yere tekrardan db ye sorgu atmazsınız ve dizinizde 10 eleman varsa kod 10 kere cagrilir, else kısmına dusmez, recursive olarak fonksiyonu yazip kullanabilirsiniz.
    Bu kodla getirilen numarayı diziden silebilirsiniz. unset($result[$random_keys]);
    Beklerken bende buna benzer bir çözüm ürettim hocam yinede teşekkür ederim en mantıklı çözüm bu olacak ki, sorguyuda giderek azaltmak daha mantıklı oldu tekrardan çok teşekkür ederim ilgilendiğiniz için sonsuz teşekkürler.
  • 21-01-2019, 18:09:08
    #5
    metin_nn adlı üyeden alıntı: mesajı görüntüle
    Beklerken bende buna benzer bir çözüm ürettim hocam yinede teşekkür ederim en mantıklı çözüm bu olacak ki, sorguyuda giderek azaltmak daha mantıklı oldu tekrardan çok teşekkür ederim ilgilendiğiniz için sonsuz teşekkürler.

    Ben teşekkür ederim hocam ne demek.
    İyi çalışmalar dilerim.