Merhabalar herkese ;
geliştirdiğim şirket içi uygulamamızda çözemediğim bir algoritma var.Bildiğimiz takvim fakat bu takvim bulunduğu günün verilerini alıcak.bu verilerinin atölyedeki teknisyenlerinin adının altına saatlere göre gelip oturucak.Şimdi bi tasarı kurdum aklımda ama bir türlü nereyi döngüye alıcam sql sorgusu ne şekilde olucak açıkcası beynim durdu.Yardımcı olursanız çok mutlu olurum.
http://prntscr.com/hrj25y
Takvim uygulamasının çözülemeyen mantığı
9
●624
- 24-12-2017, 11:59:08öncelikle cevabınız için teşekkürler tamamdır mantık doğru fakat yarın birgün yeni teknisyen geldi ve yazılımcı değişti.yeni teknisyen eklendiği zaman tekrardan sql kodlarının değişmesi gerekiyor böyle tam otomatik br döngüye sokmak istedimyazilimajansi adlı üyeden alıntı: mesajı görüntüle
- 24-12-2017, 12:06:37Üyeliği durdurulduKodu revize ederek yapabilirsiniz.Loren adlı üyeden alıntı: mesajı görüntüle
Personeller tablosunu oluşturalım.
id | personel_adi | birimi dedik mesela
SELECT a.*, p.* FROM atolye AS a INNER JOIN personel AS p ON p.id = a.personel_id
Tablolaştırma tarafında personelleri yan yana eklerken yeni personelin olduğu yerde eğer alanı ile yeni <td> yazdırır devam edersiniz. - 24-12-2017, 12:09:08bu seferde personelin ait olduğu dilime göre veri çekerken sıkıntı oluyoryazilimajansi adlı üyeden alıntı: mesajı görüntüle
aslında biraz kavradım gibi ama tam çıkmadan işin içinden
- 24-12-2017, 12:14:14Üyeliği durdurulduPersoneller gibi saat dilimlerine tablo yaparsanızLoren adlı üyeden alıntı: mesajı görüntüle
Hatta ben sizin yerinizde olsam yapısını şu şekilde kurarım
saat_dilimleri için
id | saat_dilimi_adi | deger
10 tane saat diliminiz var diyelim. Bunları eklerken veritabanına mesela bir listmenuden
<option value="1">08:35-09:35</option> <option value="2">09:35-10:05</option>
şeklinde eklerseniz diyelim ki "atolye" tablosuna çağırırkende bu döngü ile çağırırsınız. Join yapmanıza gerek yok while içinde while olabilir.
Zaman dilimlerim değişmeyecek tablo yapmayayım diyorsanız dizi yapabilirsiniz. Ona göre döktürürsünüz.
En üstte zaman dilimleri ardından personel ile ilgili atolye tablosuna bağlanmış kod.
Her zaman dilimi While içinde dönerken onunda içerisinde biraz önceki yapmış olduğumuz kod döner. Ve tam olarak istediğiniz olur hocam. - 24-12-2017, 12:19:45aynen öyle hocam zaten bende öyle düşündüm zaman dlimi şeklinde yapıcam saat aralığı değil anlaşılsın diye öyle yazdım ama dediğiniz mantıklı cevabınız için çok ama çok teşekkür ederim sağolunyazilimajansi adlı üyeden alıntı: mesajı görüntüle
- 24-12-2017, 12:20:24Üyeliği durdurulduRica ederim yine takılırsanız istişare ederiz. Kolay gelsin.Loren adlı üyeden alıntı: mesajı görüntüle
- 24-12-2017, 20:27:52aşağıda fikir vermesi açısından örnek bir uygulama paylaştım. SQL de tutmak istiyorsanız burdaki dizi yapısına uygun tablolar oluşturabilirsiniz. Böyle birşeyi sınıf ile yapmak daha güzel olacaktır
<?php $categories = [ 1 => [ 'category' => 'Test Arıza', 'user' => 'İbrahim Kılıçaslan' ], 2 => [ 'category' => 'Ağır Bakım', 'user' => 'Alper Sızar' ], 3 => [ 'category' => 'Bakım', 'user' => 'Sezer Şimşek' ], 4 => [ 'category' => 'Muhtelif Bakım', 'user' => 'Recep Yılmaz' ] ]; $periods = [ 1 => [ 'time1' => '08:35', 'time2' => '09:35', 'text' => '08:35 - 09:35' ], 2 => [ 'time1' => '09:35', 'time2' => '10:35', 'text' => '09:35 - 10:35' ], 3 => [ 'time1' => '10:35', 'time2' => '11:35', 'text' => '10:35 - 11:35' ], 4 => [ 'time1' => '11:35', 'time2' => '12:35', 'text' => '11:35 - 12:35' ], 5 => [ 'time1' => '12:35', 'time2' => '13:35', 'text' => '12:35 - 13:35' ] ]; $jobs = [ 1 => [ 'date' => '2017-12-24', 'category' => 1, 'period' => 1, 'text' => '01 AD 02<br /> Lift No : 2<br /> Sorun : Ses Gelmesi' ], 2 => [ 'date' => '2017-12-24', 'category' => 3, 'period' => 3, 'text' => '01 AD 02<br /> Lift No : 2<br /> Sorun : Test Sorun' ], 3 => [ 'date' => '2017-12-24', 'category' => 4, 'period' => 1, 'text' => '01 AD 02<br /> Lift No : 2<br /> Sorun : Ses Geliyor' ], 4 => [ 'date' => '2017-12-25', 'category' => 4, 'period' => 1, 'text' => '01 AD 02<br /> Lift No : 2<br /> Sorun : Ses Gitmiyor' ] ]; function now_jobs($jobs) { if($jobs['date'] == date('Y-m-d')) return true; return false; } $now_jobs = array_filter($jobs, 'now_jobs'); ?> <!DOCTYPE html> <html> <head> <style type="text/css"> table, td, th{border: 1px solid #ccc;} </style> </head> <body> <table width="100%"> <thead> <tr> <th></th> <?php echo '<th>' . implode(array_column($categories,'category'), '</th><th>') . '</th>' ?> </tr> <tr> <th>Çalışma Saatleri</th> <?php echo '<th>' . implode(array_column($categories,'user'), '</th><th>') . '</th>' ?> </tr> </thead> <tbody> <?php foreach ($periods as $per_key => $period) { ?> <tr> <td><?php echo $period['text']; ?></td> <?php foreach ($categories as $cat_key => $category) { ?> <td> <?php foreach ($now_jobs as $now_job) { ?> <?php if($now_job['category'] == $per_key && $now_job['date'] == date('Y-m-d') && $now_job['period'] == $cat_key) { ?> <?php echo $now_job['text']; ?> <?php } ?> <?php } ?> </td> <?php } ?> </tr> <?php } ?> </tbody> </table> </body> </html>
aslında biraz kavradım gibi ama tam çıkmadan işin içinden