• 24-01-2020, 16:36:52
    #1
    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">

    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");
    }
    }
    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.
  • 24-01-2020, 16:40:10
    #2
    input name="hesap[kolonadi"]
    diğerlerini de input name="gider[kolonadi]" şeklinde belirtin

    $_POST["hesap"] ile hesapdaki tüm değerleri alırsınız. $_POST["hesap"]["kolonadi"] ile de ilgili alana ulaşırsınız.
  • 24-01-2020, 16:40:05
    #3
    <input type="hidden" name="tur" value="Islem" /> deyip bu varsa dikkate aldırmayabilirsin
  • 24-01-2020, 16:43:26
    #4
    Web Tasarım ve Yazılım
    MetroBilisim adlı üyeden alıntı: mesajı görüntüle
    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">

    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");
    }
    }
    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.
    Hocam iki ayrı update sorgusu yapın ve formlarada gizli input koyarak 1 ve 0 gibi değer verin. Update yaptığınız yerde basit bir if else sorgusu ile ayrı ayrı veritabanına ekletin sorununu doğru anladıysam bu şekilde çözebilirsiniz.
  • 24-01-2020, 17:12:49
    #5
    bostanci96 adlı üyeden alıntı: mesajı görüntüle
    Hocam iki ayrı update sorgusu yapın ve formlarada gizli input koyarak 1 ve 0 gibi değer verin. Update yaptığınız yerde basit bir if else sorgusu ile ayrı ayrı veritabanına ekletin sorununu doğru anladıysam bu şekilde çözebilirsiniz.
    Dediğiniz yöntem de olur. Fakat o zaman da sorgu yerine yine if else ile aynı postları yine gireceğim. Yani açıkçası islem.php ye ha gelirekle giderekle diye ayrı ayrı sorgu yapmışım ha if else sorgusu ile ayırmışım. Çok Fark etmeyecek. Dediğim gibibu sadece bu kadarı ile kalmayacak ileride işlerimin bütün gelir giderini burada tutacağım. Gelir gider özellikleri değişecek. en basitinden para birimleri, ürün ölçekleri, ödemeyi alan, ödemeyi veren, gelir türleri gibi. Bunlar kimi üründe olmayacak kimi üründe olmayacak her seferinde islem.php ye aynı postları bir tekrar tekrar girmeyim diyorum. birinde gelirmiktar gelirtarih odemeyialan olacak, Başka bir formda kisiid gidermiktar ve odemeyiyapan olacak mesela. Başka formda gelirmiktar gelirtarih gidermiktar gidertarih olacak. Başkasında sadece kisiid gelirmiktar olacak. islem.php için her form için aynı değişkenleri post etmek yerine bir kere değişkenleri ekleyip hep o sorguyu göndersem daha iyi olacak. Yoksa hiç olmazsa dediğiniz yönetemle veya ayrı ayrı sorgu ile yapacağım mecbur.



    BenimWebim adlı üyeden alıntı: mesajı görüntüle
    <input type="hidden" name="tur" value="Islem" /> deyip bu varsa dikkate aldırmayabilirsin
    o yöntemi de düşündüm hatta konuda da belirttim. Mecbur kalırsam dediğin yönemi yapabilirim ama konudaki sorguya isset tarzı bir kodla varsa yaz yoksa yazma giri birşey yapılır diye düşünüyorum. Her forma ayrı ayrı hidden eklemektense. Çünkü ileride bu hesapekle sorgum çok uzayacak belki 30 35 sütun olacak o zaman 5 input text için 30 tane input hidden eklemek zorunda kalacağım.
  • 24-01-2020, 19:12:35
    #6
    Belirtmiş olduğunuz tablo yapısına göre en mantıklı yöntem @bostanci96 belirtmiş olduğu şekilde if else dir.

    Ancak benim size tavsiyem tablonuzdaki gereksiz alanları kaldırmanız Gelir Tarihi, Gider Tarihi, Gelir Tutarı ve Gider Tutarı şeklinde alan oluşturmuşsunuz bunları örneğin İşlem Tarihi, İşlem Tutarı şeklinde güncelleyiniz böylelikle aynı şey için 2 şer alan değil tek alan oluşturmuş olacaksınız.
    Örnek Tablo Yapısı;
    hesap_id, kisi_id, hesap_tutari, hesap_tarihi, hesap_tipi(int) --1 ve 0 alacak örneğin 1 Gelir 0 Gider gibi

    buna göre de ilgili formlar dan aynı bilgilerin yanında sadece hesap tipi değeri göndererek 1 0 gibi işlemi tek form ve tek sorgu ile rahatça yapabilirsiniz.
    Yukarıda ki yapı ile iki ayrı sayfa oluşturmaya da gerek kalmaz. İşlem Tipi olarak bir adet combobox eklersiniz içeriğine Gelir ve Gider value değerine de 1 0 verirsiniz tek yapı ile iki işide yapmış olursunuz.
  • 24-01-2020, 20:32:48
    #7
    emiru9396 adlı üyeden alıntı: mesajı görüntüle
    Belirtmiş olduğunuz tablo yapısına göre en mantıklı yöntem @bostanci96 belirtmiş olduğu şekilde if else dir.

    Ancak benim size tavsiyem tablonuzdaki gereksiz alanları kaldırmanız Gelir Tarihi, Gider Tarihi, Gelir Tutarı ve Gider Tutarı şeklinde alan oluşturmuşsunuz bunları örneğin İşlem Tarihi, İşlem Tutarı şeklinde güncelleyiniz böylelikle aynı şey için 2 şer alan değil tek alan oluşturmuş olacaksınız.
    Örnek Tablo Yapısı;
    hesap_id, kisi_id, hesap_tutari, hesap_tarihi, hesap_tipi(int) --1 ve 0 alacak örneğin 1 Gelir 0 Gider gibi

    buna göre de ilgili formlar dan aynı bilgilerin yanında sadece hesap tipi değeri göndererek 1 0 gibi işlemi tek form ve tek sorgu ile rahatça yapabilirsiniz.
    Yukarıda ki yapı ile iki ayrı sayfa oluşturmaya da gerek kalmaz. İşlem Tipi olarak bir adet combobox eklersiniz içeriğine Gelir ve Gider value değerine de 1 0 verirsiniz tek yapı ile iki işide yapmış olursunuz.
    Cevabınız için teşekkürler. Fakat gelir gider diye ayirmamdaki maksat bir hesap_id deki satıra hem gelir hem gider miktarını gireceğim zaman da olacak. Mesela x ürünü şu tarihte şu kişi tarafından şu kadara alındı ve aynı satırda aynı ürün şu tarihte şu kişi tarafından şu kadara satıldı olacak ve gelirden gideri çıkarıp hesaplama yapacak ve tabloda listelenecek. Sanırım dediğim gibi gonderilmeyen postu yok sayacak bir kod yapısı yok PHP de. Mecbur @BenimWebim in dediği gibi hidden veya @bostanci96 nin dediği gibi if else kullanarak yapacağım sanırım. Kolay bir yolu yok gibi.