Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP सरणी के साथ तालिका पंक्ति को कैसे मर्ज करें?

मैं नेस्टेड लूप को संसाधित करने के लिए 'आगे पढ़ें' तकनीक का उपयोग करता हूं। इसका मतलब यह है कि 'foreach' लूप का उपयोग नहीं किया जा सकता है क्योंकि अगले रिकॉर्ड को जैसे ही वर्तमान में संसाधित किया गया है, वैसे ही पढ़ा जाना चाहिए। मूल रूप से, लूप में आप जो अंतिम क्रिया करते हैं वह अगला रिकॉर्ड पढ़ा जाता है क्योंकि आप इसे अगले पुनरावृत्ति के लिए सेट कर रहे हैं। ध्यान दें, आप कभी भी यह परीक्षण नहीं करते हैं कि रिकॉर्ड को कब प्रिंट करना है क्योंकि यह समूहों की संरचना द्वारा तय किया जाता है। कोड लूप डेटा में समूहों की संरचना के समान होते हैं

एक 'समूह' सभी है समान id . के साथ रिकॉर्ड ।

मुझे लगता है कि समूह में प्रत्येक प्रविष्टि के लिए 'सामग्री' और 'अधिनियम' समान हैं।

उपयुक्त 'td' टैग में 'rowspan' विशेषताएँ जोड़ने के लिए संपादित किया गया। मुझे संदेह है कि इस बिंदु पर सीएसएस आसान हो सकता है।

मुद्दा यह है कि समूह को तब तक प्रदर्शित नहीं किया जा सकता जब तक यह ज्ञात नहीं हो जाता कि उसमें कितनी प्रविष्टियाँ हैं।

इसलिए, मैं एक सरणी में समूह से संबंधित सभी रिकॉर्ड 'बफर' करता हूं। समूह के अंत में, यह html में उपयुक्त 'rowspan' विशेषताओं के साथ प्रदर्शित होता है।

यह PHP 5.3.18 पर परीक्षण किया गया है। इसमें परीक्षण डेटा शामिल है।

<?php /* Q24028866 */
$testData = array(array('id' => 2, 'date' => '05/13/2014', 'content' => 'some contents 2', 'act' => 'act1 act2 act3'),
                  array('id' => 2, 'date' => '05/28/2014', 'content' => 'some contents 2',  'act' => 'act1 act2 act3'),
                  array('id' => 7, 'date' => '06/04/2014', 'content' => 'some contents 7',  'act' => 'act1 act2 act3'),
                  array('id' => 8, 'date' => '06/08/2014', 'content' => 'some contents 8',  'act' => 'act1 act2 act3'),
                  array('id' => 8, 'date' => '06/09/2014', 'content' => 'some contents 8',  'act' => 'act1 act2 act3'));
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<table border='1'>
<thead><th>Date</th><th>Content</th><th>Act</th></thead>
<?php
// use 'read ahead' so there is always a 'previous' record to compare against...
$iterContents = new \ArrayIterator($testData);
$curEntry = $iterContents->current();

while ($iterContents->valid()) { // there are entries to process

    $curId = $curEntry['id'];

    // buffer the group to find out how many entries it has...
    $buffer = array();
    $buffer[] = $curEntry;

    $iterContents->next(); // next entry - may be same or different id...
    $curEntry = $iterContents->current();

    while ($iterContents->valid() && $curEntry['id'] == $curId) {  // process the group...
        $buffer[] = $curEntry; // store all records for a group in the buffer

        $iterContents->next(); // next entry - may be same or different id...
        $curEntry = $iterContents->current();
    }

     // display the current group in the buffer...
     echo '<tr>';
     echo '<td>', $buffer[0]['date'], '</td>';
     $rowspan = count($buffer) > 1 ? ' rowspan="'. count($buffer) .'"' : '';
     echo '<td', $rowspan, '>', $buffer[0]['content'], '</td>',
           '<td', $rowspan, '>', $buffer[0]['act'], '</td>';
     echo '</tr>';
     for($i = 1; $i < count($buffer); $i++) {
          echo '<tr><td>', $buffer[$i]['date'], '</td>';
          echo '</tr>';
     }
} ?>
</table>
</body>
</html>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इस mysql कनेक्शन स्ट्रिंग में क्या गलत है?

  2. एक सेलेक्ट स्टेटमेंट की दो पंक्तियों के बीच MySQL अंतर

  3. जावा दिनांक प्रकार को MySQL दिनांक प्रकार में कैसे स्टोर करें?

  4. mysql में रेगेक्स कैप्चर समूहों को सिम्युलेट करना

  5. डेटा द्वारा समूह के आधार पर विशिष्ट mysql अद्यतन