• 21-02-2020, 23:09:19
    #10
    Evet while ile verileri kullanmak üzere dizide toplaman gerekiyor bu arada bize gereken formata sokuyoruz.
    Tarihi aynı verileri alt dizide bir araya topluyoruz.
    <?php
    $table = [];
    while($row2 = $result->fetch_assoc()){
    $table[$row2['giris']][] = $row2;
    }
  • 21-02-2020, 23:57:45
    #11
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Met adlı üyeden alıntı: mesajı görüntüle
    Evet while ile verileri kullanmak üzere dizide toplaman gerekiyor bu arada bize gereken formata sokuyoruz.
    Tarihi aynı verileri alt dizide bir araya topluyoruz.
    <?php
    $table = [];
    while($row2 = $result->fetch_assoc()){
    $table[$row2['giris']][] = $row2;
    }
    Doğru yolda ilerlerdiğimi düşünüyorum while ve foreach çalıştı

    Başta bunu tek gelecek veri üzerinde denedim (adım adım gitmek için)

    <?
    $table=[];
    while ($row2=$result->fetch_assoc()){
    $table[$row2['alis_tarih']][]=$row2;
    }
    
    foreach ($table as $tr){
    ?>
    <tbody>
    <? echo '<tr>';
    echo '<td rowspan="'.count($tr).'">'.$tr[0]['alis_tarih'].'</td>';
    echo '<td rowspan="'.count($tr).'">'.$tr[0]['alis_tarih'].'</td>';
    echo '<td>'.implode('<br>', array_column($tr, 'alis_tarih')).'</td>';
    echo '</tr>';
    }
    ?>
    </tbody>
    </table>

    gelis tarihi doğru geldi teslim tarihi de doğru geldi (aslında yanlış ama doğru kabul edelim) işlem kısmı da 3 satır olmalı çünkü o tarihte3 satırlık işlem var orası da doğru

    Yalnız bir syntax hatası yaptığım için $table[$row2['alis_tarih']][]=$row2; bölümünü diğer verilerle dolduramadım. yani orada ilk verdiğin örnekteki gibi giris,teslim ve islem kısımlarını ekleyemedim oradaki doğru yazım nasıl olmalı?
  • 22-02-2020, 00:06:51
    #12
    Ben senin yerinde olsam yapılan işlemleri aynı sql cümlesinde yazmaz, sağ kolonda ayrı bir döngüde yapardım iş çözülürdü. Kaçtane yapılan işlem varsa sıralanırdı
  • 22-02-2020, 00:11:45
    #13
    freguencey adlı üyeden alıntı: mesajı görüntüle
    Ben senin yerinde olsam yapılan işlemleri aynı sql cümlesinde yazmaz, sağ kolonda ayrı bir döngüde yapardım iş çözülürdü. Kaçtane yapılan işlem varsa sıralanırdı
    onu da denedim ama istediğim sonuçları alamadım. Bu sistem şimdilik ilerliyor gibi görünüyor hemde tek sorguda çözülürse işlem yükü de azalır diye düşünüyorum
  • 22-02-2020, 00:15:47
    #14
    Hocam gerek yok sen ilk olarak while döngüsüne sok, sol taraf istediğin gibi tek tarih olarak gelsin, sağ tarafa table içerisine tekrar veritabanı sorgusu at while döngüsüne sok alt alta tüm açılan işlem kayıtları gelsin daha basit yolunu söylüyorum sana. Yapamazsan Anydesk gönder halledeyim
  • 22-02-2020, 00:57:46
    #15
    ilk mesajımda açıklama olarak eklemiştim, eğer hem giriş hemde teslim tarihinin aynı olması gerekiyorsa indexi ona göre oluşturmanız gerekir.
    giriş tarihi baz alınırsa yeni dizinin indexi $table["2019-1205"] olur ve giriş tarihi bu olan kayıtlar dizide toplanır.
    giriş tarihi yanında teslim tarihide aynı olmalıysa ağaıdaki gibi birleştirmeniz gerekir bu durumda index $table["2019-12-052019-12-06"] olur ve bu dizide depolarsınız.
    $table[$row['giris'].$row['teslim']][] = $row;
    ​​​​​
    Her satırda yeni bir sorgu yaparsanız 1000 satırlık bir tabloda 1 sorgu yerine 1001 sorgu yapmış olursunuz tercih meselesi tabi ki.
  • 22-02-2020, 13:36:21
    #16
    Met adlı üyeden alıntı: mesajı görüntüle
    ilk mesajımda açıklama olarak eklemiştim, eğer hem giriş hemde teslim tarihinin aynı olması gerekiyorsa indexi ona göre oluşturmanız gerekir.
    giriş tarihi baz alınırsa yeni dizinin indexi $table["2019-1205"] olur ve giriş tarihi bu olan kayıtlar dizide toplanır.
    giriş tarihi yanında teslim tarihide aynı olmalıysa ağaıdaki gibi birleştirmeniz gerekir bu durumda index $table["2019-12-052019-12-06"] olur ve bu dizide depolarsınız.
    $table[$row['giris'].$row['teslim']][] = $row;

    Her satırda yeni bir sorgu yaparsanız 1000 satırlık bir tabloda 1 sorgu yerine 1001 sorgu yapmış olursunuz tercih meselesi tabi ki.
    Çok teşekkür ediyorum, farklı bir şey öğrendim ve amacımda tabiki en kısa şekilde en az sorguya iş çözmek. Şimdiye kadar da tam istediğim gibi gidiyor. Tam ders notu gibi oldu bu çalışma

    Şimdi şöyle bir durum oldu büyük ihtimalle konuyu bilmediğim için syntax hatası yapıyor olabilirim. Bir kaç şey denedim ama tam tutturamadım.

    Örneğin kodum şu şekildeyken

    echo '<td>'.implode('<br>', array_column($tr, 'urun_adi')).'</td>';

    yukarıdaki gibi sonuç geliyor ki buraya kadar herşey normal ama ikini üçüncü verileri istediğimde durum birbirine giriyor.

    echo '<td>'.implode('<br>', array_column($tr, 'marka', 'urun_adi')).'</td>';
    şeklinde kullandığımda

    ürün adlarını vermeden sadece marka giriyor

    echo '<td>'.implode('', array_column($tr, 'marka')).' '.implode(array_column($tr, 'urun_adi')) .'<br>'.'</td>';
    şeklinde revize ettiğimde


    yani yan yana yazması gerekenler birbirine giriyor
  • 22-02-2020, 17:59:13
    #17
    Tek stun gelecekse imlode ve array_column kullanmak hem kodu okunur hale getirir hemde döngü kullanmadan halletmiş olursunuz.
    Birden fazla veri gelecekse imlode, array_column ve array_merge ile çözülür ama okunaklık ve basitlik kalmaz bu neden döngü kullanmak daha mantıklı aynı satırı aşağıdaki gibi istediğiniz şekilde düzenleyebilirsiniz.
    Kafa karışıklığı yarattığının farkındayım fakat algoritma geliştirmek yazılımın bir parçasıysa her zaman en iyi yönteme evrilmeniz gerekir yoksa gelişme kaydedemezsiniz.
    echo '<td>';
    foreach ($tr as $td){    
     echo $td['marka'].' - '.$td['urun_adi'].' --- '.$td['baska_biseyler'].'<br>';
    }
    echo '</td>';
  • 22-02-2020, 21:33:50
    #18
    Met adlı üyeden alıntı: mesajı görüntüle
    Tek stun gelecekse imlode ve array_column kullanmak hem kodu okunur hale getirir hemde döngü kullanmadan halletmiş olursunuz.
    Birden fazla veri gelecekse imlode, array_column ve array_merge ile çözülür ama okunaklık ve basitlik kalmaz bu neden döngü kullanmak daha mantıklı aynı satırı aşağıdaki gibi istediğiniz şekilde düzenleyebilirsiniz.
    Kafa karışıklığı yarattığının farkındayım fakat algoritma geliştirmek yazılımın bir parçasıysa her zaman en iyi yönteme evrilmeniz gerekir yoksa gelişme kaydedemezsiniz.
    echo '<td>';
    foreach ($tr as $td){    
     echo $td['marka'].' - '.$td['urun_adi'].' --- '.$td['baska_biseyler'].'<br>';
    }
    echo '</td>';
    Yok kafa karışıklığı olmadı,yeni birşey öğrenmiş oldum sayende teşekkür ederim. Bende kafamda anlattığın gibi bir algoritma düşünmüştüm ama nasıl yapacağımı bilmiyordum. Şu an istediğim gibi yaptım, şekillendirdim. En son anlatmış olduğun olayın akışını tam çözemedim. Çalıştı, bende istediğim gibi şekillendirdim ama neden ikinci kez foreach içine aldık onun mantığını anlayamadım