lostyazilim

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

17 Mesajlar 2.181 Okunma
lstbozum
wmaraci reklam

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)
Ben de teşekkür ederim, iyi kodlamalar :)
xphp

kişi bu mesajı beğendi.


wmaraci
reklam

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 = [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, '/');


Abdullahx Hocam bu kod işimi gördü tekrardan teşekkür ederim. Bir sorunum var.

Bu sayfamın başındaki $veritabanim değişkenimi farklı bir sayfadan çekiyorum.

3 Tane sayfam var. Yani 3 tane $vertabanim değişkeni.

1.sayfadaki

$veritabanim = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

2.sayfadaki

$veritabanim = [ 3, 4, 5];

3.sayfadaki

$veritabanim = [ 4, 5,6,7];

3 Adet buton var. 1.buton yazdığın koda 1.sayfadaki $veritabanim ı dahil ediyor.
2 buton sayfa 2 yi 3 buton sa sayfa 3 ü.

3. butona 4 sefere tıklandığında çekilen sayı bitiyor. Çok hoş. Diğer butona tıkladığında önceki sayfa gösterdiklerini tekrar gösteriyor ,göstermesin istiyorum. 3.butona bastık 2 kez 4,5 i gösterdi. diğer 2. butondaki $veritabim değişkeninden onları gösterdiği için tekrar göstermemesini nasıl yapabiliriz.

Kod daha önce ki istediğimi tıkır tıkır yapıyor, tekrardan Allah razı olsun. Dediğim şekilde yapımı mümkün mü? Kodun mimarı olarak yardımcı olabilir misin?
 

 

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)
Hocam bu kodları deneyin bakalım bir yerlerde hata verecek mi?


if ($_POST) {
if ($_POST['y'] == 1)
$veritabanim = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 19, 23, 31];
elseif ($_POST['y'] == 2)
$veritabanim = [2, 9, 6, 4, 12, 8, 11, 76, 3];
elseif ($_POST['y'] == 3)
$veritabanim = [3, 4, 9, 15, 18, 20, 1, 88, 99, 2];
} else
$veritabanim = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 19, 20, 21, 44, 96, 77];


if (isset($_COOKIE['rastgele'])) { // Eğer rastgele çerezi varsa
$oncekiVeri = json_decode($_COOKIE['rastgele'], 1); // Bütün veriyi alalım
$vt = array_values(array_unique(array_merge($veritabanim, $oncekiVeri['vt']))); //Sayfaya son gelen veri tabanı değişkeni ile çerezdeki veri tabanı değişkenini birleştirip düzenleyelim
$bulunanlar = $oncekiVeri['bulunanlar']; // Çerezdeki bulunan sayıları alalım
$kalanlar = $oncekiVeri['kalanlar']; // Çerezdeki kalan sayıları alalım
if (count(array_diff($veritabanim, $kalanlar))) { // Eğer son gelen veri tabanında kalan sayılardan farklı bir sayı gelirse onu da kalanlara ekle
foreach (array_diff($veritabanim, $kalanlar) as $item) {
if (!in_array($item, $bulunanlar))
$kalanlar [] = $item;
}
$kalanlar = array_unique($kalanlar); // Kalanlarda oluşlabilecek tekrarları engelle
}
}
else {
$vt = $veritabanim;
$bulunanlar = [];
$kalanlar = $veritabanim;
}

$son_kalanlar = array_filter($kalanlar, function ($item) use ($bulunanlar) {
return !in_array($item, $bulunanlar); // toplam sayılardan önceden bulunanları çıkartıyoruz
});
$son_kalanlar = array_values($son_kalanlar); // Son kalanları sıraya koyalım

if (count($son_kalanlar)) { // Eğer son kalanlarda eleman kaldıysa
$rastgele = $son_kalanlar[rand(0, count($son_kalanlar) - 1)]; // Rastgele sayı oluşturalım
$bulunanlar [] = $rastgele; // Bulduğumuz sayıyı bulunanlara ekleyelim
asort($bulunanlar); // Bulunanları sıraya koyalım
$key = array_search($rastgele, $son_kalanlar); // Bulduğumuz rastgele sayının key ini bulalım
unset($son_kalanlar[$key]); // Bulduğumuz rastgele sayıyı son kalanlardan silelim
$son_kalanlar = array_values($son_kalanlar); // Rstgele bulma işleminden sonra kalan sayıları sıralayalım

echo "Rastgele sayı: $rastgele
";

$datas = [
'vt' => $veritabanim,
'bulunanlar' => $bulunanlar,
'kalanlar' => $son_kalanlar
];

setcookie('rastgele', json_encode($datas), time() + 86400 * 10, '/');
} else {
echo 'Hiç sayı kalmadı';
}

?>











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 2. butona bastığımda 1. ve 3.butonla atması gereken değerleri atıyor.
 

 

wmaraci
wmaraci

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)
Beynim şu birkaç gündür çalışmıyor sanırım :) Şimdi olmuş olsa gerek

if (isset($_POST['temizle']))
setcookie('rastgele', false, time() - 3600, '/');

if (isset($_POST['y'])) {
if ($_POST['y'] == 1)
$veritabanim = [1,2,3,4,5,7,10,13];
elseif ($_POST['y'] == 2)
$veritabanim = [4,5,7,9,8,44,61];
elseif ($_POST['y'] == 3)
$veritabanim = [3, 4, 9, 61, 55];
} else
$veritabanim = [1, 2, 3, 4, 5, 6, 7, 8, 40];

if (isset($_COOKIE['rastgele'])) { // Eğer rastgele çerezi varsa
$oncekiVeri = json_decode($_COOKIE['rastgele'], 1); // Bütün veriyi alalım
$vt = array_values(array_unique(array_merge($veritabanim, $oncekiVeri['vt']))); //Sayfaya son gelen veri tabanı değişkeni ile çerezdeki veri tabanı değişkenini birleştirip düzenleyelim
$bulunanlar = $oncekiVeri['bulunanlar']; // Çerezdeki bulunan sayıları alalım
$kalanlar = $oncekiVeri['kalanlar']; // Çerezdeki kalan sayıları alalım
if (count(array_diff($veritabanim, $kalanlar))) { // Eğer son gelen veri tabanında kalan sayılardan farklı bir sayı gelirse onu da kalanlara ekle
foreach (array_diff($veritabanim, $kalanlar) as $item) {
if (!in_array($item, $bulunanlar))
$kalanlar [] = $item;
}
$kalanlar = array_unique($kalanlar); // Kalanlarda oluşlabilecek tekrarları engelle
}
}
else {
$vt = $veritabanim;
$bulunanlar = [];
$kalanlar = $veritabanim;
}

$son_kalanlar = array_filter($kalanlar, function ($item) use ($veritabanim) {
return in_array($item, $veritabanim);
});

$son_kalanlar = array_values($son_kalanlar); // Son kalanlarısıraya koyalım

if (count($son_kalanlar)) { // Eğer son kalanlarda eleman kaldıysa
$rastgele = $son_kalanlar[rand(0, count($son_kalanlar) - 1)]; // Rastgele sayı oluşturalım
$bulunanlar [] = $rastgele; // Bulduğumuz sayıyı bulunanlara ekleyelim
asort($bulunanlar); // Bulunanları sıraya koyalım
$key = array_search($rastgele, $son_kalanlar); // Bulduğumuz rastgele sayının key ini bulalım
unset($son_kalanlar[$key]); // Bulduğumuz rastgele sayıyı son kalanlardan silelim
$son_kalanlar = array_values($son_kalanlar); // Rstgele bulma işleminden sonra kalan sayıları sıralayalım

echo "Rastgele sayı: $rastgele
";

$datas = [
'vt' => $veritabanim,
'bulunanlar' => $bulunanlar,
'kalanlar' => $son_kalanlar
];

setcookie('rastgele', json_encode($datas), time() + 86400 * 10, '/');
} else {
echo 'Hiç sayı kalmadı';
}

?>














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)
Estağfurullah, zat-ı alinize duacıyım. Bıkmadan usanmadan insanlara cevap veriyor olmanız takdire şayan. Çok teşekkür ederim. Kod sistematik bir şekilde çalışıyor. Abdullahx
Abdullahx

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)
Teşekkür ederim :)
xphp

kişi bu mesajı beğendi.


wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al