v2.5.2
Giriş yap

php kota oluşturma

emmir2
530 defa görüntülendi ve 1 kişi tarafından değerlendirildi

merhaba bir Başvuru Formum var 60 ana başvuru 20 ek kontenjan olacak şekil de 80 veride sınırlandırmak istiyorum yardımlarınızı bekliyorum

Cevap yaz
Cevaplar (10)
h4ckdr0
705 gün önce

İkinci sorunuz için önerim:

<?php
// Başvuruları sayarak, ilk 32 kaydın kaydedildiğini kontrol ediyoruz
$asil_basvurular = $db->query("SELECT * FROM basvurular WHERE durum = 'asil'")->fetchAll();
$toplam_asil_basvuru = count($asil_basvurular);

// Başlangıçta tüm başvurular asıl liste için kaydediliyor
// İlk 32 kaydın dolu olduğu durumda, başvurular yedek liste olarak kaydediliyor
$durum = ($toplam_asil_basvuru <= 32 ? 'asil' : 'yedek');

// Veritabanına başvuru kaydı eklemek için kullanılacak sorgu hazırlanıyor
$islem = $db->prepare("INSERT INTO basvurular SET ad = ?, soyad = ?, email = ?, turnuva = ?, durum = ?");
// Formdan gelen bilgilerle sorgu çalıştırılıyor
$islem->execute([$_POST['ad'],  $_POST['soyad'], $_POST['email'], $_POST['turnuva'], $durum]);

if ($islem) {
    if ($toplam_asil_basvuru <= 32) {
        // İlk 32 kaydın kaydedildiği durumda, kullanıcıya bir onay mesajı gönderiyoruz
        mail($_POST['email'], "Turnuva Başvurunuz Kabul Edildi", "Başvurunuz turnuva için kabul edilmiştir. Detaylar için lütfen mailinizi kontrol ediniz.");
    } else {
        // İlk 32 kaydın dolu olduğu durumda, başvuruları yedek liste olarak kaydediyoruz
        $db->query("UPDATE basvurular SET durum = 'yedek' WHERE durum = 'asil'");
        // Kullanıcıya yedek liste bilgisi gönderiyoruz
        mail($_POST['email'], "Turnuva Başvurunuz Yedek Listesinde", "Maalesef bu turnuvada yer kalmadı. Ancak yedek listemizde bulunuyorsunuz. Eğer birisi iptal ederse yer açılacaktır.");
    }
}
header('Location: index.php?durum=ok');
exit;
h4ckdr0
705 gün önce

Öncelikle, başvuru formunuzun veri girişini sınırlandırmak için bir "sayaç" oluşturmanız gerekecektir. Bu sayaç, başvuru formunu dolduran kullanıcıların sayısını tutacak ve bu sayı, 80'e ulaştığında başvuru formunun daha fazla doldurulmasını engellenmesi gerektiğini bildirecektir.

Bu sayacı tutmak için bir veritabanı kullanabilirsiniz. Veritabanınızda bir "sayac" tablosu oluşturarak, bu tablonun bir sütununu "sayac" olarak adlandırabilirsiniz ve başvuru formunu dolduran her kullanıcı için bu sütunu 1 arttırabilirsiniz.

Daha sonra, başvuru formunu dolduran her kullanıcı için veritabanınızı kontrol ederek "sayac" sütunundaki değeri 80'e ulaştığını kontrol edebilirsiniz. Eğer 80'e ulaşmışsa, başvuru formunun daha fazla doldurulmasını engelliyebilirsiniz.

Örnek bir PHP kodu aşağıdaki gibidir:

// Başvuru formunu dolduran kullanıcının verilerini kaydetmeyi deniyoruz
if (isset($_POST['submit'])) {
  // Veritabanına bağlanıyoruz
  $db = new mysqli('localhost', 'kullanici_adi', 'sifre', 'veritabani_adi');

  // Veritabanındaki "sayac" tablosunun sayısını öğreniyoruz
  $sayac = $db->query('SELECT COUNT(*) AS sayi FROM sayac')->fetch_object()->sayi;

  // Eğer sayaç 80'e ulaşmışsa, formu doldurmayı engelliyoruz
  if ($sayac >= 80) {
    die('Üzgünüz, başvuru formu kapatılmıştır.');
  }

  // Veritabanındaki "sayac" tablosunun sayısını 1 arttırıyoruz
  $db->query('UPDATE sayac SET sayac = sayac + 1');

  // Başvuru formunun verilerini veritabanına kaydediyoruz
  // #code...
  
  // Kullanıcıya başarılı bir şekilde kaydedildiğini bildiriyoruz
  echo 'Başvurunuz başarıyla alındı.';
}
serkan
728 gün önce

,COUNT ile bugünkü verileri saydir donen deger false ise kayit formunu goster degilse uyarı bas geç
,,SELECT COUNT(ADDDATE) FROM TABLENAME

gokcin
728 gün önce

Merhaba,
Günlük kayıt yaparken turnuva sql alanına kayıt tarihi açman lazım. Eğer bugünün tarihi ile kayıt listesi varsa işleme devam edersin.

$bugun_tarih = date('Y-m-d');
$query = $db->query("SELECT * FROM turnuva WHERE kayit_tarih='{$bugun_tarih}' LIMIT 64", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){

  // Kayıt işlemi yap
}else{
  //Günlük limit uyarı ver.
}
emmir2
729 gün önce

buna fikri olan var mı

emmir2
729 gün önce
Hergün 64 başvuru kayıt edecek
Her yeni günde İlk 32 den sonra gönderilecek mail yedek listesindesiniz olarak iletilecek bunu nası yapabilirim
<?php
$turnuva=$db->prepare("SELECT * FROM turnuva ");
$turnuva->execute(array());
$toplam_basvuru=$turnuva->rowCount();

  if (isset($_POST['basvurus'])) {
    $islem= $db->prepare("INSERT INTO basvurular SET
 ad = ?,
  soyad = ?,
 email = ?,
 turnuva = ?");
 $islem = $islem->execute(array(
 $_POST['ad'],
 $_POST['soyad'],
 $_POST['email'],
 $_POST['turnuva'],));
 if ($islem) {
 Mail İşlemi
 header('Location:index.php?durum=ok');
 }else{
 echo "başarısız";
}
 }
?>
ersiin
730 gün önce

@spleidanger arkadaşın dediği şekilde yaptıktan sonra formdan gelen verileri post olarak alırken yine bu veritabanında kaç veri olduğuna bakıp aynı kontrolü yapmalısın. Arkadaşın dediği sadece form elemanlarını sayfada göstermemeye yarar. Başvuru açıkken sayfanı kopyalamış olan biri bu sayfayı localinde çalıştırıp sayfana post atarsa yine veri eklenebilir. Buna da dikkat etmelisin.

spleidanger
731 gün önce

Dostum veritabanındaki başvuruları rowCount fonksiyonu ile bi değişkene aktarıp daha sonra koşul vericeksin.
Senin kodlarını göremediğimiz için sana mantığını yazdım nasıl yapabileceğini gerisi senin yazılım bilgine kalmış bir şey

if ($toplam_basvuru>=80)
{
    echo "yeni başvuru kabul edilmyior";
}
else
{
    echo "başvurular açık";
    // başvuur ile ilgili kodlar
}
gokcin
731 gün önce

Eğer kayıtlarını bir veritabanında tutuyorsan, tuttuğun tablodan veri sayısı alıp limitleme yapabilirsin.

> Kayıtlar tablosunun listeleme sayısını alıp kayıt işlemi esnasında kayıt tablosundan aldığın sayı değer senin verdiğin sayıdan büyük ise kayıt işlemini engelleye bilirsin.

emmir2
731 gün önce

fikri olan yok mu