-
Üyelik
26.06.2018
-
Yaş/Cinsiyet
43 / E
-
Meslek
Mühendis
-
Konum
Adana
-
Ad Soyad
A** B**
-
Mesajlar
5
-
Beğeniler
1 / 0
-
Ticaret
0, (%0)
Merhaba arkadaşlar. Geç oldu ama sonunda yazılım işi yapan arkadaşlar sayesinde PHP öğrenmeye başladım. Çünkü parasıyla bile iş yaptıramadım. Ben de azimle çıktım yola ve bir çok işimi hallediyorum. Dolaylı yoldan oluyor ama sonuca varabiliyorum. İşimi görüyor yani. Tabi wmaraci sitesinin hakkını yememeliyim. Bu güzel kaynağın içinde bulunan her bireye ayrı ayrı teşekkür ediyorum. Sayenizde oluyor ne yapıyorsam.
Uzatmadan tıkandığım noktaya geleyim. Tıkanmasam zaten konu açmazdım emin olun.
Bir tablom var. Adı tablo ve şu şekilde;
s1 s2
--- ---
1 2
1 3
1 4
2 3
Bu tabloyu göz önünde bulundurarak random sayı gurubu üretmek istiyorum. Yani gördüğünüz tablo için söyleyecek olursam;
$s1 = rand(1,4)
$s2 = rand(1,4)
yaparak sayı üretmek ancak veritabanındaki tablo'da bulunan değerlerin dışında bir değer üretmek istiyorum. Yani... Örnek tabloya göre çıkacak sonuç
$s1 = 2
$s2 = 4
ya da
$s1 = 3
$s2 = 4
olabilir.
Random oluşturmak istediğim rakam hem veritabanındaki tablo'da kayıtlı olmayacak hem de $s1 ve $s2 eşit olmayacak.
Umarım derdimi anlatabilmiş ve fazla laf kalabalığı yapmamışımdır.
Üstatlarımdan yardımlarını bekliyorum.
Saygılarımla.
-
Üyelik
18.10.2017
-
Yaş/Cinsiyet
38 / E
-
Meslek
Web ve Masaüstü programlama
-
Konum
İstanbul Anadolu
-
Ad Soyad
B** A**
-
Mesajlar
502
-
Beğeniler
118 / 163
-
Ticaret
0, (%0)
Bir while dongusu kur ve tablodaki sayilari cek eger gercekten farkli bir sayi cikarsa while degiskenini bir arttir bu sayede kac tane uretmek istiyorsan o kadar farkli sayi uretebilirsin :)
Her Türlü Stabil Bot! | İnstagram, Twitter, Whatsapp ve daha fazlası için PM!
-
Üyelik
22.12.2017
-
Yaş/Cinsiyet
24 / E
-
Meslek
Öğrenci
-
Konum
Aydın
-
Ad Soyad
İ** Ş**
-
Mesajlar
4598
-
Beğeniler
1727 / 1541
-
Ticaret
15, (%100)
Merhaba,
https://stackoverflow.com/questions/4173867/random-number-in-range-min-max-using-php
https://www.thoughtco.com/rand-php-function-2694085
Buraları kaynak olarak kullanabilirsiniz.
Herkez hata yapabilir, pardon herkes. | ibocum.com
-
Üyelik
26.06.2018
-
Yaş/Cinsiyet
43 / E
-
Meslek
Mühendis
-
Konum
Adana
-
Ad Soyad
A** B**
-
Mesajlar
5
-
Beğeniler
1 / 0
-
Ticaret
0, (%0)
Hızlı cevaplarınız için çok teşekkür ederim.
tam olarak derdimi anlatamadım sanırım. Bu bahsettiğiniz işlemleri denedim ve inceledim. Benim istemiş olduğum sonucu vermiyor.Benim istediğim s1 ve s2 üreteyim ama hem yeni ürettiğim s1 ve s2 birbirinden farklı olsun hem de veritabanında kayıtlı olmasın.
s1 ve s2 unutalım. Ben onları birleştirip aralarına tire "-" koyarak veritabanındaki tablo'ya tek parça olarak atarım.Tablomuzu şöyle yapsak daha iyi anlatabilirim derdimi sanırım.
dizi
---
1-2
1-3
1-4
2-3
tabloda eksik olan , 1 ve 4 ile oluşabilecek random, birbirinden farklı ve (sanırım bu kısmı atladım) küçükten büyüğe sıralı iki değer var 2-4 ve 3-4. İşte ben bu iki değerden birini üretmek istiyorum. Umarım bu sefer anlatabilmişimdir. ;)
-
Üyelik
25.10.2015
-
Yaş/Cinsiyet
30 / E
-
Meslek
Computer Science
-
Konum
İstanbul Anadolu
-
Ad Soyad
Y** A**
-
Mesajlar
71
-
Beğeniler
1 / 19
-
Ticaret
0, (%0)
İstediğin şeyi yanlış anlamadıysam eğer; bu durumda önce 1. sayıyı istediğin aralıkta while döngüsü ile eşit olmaması gereken sayılarla karşılaştırarak rastgele üretebilirsin. Ardından 1. sayı üretildikten sonra 2. sayı 1. sayıdan büyük olacağı için
$s2'yi $s2 = rand(1,4) yerine $s2 = rand($s1+1, 4) şeklinde tekrar üretmeyi deneyebilirsin.
-
Üyelik
26.06.2018
-
Yaş/Cinsiyet
43 / E
-
Meslek
Mühendis
-
Konum
Adana
-
Ad Soyad
A** B**
-
Mesajlar
5
-
Beğeniler
1 / 0
-
Ticaret
0, (%0)
İlgi ve alakalarınız için tekrar teşekkür ederim. Kendi çapımda bir şeyler yapmaya çalıştım. Malum PHP dilini hiç bilmeyen biri için büyük başarı :)
Aşağıdaki kodlarla rastgele sayı dizisini oluşturabiliyorum. Küçükten büyüğe, önlerine "." nokta koydurarak ve birbirinden farklı sayı dizisi.
Veritabanından tablo'da bulunan değerleri de aynı bu üretilen sayı gibi kaydettirdim. Yani tablo şöyle oldu;
s1
---
1.2.
1.3.
1.4.
2.3.
Bu verileri de çekip listeleyebildim. Şimdi bu listelediğim değerlerle ürettiğim değeri karşılaştırıp eğer eşitse döngü başa dönse, değilse veritabanına kaydetse diye uğraşıyorum ama yapamıyorum. Yardımlarınızı bekliyor saygılar sunuyorum.
do
{
$a=rand(1,4);
$b=rand(1,4);
}
while ($a==$b) ;
$sayi = array($a,$b);
$dizi_sayisi = count($sayi);
for ( $i = 0; $i < $dizi_sayisi; $i++ )
for ( $i = 0; $i < $dizi_sayisi; $i++ )
{
for ($j = 0; $j < $dizi_sayisi; $j++ )
{
if ($sayi[$i] < $sayi[$j])
{
$bellek = $sayi[$i];
$sayi[$i] = $sayi[$j];
$sayi[$j] = $bellek;
}
}
}
for( $i = 0; $i < $dizi_sayisi; $i++ )
print_r ($sayi[$i]."."); // Rastgele sayı dizisini oluşturabiliyorum.
echo "
";
$sayilist = $db->query("SELECT s1 FROM tablo ORDER BY s1 ASC");
while ($list = $db->fetch_array($sayilist)) {
$kiyaslist = "" . $list['s1'] . ",";
echo "" . $list['s1'] . ","; // veritabanı tablo'da bulunan s1 değerlerini sıralayabiliyorum.
}
-
Üyelik
26.06.2018
-
Yaş/Cinsiyet
43 / E
-
Meslek
Mühendis
-
Konum
Adana
-
Ad Soyad
A** B**
-
Mesajlar
5
-
Beğeniler
1 / 0
-
Ticaret
0, (%0)
Arkadaşlar kendi sorunumu kendim çözdüm. ": D. Sizlere de çok teşekkür ederim ilgilendiğiniz için. Belki faydası olur diye çözümü paylaşmak istedim. Biraz fazla amatörce gelebilir ama benim elimden gelen bu kadar "; )
tablo
s1
-----
1.2
1.3
1.4
2.3
burada olabilecek 2.3 ve 3.4 değerleri. Aşağıdaki kodlarla hedefime ulaştım.
do // burada 2 random sayımızı üretmeye başladım.
{
$a=rand(1,4);
$b=rand(1,4);
}
while ($a==$b) ; // eşit olmamalarını sağladım.
$sayilar=array($a,$b);
sort($sayilar); // küçükten büyüğe sıraladım.
$kontrol = "" . $sayilar[0] . "." . $sayilar[1];
// kontrol için sayıları veritabanındaki tabloda bulunan değerle aynı hale getirdim. 1.2 veya 2.3 gibi
$sonuc=$kontrol; //sonucu kontrol ettirdim.
$cond=True;
while($cond){
$query = "SELECT * FROM tablo WHERE s1 = '$sonuc'";
$result = $db->query($query);
// veritabanında o değer var mı diye baktım.
if(mysql_num_rows($result)>0)
{
do // varsa başa döndüm.
{
$a=rand(1,4);
$b=rand(1,4);
}
while ($a==$b) ;
$sayilar=array($a,$b);
sort($sayilar);
$kontrol = "" . $sayilar[0] . "." . $sayilar[1];
$sonuc=$kontrol;
}
else
{
$cond=False;
}
}
echo "
";
echo $sonuç; //yoksa yeni değer oluştu ve yazdırdım.
Tabi arada bazı işlemlerde var. Hazır bir kodu düzenlediğim için ne yaptığımı bende bilmiyorum ;D
-
Üyelik
11.05.2013
-
Yaş/Cinsiyet
32 / E
-
Meslek
Geliştirici
-
Konum
Malatya
-
Ad Soyad
E** K**
-
Mesajlar
3142
-
Beğeniler
60 / 764
-
Ticaret
5, (%100)
Bu kadar kod yazman gereksiz. Genelde bu tür random sayılar için zamanı baz alarak üretmek en mantıklısıdır.
Örnek olarak internette bulduğum bir kod:
$key = microtime() + floor(rand()*10000);
-
Üyelik
26.06.2018
-
Yaş/Cinsiyet
43 / E
-
Meslek
Mühendis
-
Konum
Adana
-
Ad Soyad
A** B**
-
Mesajlar
5
-
Beğeniler
1 / 0
-
Ticaret
0, (%0)
Gereksiz kalabalık olabilir. Benim işimi görmesi önemli benim için. Daha kolayı varsa bilemem ama bu benim işimi gördüğü için şimdilik sorun yok. Bakalım bu döngüyü kayıt sayısı çoğalınca nasıl yaparım. Beni düşündüren o ";)