lostyazilim
tr.link

Php konusunda uzman aranıyor? Böyle birşey mümkünmü

17 Mesajlar 2.242 Okunma
acebozum
tr.link

xphp 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?
 

 

elektronikssl
webimgo

v4r1able v4r1able Coder Kullanıcı
  • Ü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
}
}

}
?>
xphp

kişi bu mesajı beğendi.

xphp 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.
 

 

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Ü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;
}
sworks xphp

kişi bu mesajı beğendi.


wmaraci
wmaraci

xphp 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)

Abdullahx adlı üyeden alıntı



$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;
}


Hocam Allah Razı olsun. Çok Teşekkür ederim. Gerçekten o kadar makbule geçtiki anlatamam. Veritabanıma yeni değişken ekledim. 11 ve 12 ; bunları hiç sayı kalmadı uyarısından sonra ekledim ve sayfayı yenilediğimde bu ikisini rasgele göstermedi. Bunu da yapabilir miyiz? yani veri tabanımı yeni rakam ve sayılar geldiğinde önceden göstermediği için yenileri gözükebilir mi_?

Gerçekten çok sağolun. İyi ki varsınız.
Abdullahx

kişi bu mesajı beğendi.

Ozi 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 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.
 

 

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Ü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.
xphp

kişi bu mesajı beğendi.


Abdullahx Abdullahx MW Aracı Kullanıcı
  • Ü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, '/');

xphp

kişi bu mesajı beğendi.


xphp 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.
Abdullahx

kişi bu mesajı beğendi.

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al