• 23-09-2023, 18:21:29
    #1
    Merhaba vardiya sistemini veri tabanına yazdırmak istiyorum. Fakat yazdırırken vardiya tablosuna her bir personeli tarih ve vardiya türüyle kayıt etmem gerekiyor. Yani
    Vardiya_id -> Ahmet ->Vardiya Tarihi (Pazartesi) -> Vardiya Türü
    Vardiya_id -> Ahmet ->Vardiya Tarihi (Salı) -> Vardiya Türü
    vs… şeklinde vardiya tablosundaki id lere tek tek kayıt olması gerekiyor.
    Ayrıca vardiya türündeki select box idlerini personel id ile eşitliyorum. Fakat her tarihte id=1, id=2 olarak dönüyor bu doğrumu bilemedim. Yoksa her hücredeki id farklımı olmalı. Burada takıldım yardım ederseniz çok sevinirim.








    <?php
    $db = new PDO("mysql:host=localhost;dbname=timesheet;port=3306;charset=utf8", 'root', '');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $tarih = date("d-m-Y", strtotime('monday this week'));
    $vardiyaTarihi = [];
    for ($i = 0; $i < 7; $i++) {
        $tarihEkle = strtotime("$i day", strtotime($tarih));
        $tarihEkle = date('d.m.Y', $tarihEkle);
        $vardiyaTarihi[$i] = $tarihEkle;
    }
    $vardiyaTuruData = array(1,2);
    ?>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <script src="js/bootstrap.min.js"></script>
        <title>Document</title>
        <style>
            table {
                border-collapse: collapse;
                border: 1px solid #ccc;
            }
            table td,
            table th {
                border: 1px solid #ccc;
                padding: 4px 6px
            }
        </style>
    </head>
    <body>
        <?php
        $sth = $db->query("SELECT * FROM personel ");
        $personeller = $sth->fetchAll(PDO::FETCH_OBJ);
    
        $results = [];
        foreach ($personeller as $personel) {
            $results[$personel->personel_id]['ad_soyad'] = $personel->personel_ad . ' ' . $personel->personel_soyad;
            $results[$personel->personel_id]['id'] = $personel->personel_id;
        }
        ?>
        <form>
            <table class="table">
                <tr>
                    <th>PERSONELLER</th>
                    <?php foreach ($vardiyaTarihi as $guncel_vardiya_tarihi) { ?>
                        <th>
                            <?php echo $guncel_vardiya_tarihi;
                    } ?>
                    </th>
                </tr>
                <?php
                foreach ($results as $personel): ?>
                    <tr>
                        <td>
                            <?php echo $personel['ad_soyad']; ?>
                        </td><?php for ($i = 0; $i < 7; $i++){ ?>
                        <td>
    <select class="form-control" id="<?php echo $personel['id'] ?>">
    <option value="<?php echo $vardiyaTuruData[0];?>">Erken
    <option value="<?php echo $vardiyaTuruData[1];?>">Geç
    </select><?php } ?>          
                        </td>
                        <?php endforeach; ?>
                    </td>
                </tr>
            </table>
            <input type="submit" value="Gönder">
        </form>
    </body>
    </html>
  • 23-09-2023, 18:46:14
    #2
    Her hücre için farklı bir "id" değeriniz olmalı. id değerlerini otomatik olarak artan bir şekilde ayarlayabilirsiniz. Bunun için de https://www.w3schools.com/sql/sql_autoincrement.asp buradan faydalanabilirsiniz.
  • 23-09-2023, 21:41:13
    #3
    GVertigang adlı üyeden alıntı: mesajı görüntüle
    Her hücre için farklı bir "id" değeriniz olmalı. id değerlerini otomatik olarak artan bir şekilde ayarlayabilirsiniz. Bunun için de https://www.w3schools.com/sql/sql_autoincrement.asp buradan faydalanabilirsiniz.
    teşekkürler bir deneyeyim.
  • 25-09-2023, 10:47:55
    #4
    Bu yöntem zaten benim vardiya_id yöntemimde mevcut benim bahsetmek istediğim çok daha farklı yani bunu her hücreye nasıl uygulayacağımı anlayamadım.


    Bu elle girişleri form üzerinden yapmak istiyorum tablo şeklinde.
  • 26-09-2023, 21:22:38
    #5
    Ana konunuza geçmeden önce sormak istediğim bazı sorular;
    Vardiya tarihleri nereden nasıl oluşturuluyor?
    Bu tarihler aylık mı olacak yoksa belli bir periyot ile mi?
    Ayrıca vardiya türü Erken, Geç dışında başka bir tür gelecek mi?
  • 26-09-2023, 23:25:13
    #6
    @gokhanb; Veritabanı kısmına geçince paylaşacağım.

  • 27-09-2023, 08:34:47
    #7
    QuarkChain adlı üyeden alıntı: mesajı görüntüle
    Ana konunuza geçmeden önce sormak istediğim bazı sorular;
    Vardiya tarihleri nereden nasıl oluşturuluyor?
    Bu tarihler aylık mı olacak yoksa belli bir periyot ile mi?
    Ayrıca vardiya türü Erken, Geç dışında başka bir tür gelecek mi?
    Merhaba öncelikle ilginiz için teşekkür ediyorum. Vardiya türleri erken,geç,haftalık izin vs gibi değişiyor. Ama bu erken ve geç kısmını saate bağlamadım. Bunlara bir vardiya_turu tablosu oluşturdum oradan selectbox ile çekiyor. Tarihler haftalık geliyor. Yani vardiya haftalık olarak yapılıyor.Attığım kodda tarihi sistemden çekip o haftanın pazartesi gününden itibaren günleri çekiyor.
  • 27-09-2023, 08:35:57
    #8
    QuarkChain adlı üyeden alıntı: mesajı görüntüle
    @gokhanb; Veritabanı kısmına geçince paylaşacağım.

    Emeğinize sağlık çok güzel duruyor merakla bekliyorum. 🙏🏻
  • 27-09-2023, 11:42:08
    #9
    Hazır elim değmişken. @gokhanb;
    Vardiya tablosu haftalık olarak sıfırlanacağını varsayalım.
    Kayıtlı personeller'den müsait olanlar sağda listeleniyor olacak.
    Vardiyaya eklenmek isteniyorsa, sağ listeden çıkıp vardiya listesine gidecek.
    İstenirse, vardiya tablosundan geri çıkarılacak, sağ listeye tekrar gelecek.
    Mantık doğru ilerlemiş olur mu?
    Bu tablonun üstüne ayrıca,
    ileri geri haftalık değişim butonları ilave edilebilir.

    Eğer db de bu hafta için kayıt varsa liste dolu olmuş olacak.