sorunu çözdüm
axes içerisinde düzenleme yapmak gerekiyormuş
ticks: {
fontColor: "white",
fontSize: 14,
stepSize: 1,
beginAtZero: true
}
htaccess e ErrorDocument 404 /404.html veya .php ekleme yap
siparişler
id, urun_id, musteri_id hizmet, fiyat, taksit, odemeyontemi, kapora, durum(ödemin bitip bitmediğini kontrol edecek), tarih(timestamp current), detay,
ödemeler
id, siparis_id, musteri_id, hizmet, satici, tarih(taksitin ödenmesi gereken tarih), tarih2(odemin yapıldığı tarih), odemeyontemi, ödeme, taksit, durum, notlar
müşteriler
musteriler, isim, soyisim, telefon vs.
sipariş kolonlarda gözüken yapıya uygun şekilde girilir.
siparişler tablosondaki sipariş id ile durum baz alınarak ödemeler sayfasında sorgu yapılır
ödenmemiş hizmetler listelenir
belli bir müşteriye ait ödenmemiş bilgileri listelemek için sorguya musteri id eklenebilir
tüm ödenmemişleri görüntülemek için durum baz alınarak listeleme yapılabilir
güncelleme kısmında muhtemelen olumsuz durumlarda kullanacağı için, notlar kullanılarak neden güncellendiği bilgisi kayıt edilir bu alanı text yapıp bir tinymce eklentisini form alanında kullanırsan şaşırtıcı derecede verimli olur senin için
ödeme alma gelirsek, insert için çekilen veriler form alanlarında gerekli koşula uygun hazırlanır örneğin <input type="hidden" name=siparis_id value="<php? echo row['siparis_id']; ?>"> (bu form olmadan da yapılabilir, basite indirgemek için form ekledim) ödeme tutarı muhtemelen manuel girileceği için bir form verisi girilir daha sonra mevcut taksit durumu +1 arttırılır ya da tam taksit verildiyse -1 düşürülür bu nasıl kolayınıza geliyorsa ve ödemeler tablosuna yeni bir kayıt eklenir
bu mantığa görede takistler 8 ile başlıyorsa ödemelerde 8 den 1 düşülür ya da 0 dan başlar 1 1 artar 8 olana kadar, ödeme hesaplamasınıda fiyat/taksit olarak tutacağını varsaydık tabiki 1000/5 ise her taksit 200 olacaktır vesaire burada veritabanının önemi kadar onu nasıl kullanacağın da önemli. bir önceki mesajımda tamamen matematiksel işlemler üzerinden tek tabloda 3 kolona bazı değişiklikler uygularak en basit haliyle kendimce bir şeyler anlatmaya çalışmıştım. yani veritabanı kadar, php tarafında da iyileştirmeler yapmanız gerekiyor.
kayıt işleminin gerçekleştiği sayfada sql sorgusunun gerçekleşmesinin ardından göndereceğin maili koşul içerisine yaz
şablon olarak yok. kendin yazarsan daha az uğraşırsın bence. işlemin gerçekleceği sayfa için örnek bir yapı;
if(isset($_POST)){
if($sil === true){ÇALIŞACAK KODLAR}else{echo "silmek için izniniz bulunmuyor!..";}
} bir sürü şey yazdım, sonra sildim :) koddan ziyade, mantıklı yapılar oluşturmaya odaklanın.
tablo gayet işlevsel gözüküyor. bir tabloya bakıp gerçekleşecek işlemlerin tamamını kafamda canlandıramadığımdan bir önerim yok. dükkan ile takip gereksiz gibi duruyor, dükkanı zaten ne işe yaradığını da anlamadım. takip tablosuna gelirsek, ikincil değerin müşteri id olduğunu görüyorum, burada her müşteri için bir kez takip olayı gerçekleşecek ise müşteri tablosu ile birleştirmen daha mantıklı. hayır bir müşteriye birden fazla takip uyguluyoruz diyorsan, bu şekilde olabilir.
taksit sorusunu hiç anlamadım. paytr ile çalışıyorum ben, ödeme ve taksitlerden onlar sorumlu, komisyon alıyorlar sadece. siz kredi kartına yaptığınız taksitleri online değilde elden mi alıyorsunuz, elden alıyorsanız 3 taksit yapıldığında 3 kere iş yerinize gelip tek tek mi ödüyor taksitleri anlamadım ki.
elden ve kartsız işlemlerde taksit girdisi için sipariş tablosu şöyle olabilir fiyat, taksit, ödenen,
ürün fiyatı sabit olduğu için, değeri ürün tablosundan alıyorsun zaten. sipariş oluşturulur taksit tutarı belirtilir, ilk ödeme kaydedilir
fiyat 1500, taksit 3, ödeme yok diyelim
$taksitler = explode(",", $taksit); // taksitler 3,0 şeklinde kayıt edilir, 3 taksit tutarı virgülden sonrası kalan taksit için hesaplama değeri
$taksittutari = ($fiyat / $taksitler[0]); //taksit için ne kadar ödeceğini verir
$kalanodeme = ($fiyat - $odenen); //kalan borcu verir
$yeniodeme = ($odenen + $odeme); //yeni ödeme esnasında, yapılan ödeme miktarını mevcut ödenen tutara ekleyerek yeni bir ödenen miktarı oluşturur örneğin 150 verdi 150 daha verdi 300 odenen oldu veritabanını güncelledin bu değer ile
$kalantaksit = ($taksitler[0] - $taksitler[1]);
$kalantaksitguncelle = ($taksit + 0.1);
bu değişkenleri oluşturduktan sonra veriyi istenilen formatta ekrana basabilir ve $kalantaksitguncelle, $yeniodeme değişkenleriyle veritabanında gerekli yerleri güncelleyerek girdi oluşturabilirsin
formülü üretcem diye baya vakit harcadım ya. veritabanıda "detayda belirttiğin gibi satıştaki tasit sayasına göre girdi" oluşturmayı en kısa böyle yapabilirsin ne avatajı oldu 100 sipariş için 12 taksit uygulasanız fazladan 1 tablo ve içerisinde 1200 değer olacaktı bundan kurtuldunuz
- taksitte ne kadar ödendi hangi tarihte ödendi gibi bilgileri ayırmak istiyorsanda oda farklı bir konu sonuçta detayda taksit sayısına göre ayrı ayrı girdi oluşturmak istiyorum dememişsiniz.
az çok bir şeyler canlanıyor insanın kafasında tablolara bakınca ama, siz kendi ihtiyacınıza uygun yaptığınız ve kendi anlayacağınız şekilde isimlendirdiğinizden, ilk bakışta sizin kadar tablo ve kolonları birbirleriyle sizin kadar iyi kurgulayamayız.
öncelikle int değerleri 11 karakter olmaz. int eksi ve + milyar değerine kadar sayı tutar bu da 10 karaktere denk gelir ve sayısal değerler tamsayıdır. örneğin bir telefon numarasını başında 0 ile post ettiğinizde, veritabanına farklı bir değer kaydeder. 0 olmadan post ettiğinizde telefon numarasını normal kaydeder. bu yüzden önce veri türünüzü doğru seçin. int 11 diye bir şey yok kısacası.
tarih verilerinide timestamp olarak vermenizi öneririm, ayrıca varsayılanı current yaparsanız daha az kod yazarsınız geçerli zamana ait tarihi kaydedeceği için. bu tarz sistemlerde tarih tek başına yeterli değildir, bazen saate de ihtiyac duyarsınız date ile saat kaydedemezsiniz. curent kullanımında php tarafında işlemin gerçekleşeceği sayfada zaman dilimi belirtmez iseniz, bilgisayarın tarih ve saatini alır. bilgisayarın tarih ve saati hatalıysa, girdi de hatalı olur.
yapıya gelirsek, o konuda bi tavsiye veremiyorum, kalın kafalıyım galiba biraz geç anlıyorum : ) ama soracağınız bir şeyi daha detaylı açıklarsanız, anladığım kadarıyla bildiğimde bir şey varsa yardımcı olmaya çalışırım.
yukarıdaki yapı zaten istediğin şeyi karşılıyor 2 farklı tablo önermemem, sistemin nasıl işleyeceğini bilmediğimden kaynaklanıyor. okul yönetim sistemi gibi bir şey hazırlıyorsan öğretmenler ve öğrenciler gibi iki farklı tablo yapıp yetkileri burada tutabilirsin.
forum mantığı üzerinden bir önek vereyim.
if(($_SESSION['yetki'] == $admin && $_SESSION['yetki'] == $supermoderator) || (($_SESSION['yetki'] == $moderator)){
//bir konu olduğunu varsayalım
if($admin){ echo '<button>konuyu sil</button>';}else{echo 'işlem gerçekleştirmek için yetkini yok';}
}
ikinci örnek ise belki daha kullanışlı olabilir post ettiğin sayfa bir sql koşulu eklersin örneğin "selec * from kullanicilar where yetki="'.$_SESSION['yetki'].'"
yani konuyu butona uygulamak çok mantıklı değil, sayfayı göstermek için yetkileri kullanmak, daha sonrasında işlem sayfasında bunu uygulamak da seçenekler arasında session yönetmeyi zaten biliyorsun koşulda yazabiliyorsun gerisi senin mantığına kalıyor bazen düşünmek yazmaktan vakit alıyor o ayrı tabi : ) olabildiğince basitten başla üstüne koyarak ilerle o zaman daha kolay olur, sonra bir framework kullanara mevcut projeyi tekrar elden geçir oraya entegre et
<?php
if(isset($_POST['content_add'])){
//$uploads_dir="../../assets/uploads/content";
$query = $db->prepare("INSERT INTO content SET
c_title = ?,
c_title_en = ?,
c_description = ?,
c_description_en = ?,
c_date = ? ");
$insert = $query->execute(array(
$_POST['c_title'],
$_POST['c_title_en'],
$_POST['c_description'],
$_POST['c_description_en'],
$_POST['c_date']
));
if ( $insert ){
$last_id = $db->lastInsertId();
}
}
koşulun içini istediğin gibi doldur
öncelikle ben böyle bir yapının gerçekleştirilecek işlem ve koşulların sayısını arttıracağını düşünerek, tablo yapısını değiştirmeni önererek başlıyorum ve anlatımı da bu öneri üzerinden gerçekleştirmek istiyorum.
önce mantığı biraz daha iyi kavramak için, kendine bir yol haritası çıkartmalısın. kaç kullanıcı grubu olacak, bunları diğerlerinden ayırt eden nitelikler ne?
eğer yapı basit ise tek tablo işini çözecektir. ben bütün tablolarımda dizine bir txt dosyası açarak, hangi kolonun değerinin ne anlama geldiğinide ayrıca not ederim, ki ileride kafa karışıklığı olmasın, örneğin 0 kapalı, 1 aktif, 2 yasaklı gibi bir değer atıyorsun, mutları ileride hatırlamayabilirsin mutlaka not et. kullanıcılar(0 aktif, 1 kapalı, 2 yasaklı) gibi bir not ileride hayatını kurtarır.
yapıya gelirsek;
senin kullandığın biçimde değil, önerim ile örneklendireceğim. kullanıclar adında bir tablomuz olsun
id, isim, yetki
en basit durumda bu üçü bile işini çözecektir. nasıl çözecektir? : ) önemli olan sayfanın içerisinde nasıl koşullandırdığın, eğer bir sayfa farklı yetki gruplarında kişiler aynı anda girebiliyorsa if($_SESSION["yetki"] == 0){} gibi basit bir koşul ile sayfayı yazdırabilirsin veya sadece bir grubun yetkisi yok ise, burada operatör devreye girer, eşittir yerine şöyle olabilir >=2 bu ikiye eşit ve ikiden büyük yetkiye sahip kişilerce çalışacak bir kod betiği için kullanılabilir
biraz daha geliştirmek istedik. okuma, yazma ve görüntüleme vs. için ayrı ayrı yetkiler vereceğiz diyelim. o zaman tablo yapımız aşağıdaki gibi olursa daha mantıklı olacaktır;
id, isim, yetki, okuma, yazma,
örneğin aynı yetkiye sahip bir grup içerisinde iki adminden birine sadece yazma yetkisi vermek istiyorsun, yine yukarıdaki mantıkla işlem gerçekleştirebiliyorsun. sadece koşulun biraz uzuyor.