Şimdi Ara

PHP formdan gelmeyen $_POSTU yoksayma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
8
Cevap
0
Favori
595
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba. Ben kendimce bir script geliştiriyorum. Fakat bi yerde sorun yaşıyorum. Kişilerin hesabını tutmak için hesaplar diye bir tablom var ve içerisinde hesap_id(AUTO_INCREMENT), kisi_id, hesap_gelirmiktar, hesap_gelirtarih, hesap_gidermiktar, hesap_gidertarih olarak 6 sütunum var. Ve gelirekle.php ve giderekle.php sayfalarında formlarım var.
    gelirekle.php sayfasında formdan selectten kişiyi seçiyorum value değerinden kisi_id yi atıyor, hesap_id yi zaten otomatik atıyor, giderekle.php de aynı. Buraya kadar bir sorun yok. Fakat ben formda hesapekle sorgusundan hem gelirekle hem giderekle yapmak istiyorum. yani islem.php ye ayrı ayrı sorgu yapmak istemiyorum. Nedeni de bunu ileride daha geliştireceğim ve birçok formda farklı değerler olacak. yani bir hesapekle sorgusundan bütün formlardan veri eklemek istiyorum. Umarımsorunumu anlaşılır anlatabilmişimdir. Yine islem.php sorgu kodlarımı aşağıda paylaşayım. Gelirekle.php giderekle.php form sayfalarını sanırım eklememe gerek yok ikisininde <buton name="hesapekle">

    [PHPR]
    if (isset($_POST['hesapekle'])) {

    $hesapekle=$db->prepare("INSERT INTO hesaplar SET
    kisi_id=:id,
    hesap_gelirmiktar=:gelirmiktar,
    hesap_gelirtarih=:gelirtarih,
    hesap_gidermiktar=:gidermiktar,
    hesap_gidertarih =:gidertarih
    ");

    $ekleme=$hesapekle->execute(array(
    'id' => $_POST['kisi_id'],
    'gelirmiktar' => $_POST['hesap_gelirmiktar'],
    'gelirtarih' => $_POST['hesap_gelirtarih'],
    'gidermiktar' => $_POST['hesap_gidermiktar'],
    'gidertarih' => $_POST['hesap_gidertarih ']
    ));

    if ($ekleme) {
    header("location:../hesaplar?durum=ok");
    } else {
    header("location:../hesaplar?durum=no");
    }
    }
    [/PHPR]gelirekle.php den veri eklemek için islem.php den gidermiktar ve gidertarih bölümlerini silince veya tam tersi giderekle.php den veri eklemek için gelirmiktar ve gelirtarih bölümlerini silince sorunsuz veri ekleniyor fakat gelir ve gider kısımları islem.php de aynı sorguda olduğu zaman hata veriyor. Bende dediğim gibi sorguyu ayırmadan çözmek istiyorum gelecekte birçok hesap ekleme formu düşünüyorum ve genelde ortak alanlar olacak. O yüzden herforma ayrı sorgu yapmak istemiyorum. Kısaca form name den gelmeyen postu yok saysın ve birşey eklemesin istiyorum. input type="hidden" diye gizli veri göndermek de bana çok zahmetli geliyor. isset ile denedim birşeyler ( isset($_POST['hesap_gelirmiktar']), ) olarak o zaman hata vermiyor fakat veri varsa veritabanına 1 yoksa 0 yazıyor borç miktarını yazmıyor. Kolay bir çözüm yolu yok mu? Yani sorguya input nameden $_POST gelmezse yoksayacak ve o sütunu boş bırakacak gelirse değeri yazacak birşey. Şimdiden teşekkür ederim.







  • Sorunu tam olarak anlayadım fakat anladığım kadarıyla yazayım.Sanırım input alanı doldurulursa dolu doldurulmazsa boş döndürmek istiyorsunuz.Açıklama isminde bir text inputunuzun olduğunu varsayın.

    if(empty($_POST['aciklama'])){
    $aciklama = $_POST['aciklama'];
    }
    else{
    $aciklama = null;
    }

    Şeklinde basit bir yapı kurabilirsiniz.Eğer aciklama verisi doluysa gönderilen değer boşsa null dönecek.
  • Yok formda zaten input text e değer girmezse boş olarak kayıt ediyor. Onda sorun yok. Ama benim isteğim mesela gider.php formunda hesap_gelirmiktar adında bir input yok. Form action kodlarından bu formdan gelen postları veritabanına yazdırırken hesap_gelirmiktar adında post olmadığı için form hata veriyor ve hiçbir veri eklemiyor. Benim isteğim o post formdan gelmediğinde hata vermesin öbür gelen postları veritabanına yazsın gelmeyen postları boş bıraksın. Pek anlatamadim sanırım.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • olmaz
  • serkannalca S kullanıcısına yanıt
    PHP OOP'da bu tarz kullanımlar var sorunu doğru anladıysam.

    Örneğin;

    Fonksiyona $options=[] olarak dizi şeklinde parametre gönderiyorsun. Ondan sonra formda o alanı tanıtıyorsun. Fonksiyonda da örneğin

    if isset($options['hesap_gelirmiktar']) {

    unset($values[$options['hesap_gelirmiktar'];

    }

    Şeklinde fonksiyona gitmesini istemediğin veriyi unset ile ayıklayabiliyorsun.

    Soruna tam olarak cevap olabildi mi bilmiyorum ama unset fonksiyonunu yapına uyarlamayı deneyebilirsin.
  • Insert ettiğiniz alanların karşılığı formdan gelmiyorsa bunlara kod kısmında NULL değeri atayabilirsiniz.

    " hesap_gelirmiktar=:gelirmiktar, ==> hesap_gelirmiktar=:NULL " gibi.

    Veya ilgili php sayfasında bu field hiç kullanılmıyorsa insert cümlesinden çıkartabilirsiniz. Tabi database tasarımızında, ilgili field in NULL olamaz gibi bir seçeneği aktif edilmediyse. Aksi durumda varsayılan bir değeri insert cümlenizde şu şekilde kullanabilirsiniz.

    hesap_gelirmiktar=:'veri yok'
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.