Komponent stok takip sistemi için veritabanı tasarımı

Sana daha önce kullandığım bomist'ten örnek vereyim. Bizim kategoriye bunlar "Label" demiş. Ama aynı mantık.

1717079466360.png
 
Tasarım farklı, bu da CSS ile halledilecek bir iş.
Benim önceki sayfada paylaştığım saf HTML sadece bir kaç inline stil ekledim az daha düzgün görünsün diye :D
 
Bunlar da kodların şimdiki hali :)

HTML:
<?php include "db.php"; ?>

<!doctype html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="script/fontawesome/css/fontawesome.css" rel="stylesheet">
    <link href="script/fontawesome/css/brands.css" rel="stylesheet">
    <link href="script/fontawesome/css/solid.css" rel="stylesheet">
    <script src="script/jquery-3.7.1.min.js"></script>
    <title>PHP KAYITLAR</title>
</head>
<body>

<div style="padding-bottom: 20px; border: 1px solid red;padding: 15px">

<h1> KAYIT EKLEME EKRANI</h1>
    <form action="">

        <div style="padding-bottom: 20px">
            <label for="komponent">Komponent Adı:</label>
            <input type="text" id="komponent" name="komponent"><br><br>
            <label for="kategori">Kategori:</label>
            <select name="kategori" id="kategori">

                    <option value="">İşlem Seçiniz</option>
                    <option value="kategori">+ YENİ KATEGORİ EKLE</option>
                    <option value="yariiletken"> Yarı İletken</option>
                    <option value="kategori">- Transistör</option>
                    <option value="kategori">-- Mosfet</option>
                    <option value="kategori">-- BJT</option>
                    <option value="kondansator"> Kondansatör</option>
                    <option value="kategori">- Seramik</option>
                    <option value="elektrolit">- Elektrolit</option>
                    <option value="kondansator"> Direnç</option>
                    <option value="kondansator">- Karbon Film</option>
                    <option value="kondansator">- Alüminyum</option>

            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="lokasyon">Lokasyon:</label>
            <select name="lokasyon" id="lokasyon"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="yeni">+ YENİ LOKASYON EKLE</option>
                <option value="ev"> EV</option>
                <option value="dolap">- Dolap</option>
                <option value="ust">-- Üst sağ çekmece</option>
                <option value="orta">-- Orta Çekmece</option>
                <option value="isyeri"> İŞ YERİ</option>
                <option value="sag">- Sağ Çekmece</option>
                <option value="sol">- Sol Çekmece</option>
            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="uretici">Üretici:</label>
            <select name="uretici" id="uretici"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="kategori">+ YENİ ÜRETİCİ EKLE</option>
                <option value="yariiletken"> ÖZDİSAN</option>
                <option value="kategori"> SME</option>
                <option value="kategori"> TOSHIBA</option>
                <option value="kategori"> NEC</option>
                <option value="kategori"> TEXAS INSTRUMENTS</option>
            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="tedarikci">Tedarikçi:</label>
            <select name="tedarikci" id="tedarikci"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="kategori">+ YENİ TEDARİKÇİ EKLE</option>
                <option value="yariiletken"> ÖZDİSAN</option>
                <option value="kategori"> KARAKÖY</option>
                <option value="kategori"> ORASI</option>
                <option value="kategori"> BURASI</option>
            </select>
        </div>

        <div style="background-color: lightgray;padding: 10px;>
<h3>Paket Tipi</h3>
<input type="radio" id="DIP8" name="DIP8" value="DIP8">
<label for="DIP8">DIP8</label><br>
                <input type="radio" id="TO-3" name="TO-3" value="TO-3">
                <label for="TO-3">TO-3</label><br>
                <input type="radio" id="TO-220" name="TO-220" value="TO-220">
                <label for="TO-220">TO-220</label><br>
                <input type="radio" id="DIP16" name="DIP16" value="DIP16">
                <label for="DIP16">DIP16</label><br>
                <input type="radio" id="SOT-23" name="SOT-23" value="SOT-23">
                <label for="SOT-23">SOT-23</label>
        </div>
        <br><br>
        <div style="background-color: lightgray; display: inline-block; padding: 10px;">
        <label for="dokuman">Döküman:</label>

        <input type="file" id="dokuman" name="dokuman">
        </div>
        <br><br>
        <div style="">
            <label style="vertical-align: top" for="lar">Detaylar:</label>
            <textarea name="" id="" cols="35" rows="5"  ></textarea></div>
        <br><br>
<div style="text-align: right">
    <input style="background-color: red; padding: 30px; color: white;" type="submit" value="Kayıt Ekle">
</div>

    </form>
</div>

</body>
</html>
 
Bunlar da kodların şimdiki hali :)

HTML:
<?php include "db.php"; ?>

<!doctype html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="script/fontawesome/css/fontawesome.css" rel="stylesheet">
    <link href="script/fontawesome/css/brands.css" rel="stylesheet">
    <link href="script/fontawesome/css/solid.css" rel="stylesheet">
    <script src="script/jquery-3.7.1.min.js"></script>
    <title>PHP KAYITLAR</title>
</head>
<body>

<div style="padding-bottom: 20px; border: 1px solid red;padding: 15px">

<h1> KAYIT EKLEME EKRANI</h1>
    <form action="">

        <div style="padding-bottom: 20px">
            <label for="komponent">Komponent Adı:</label>
            <input type="text" id="komponent" name="komponent"><br><br>
            <label for="kategori">Kategori:</label>
            <select name="kategori" id="kategori">

                    <option value="">İşlem Seçiniz</option>
                    <option value="kategori">+ YENİ KATEGORİ EKLE</option>
                    <option value="yariiletken"> Yarı İletken</option>
                    <option value="kategori">- Transistör</option>
                    <option value="kategori">-- Mosfet</option>
                    <option value="kategori">-- BJT</option>
                    <option value="kondansator"> Kondansatör</option>
                    <option value="kategori">- Seramik</option>
                    <option value="elektrolit">- Elektrolit</option>
                    <option value="kondansator"> Direnç</option>
                    <option value="kondansator">- Karbon Film</option>
                    <option value="kondansator">- Alüminyum</option>

            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="lokasyon">Lokasyon:</label>
            <select name="lokasyon" id="lokasyon"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="yeni">+ YENİ LOKASYON EKLE</option>
                <option value="ev"> EV</option>
                <option value="dolap">- Dolap</option>
                <option value="ust">-- Üst sağ çekmece</option>
                <option value="orta">-- Orta Çekmece</option>
                <option value="isyeri"> İŞ YERİ</option>
                <option value="sag">- Sağ Çekmece</option>
                <option value="sol">- Sol Çekmece</option>
            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="uretici">Üretici:</label>
            <select name="uretici" id="uretici"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="kategori">+ YENİ ÜRETİCİ EKLE</option>
                <option value="yariiletken"> ÖZDİSAN</option>
                <option value="kategori"> SME</option>
                <option value="kategori"> TOSHIBA</option>
                <option value="kategori"> NEC</option>
                <option value="kategori"> TEXAS INSTRUMENTS</option>
            </select>
        </div>

        <div style="padding-bottom: 20px">
            <label for="tedarikci">Tedarikçi:</label>
            <select name="tedarikci" id="tedarikci"> <br><br>

                <option value="">İşlem Seçiniz</option>
                <option value="kategori">+ YENİ TEDARİKÇİ EKLE</option>
                <option value="yariiletken"> ÖZDİSAN</option>
                <option value="kategori"> KARAKÖY</option>
                <option value="kategori"> ORASI</option>
                <option value="kategori"> BURASI</option>
            </select>
        </div>

        <div style="background-color: lightgray;padding: 10px;>
<h3>Paket Tipi</h3>
<input type="radio" id="DIP8" name="DIP8" value="DIP8">
<label for="DIP8">DIP8</label><br>
                <input type="radio" id="TO-3" name="TO-3" value="TO-3">
                <label for="TO-3">TO-3</label><br>
                <input type="radio" id="TO-220" name="TO-220" value="TO-220">
                <label for="TO-220">TO-220</label><br>
                <input type="radio" id="DIP16" name="DIP16" value="DIP16">
                <label for="DIP16">DIP16</label><br>
                <input type="radio" id="SOT-23" name="SOT-23" value="SOT-23">
                <label for="SOT-23">SOT-23</label>
        </div>
        <br><br>
        <div style="background-color: lightgray; display: inline-block; padding: 10px;">
        <label for="dokuman">Döküman:</label>

        <input type="file" id="dokuman" name="dokuman">
        </div>
        <br><br>
        <div style="">
            <label style="vertical-align: top" for="lar">Detaylar:</label>
            <textarea name="" id="" cols="35" rows="5"  ></textarea></div>
        <br><br>
<div style="text-align: right">
    <input style="background-color: red; padding: 30px; color: white;" type="submit" value="Kayıt Ekle">
</div>

    </form>
</div>

</body>
</html>
Bu is hic bole hatirlarsam yaparim isine benzemiyor :katil1:
 
En önemli konu, çok hızlı bir şekilde komponent girebilmek. Şöyle bir örnek vereyim. Diyelim elinde çekmecelerde 1 Ω dan 10 MΩ a kadar dirençler var. Komponent giriş ekranında sadece komponent değeri değişmeli, diğer ayarların hiç birisini yapmak zorunda olmaman lazım. Takır takır bütün dirençleri, bütün kondansatörleri girdikten sonra, bütün voltaj regülatörlerini, bütün dijital lojiği vs girebilmemiz lazım.
 
Aynen ben de öyle. Bir sürü proje var, sırası geldikçe yapacağız :D
 
@taydin hocam projede son durum nedir? nodejs ve db ile ilgili uygulama yapıyorum hali hazırda isterseniz yardımcı olabilirim.

Şu sıralar pek vakit ayıramıyorum. Aslında başta node.js ile yapacaktım ama @nt beni Django ile yapmaya ikna etti. Hem komponent takip program yazmış olacağım hem de python öğreneceğim.

Eğer böyle bir programı yazarsan forumun bulunduğu kiralık sunucuda barındırırız.
 
  • Beğen
Reactions: nt
Kayıt ekleme kodlarını değiştirip alağıdaki gibi hızlı ve pratik eklenecek şekilde düzenledim.



Aşağıdaki ekrandaki özellikler yeterli mi yoksa eklenmesi gereken başka özellik var mı?

1717323547516.png
 
Bu çok iyi bir giriş ekranı. Doküman ekleme de gerekli burada.

Doküman eklemede de database yapısında gösterildiği gibi yapmamız lazım. Bir doküman birden fazla komponent için kullanılabilmeli ve her komponenete ayrı ayrı eklenmemeli. Şemadaki yapı gereken bütün esnekliği sağlıyor ve "normalize" edilmiş durumda.
 
Tree view işini şöyle yapamaz mıyız? :)

1717324984848.png
 
Aynen. Görseller düşük öncelik. En önemlisi database yapısının doğru çalışması. Komponent ekleme, çıkarma, yer değiştirme işleri hatasız ve database yapısını bozmadan yapılabilmeli.

Mesela diyelim ev -- dolap 1 -- raf 3 -- çekmece 5 saklama yeri var. Dolap 1 deki her şeyi dolap 3 e taşımamız lazım. Bunu rahatlıkla sürükle bırak ile yapabilmemiz lazım. Yoksa gidip her bir komponentin saklama yerine teker teker güncellemememiz lazım.

Aynı şekilde dolap 3 saklama yeri silinirse, dolap 3 altındaki herşey, hiyerarşinin bir üst seviyesine bağlanmalı.

Bir doküman silinirse, bütün komponentlerdeki referansı silinmeli.

Bunlar asıl işin zor tarafı.
 
Aynen. Görseller düşük öncelik. En önemlisi database yapısının doğru çalışması. Komponent ekleme, çıkarma, yer değiştirme işleri hatasız ve database yapısını bozmadan yapılabilmeli.

Mesela diyelim ev -- dolap 1 -- raf 3 -- çekmece 5 saklama yeri var. Dolap 1 deki her şeyi dolap 3 e taşımamız lazım. Bunu rahatlıkla sürükle bırak ile yapabilmemiz lazım. Yoksa gidip her bir komponentin saklama yerine teker teker güncellemememiz lazım.

Aynı şekilde dolap 3 saklama yeri silinirse, dolap 3 altındaki herşey, hiyerarşinin bir üst seviyesine bağlanmalı.

Bir doküman silinirse, bütün komponentlerdeki referansı silinmeli.

Bunlar asıl işin zor tarafı.
Vakit alıcı evet, uzun yıllardan sonra ilk kez el sürdüm açıkçası. Zaman buldukça adım adım ilerleriz artık.
 
Sen php ile mi yazıyorsun?
 
Aslında istenen sayfaları resim olarak tasarımını yapıp buraya ekleyebilirseniz kodlama aşamasında birebir aynısını yaparım vakit buldukça.
 
Yukarıdaki sayfa tasarımı gayet iyi. Bir tane daha ilave kutu koyup orada dosya isimleri ekleyeceğiz o kadar.

Bir de bakıyorsun bu proje ile gaza gelip emeklilikten çıkıp tekrar iş hayatına atılmışsın :)
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,952
Mesajlar
118,760
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top