php kota oluşturma
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
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (10)
İ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;
Ö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ı.';
}
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.
}
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";
}
}
?>
@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.
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
}
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.