xphp
WM Aracı
Kullanıcı
-
Üyelik
11.04.2020
-
Yaş/Cinsiyet
22 / E
-
Meslek
Öğrenci
-
Konum
Sakarya
-
Ad Soyad
M** B**
-
Mesajlar
39
-
Beğeniler
31 / 9
-
Ticaret
0, (%0)
$veritabanim = array(1,2,3,4,5,6,7,8,9);
$kullanici = array(); //kullanıcının cookie'lerinden gelecek sayı dizisi
$fark = array_diff($veritabanim, $kullanici);
$sayi=count($fark);
if($sayi==0){
echo "Tüm Sayıyı Çektin "; }
else{
$frasgele = array_rand($fark,1);
echo $fark[$frasgele];
}
?>
Yapılmak istenen kullanıcı sayfaya girdiğinde 1 ile 9 rakamlarından birini ekrana yazdıracak ve sonucu cookilerde kullanici dizinine kaydetecek. sayfa her yenilendiğinde çekilecek sayılar bir bir azalacak ve sonunda "Tüm Sayıyı Çektin" yazacak. Cookie ler dizi oluşturup her yenilemede diziye bir önceki sonucu kaydetmek nasıl yapılır?
-
Üyelik
04.04.2020
-
Yaş/Cinsiyet
19 / E
-
Meslek
Kodlama
-
Konum
İstanbul Avrupa
-
Ad Soyad
L** P**
-
Mesajlar
160
-
Beğeniler
45 / 57
-
Ticaret
1, (%100)
//istenilen sayfa her yenilendiğinde rastgele sayı gösterilecek. Önceki sayfa yenilemelerinde gösterdiği sayıyı bir daha göstermemesi.
$veritabanim = [1,2,3,4,5,6,7,8,9,10]; //veri tabanından gelecek sayı dizisi
//çerez sorgusu yapılacak eğer katıylı veri varsa $kullanıcı dizisine atılacak.
$kullanici = []; //kullanıcının çerez'lerinden gelecek sayı dizisi
echo "
";
if($veritabanim == $kullanici){
echo "Çekilecek Başka Sayı Kalmadı "; }
else{
$fark = array_diff($veritabanim, $kullanici);
$frasgele = array_rand($fark,1);
//$fark[frasgele]; ile ekrana yazdıracağı sayı kullanicinın çerez dizinine kaydedip bir daha karşısına gelmesini engellemek.
$eski_sayi = $_COOKIE["eski_sayi"];
if(empty($eski_sayi)) { // cookie daha oluşmamışsa işlem yapıyor
setcookie("eski_sayi", $fark[$frasgele]);
echo $fark[$frasgele];
} else { // cookie oluşmuşsa if ile eşdeğer döngüsü yapalım
if($eski_sayi==$fark[$frasgele]) { // eski sayi ile randomdan gelen sayı aynısı ise
// tekrardan bir random oluştur buraya
setcookie("eski_sayi", $tekrardanrandom); // yeni olusturulan randomu kaydet
} else { // random ile eski sayı aynı değil ise
//burada random ile eski sayı aynı değil ise hangi işlem yapılacağını yaz
setcookie("eski_sayi", $fark[$frasgele]); // ve randomu tekrardan kaydet
}
}
}
?>
1 kişi bu mesajı beğendi.
xphp
WM Aracı
Kullanıcı
-
Üyelik
11.04.2020
-
Yaş/Cinsiyet
22 / E
-
Meslek
Öğrenci
-
Konum
Sakarya
-
Ad Soyad
M** B**
-
Mesajlar
39
-
Beğeniler
31 / 9
-
Ticaret
0, (%0)
Hocam yardımın için çok teşekkür ederim. Lakin yapamadım. İstediğim dizim de rakam ve sayı var.
Sayfa yenilediğimde 10 çıktı bir daha yenilediğimdem kalan 9 tanesinin içinden random çekecek ve her yenilemede azalacak ve sonunda bitip çekilecek sayı kalmadı yazacak.
-
Üyelik
03.04.2019
-
Yaş/Cinsiyet
29 / E
-
Meslek
.
-
Konum
Trabzon
-
Ad Soyad
A** K**
-
Mesajlar
905
-
Beğeniler
393 / 395
-
Ticaret
3, (%100)
$veritabanim = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
if (isset($_COOKIE['veritabanim'])) {
if ($_COOKIE['veritabanim'] == 'bitti') {
$al = 'Hiç sayı kalmadı';
} else {
$al = json_decode($_COOKIE['veritabanim'], 1);
}
} else {
$al = $veritabanim;
}
if (is_array($al)) {
$rastgele = $al[rand(0, count($al) - 1)];
echo 'Rastgele sayı: '.$rastgele;
$key = array_search($rastgele, $al);
unset($al[$key]);
if (count($al) == 0) {
$son_hali = 'bitti';
} else {
$son_hali = array_values($al);
$son_hali = json_encode($son_hali);
}
setcookie("veritabanim", $son_hali, time() + 86400 , '/');
} else {
echo $al;
}
2 kişi bu mesajı beğendi.
Ozi
.
Kullanıcı
-
Üyelik
10.12.2012
-
Yaş/Cinsiyet
29 / E
-
Meslek
Devoloper
-
Konum
Almanya
-
Ad Soyad
H** K**
-
Mesajlar
3052
-
Beğeniler
1 / 941
-
Ticaret
50, (%100)
Veritabanındaki veri kadar kadar değişkene atama yapmalısınız bu koda göre 11 ve 12 değişkenlerini $veritabanım değişkenine tanımlamazsanız yazdırmaz.
xphp
WM Aracı
Kullanıcı
-
Üyelik
11.04.2020
-
Yaş/Cinsiyet
22 / E
-
Meslek
Öğrenci
-
Konum
Sakarya
-
Ad Soyad
M** B**
-
Mesajlar
39
-
Beğeniler
31 / 9
-
Ticaret
0, (%0)
$veritabanim değişkenine tanımlıyorum. Lakin bunu Hiç sayı kalmadı uyarısından sonra yaptığım için midir bilmem sayfayı yenilediğimde hiç sayı kalmadı uyarası devam ediyor. Lakin Çerezleri silersem ve tekrar başladığımda. yeni eklenen veriler karşıma geliyor.
Çerezleri silmeden eklediğim değişken kadar devam ettirebilir miyim? Onun için ne yapmam gerekiyor.
-
Üyelik
03.04.2019
-
Yaş/Cinsiyet
29 / E
-
Meslek
.
-
Konum
Trabzon
-
Ad Soyad
A** K**
-
Mesajlar
905
-
Beğeniler
393 / 395
-
Ticaret
3, (%100)
Rica ederim hocam, Allah sizden de razı olsun. Yapılır diğeri de elbette, ne şekilde yapılacağına düşünüp karar verdikten sonra o da kolay. Yapınca yazarım buraya.
1 kişi bu mesajı beğendi.
-
Üyelik
03.04.2019
-
Yaş/Cinsiyet
29 / E
-
Meslek
.
-
Konum
Trabzon
-
Ad Soyad
A** K**
-
Mesajlar
905
-
Beğeniler
393 / 395
-
Ticaret
3, (%100)
Tek bir cookie üzerinde de tutulabilirdi aslında çok boyutlu dizi haline getirilip ama bir tane daha cookie oluşturmak sorun olmaz heralde. önce bütün sayıları kontrol edip bitirin, sonra $veritabanim değişkenine başka sayılar da ekleyin sonradan öyle deneyin sonra da
$veritabanim = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
if (isset($_COOKIE['kalanlar'])) {
$hepsi = json_decode($_COOKIE['veritabanim'], 1);
if (count(array_diff($veritabanim, $hepsi))) {
$al = [];
foreach (array_diff($veritabanim, $hepsi) as $item) {
$al [] = $item;
}
$al = array_unique($al);
}
elseif ($_COOKIE['kalanlar'] == 'bitti') {
$al = 'Hiç sayı kalmadı';
} else {
$al = json_decode($_COOKIE['kalanlar'], 1);
}
} else {
$al = $veritabanim;
}
if (is_array($al)) {
$rastgele = $al[rand(0, count($al) - 1)];
echo 'Rastgele sayı: '.$rastgele;
$key = array_search($rastgele, $al);
unset($al[$key]);
if (count($al) == 0) {
$son_hali = 'bitti';
} else {
$son_hali = array_values($al);
$son_hali = json_encode($son_hali);
}
setcookie("kalanlar", $son_hali, time() + 86400 , '/');
} else {
echo $al;
}
setcookie('veritabanim', json_encode($veritabanim), time()+86400, '/');
1 kişi bu mesajı beğendi.
xphp
WM Aracı
Kullanıcı
-
Üyelik
11.04.2020
-
Yaş/Cinsiyet
22 / E
-
Meslek
Öğrenci
-
Konum
Sakarya
-
Ad Soyad
M** B**
-
Mesajlar
39
-
Beğeniler
31 / 9
-
Ticaret
0, (%0)
Ne kadar çok teşekkür etsem az. Değerli vaktinizi ayırıp sorunumu çözüme kavuşturduğunuz için çok teşekkür ederim.
1 kişi bu mesajı beğendi.