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

PHP - नेस्टेड सूची भी कॉलम में टूटी हुई (फिक्स और अपडेट)

आपने अपने दोनों प्रश्नों में यह नहीं दिखाया है कि डेटाबेस तालिका क्या है, इसलिए मैं इसका विशेष रूप से उत्तर नहीं दे सकता, लेकिन मैं अपने सुझाव की रूपरेखा तैयार करूंगा।

आप अपनी समाचार प्रविष्टियों को क्रमबद्ध और विषयों सहित समूहीकृत करने के लिए mysql में एकत्रीकरण कार्यों का उपयोग कर सकते हैं। उनकी गिनती। आप पहले गणना प्राप्त करने के लिए दो प्रश्न कर सकते हैं, यह इस बात पर निर्भर करता है कि आप अपने डेटा से कैसे निपटना चाहते हैं।

किसी भी स्थिति में, mysql_... . का उपयोग करके फ़ंक्शन, आपके द्वारा डेटाबेस से चुने गए सभी डेटा मेमोरी में होंगे (आंतरिक के कारण दो बार भी)। तो आपके पिछले प्रश्न की तरह एक और सरणी होने से PHP में लेखन अनुकूलन पर प्रतिलिपि बनाने के लिए बहुत धन्यवाद नहीं होना चाहिए। केवल एक छोटा ओवरहेड प्रभावी ढंग से।

इससे पहले कि आप वास्तविक आउटपुट का ध्यान रखें, आपको अपना डेटा क्रम में प्राप्त करना चाहिए ताकि आपको डेटा हैंडलिंग और आउटपुट लॉजिक को मिलाने की आवश्यकता न हो। मिश्रण चीजों को और अधिक जटिल बना देता है इसलिए हल करना कठिन होता है। उदाहरण के लिए यदि आप अपने आउटपुट को सरल कार्यों में लगाते हैं, तो यह अधिक आसान हो जाता है:

function render_list($title, array $entries)
{
    echo '<ul><li>', $title, '<ul>';
    foreach($entries as $entry)
    {
        echo '<li>', $entry['NewsID'], '</li>';
    }
    echo '</ul></li></ul>;
}

function render_column(array $topics)
{
    echo '<div class="column">';
    foreach($topics as $topic)
    {
        render_list($topic['title'], $topic['entries']);
    }
    echo '</div>';
}

यह आपकी आउटपुट समस्या को पहले ही हल कर देता है, इसलिए हमें अब इसकी परवाह करने की आवश्यकता नहीं है। हमें केवल इस बात पर ध्यान देने की आवश्यकता है कि पैरामीटर के रूप में इन कार्यों में क्या फीड किया जाए।

X विषय प्रति स्तंभ प्रकार:

इस प्रकार के साथ डेटा प्रति मान एक विषय के साथ एक सरणी होना चाहिए, जैसा आपने पिछले प्रश्न के साथ किया था। मैं कहूंगा कि यह पहले ही हल हो चुका है। पता नहीं कॉलम की संख्या के साथ आपको कौन सी ठोस समस्या है, गणना अच्छी लगती है, इसलिए मैं इसे तब तक छोड़ देता हूं जब तक आप इसके बारे में ठोस जानकारी प्रदान नहीं करते। "काम नहीं करता" योग्य नहीं है।

X समाचार आइटम प्रति स्तंभ प्रकार:

यह अधिक दिलचस्प है। यहां एक आसान कदम यह है कि विषय शीर्षक को फिर से जोड़कर पिछले विषय को अगले कॉलम के साथ जारी रखा जाए। कुछ इस तरह:

Topic A    Topic A    Topic B
 - A-1      - A-5      - B-4
 - A-2     Topic B     - B-5
 - A-3      - B-1      - B-6
 - A-4      - B-2
            - B-3

इसे प्राप्त करने के लिए आपको अपने डेटा को थोड़ा अलग तरीके से संसाधित करने की आवश्यकता है, अर्थात् आइटम (समाचार) गणना द्वारा।

मान लें कि आप अपने डेटाबेस से समूहीकृत (और इसलिए क्रमबद्ध) डेटा पुनर्प्राप्त करने में कामयाब रहे:

SELECT TopicName, NewsID FROM news GROUP BY 1;

फिर आप सभी लौटाई गई पंक्तियों पर पुनरावृति कर सकते हैं और अपने कॉलम बना सकते हैं, अंत में उन्हें आउटपुट कर सकते हैं (पहले ही हल हो चुके हैं):

$itemsPerColumn = 4;

// get columns
$topics = array();
$items = 0;
$lastTopic = NULL;

foreach ($rows as $row)
{
    if ($lastTopic != $row['TopicName'])
    {
        $topic = array('title' => $row['TopicName']);
        $topics[] = &$topic;
    }
    $topic['entries'][] = $row;

    $items++;
    if ($items === $itemsPerColumn)
    {
        $columns[] = $topics;
        $topics = array();
        $lastTopic = NULL;
    }
}

// output
foreach($columns as $column)
{
    render_column($column);
}

तो यह वास्तव में पिछले उत्तर से तुलनीय है, लेकिन इस बार आपको उनके विषय द्वारा आदेशित समाचार प्राप्त करने के लिए सरणी को फिर से व्यवस्थित करने की आवश्यकता नहीं है क्योंकि डेटाबेस क्वेरी पहले से ही ऐसा करती है (आप पिछले उत्तर के लिए भी ऐसा कर सकते हैं) )।

फिर फिर से यह वही है:लौटाए गए परिणाम-सेट पर पुनरावृत्ति और डेटा को उस संरचना में लाना जिसे आप आउटपुट कर सकते हैं। इनपुट, प्रोसेसिंग, आउटपुट। यह हमेशा एक जैसा होता है।

आशा है कि यह सहायक होगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. IOS में amazon RDS कैसे कनेक्ट करें

  2. मैसकल - सबसे कम संबंध संख्या के साथ पंक्ति प्राप्त करें

  3. mysql2 मणि ​​गलत mysql क्लाइंट लाइब्रेरी के लिए संकलित है

  4. रूबी सीएसवी मल्टीलाइन फ़ील्ड पढ़ें

  5. चुनिंदा सूची में श्रेणियों, उपश्रेणियों, उप-श्रेणियों को कैसे प्रदर्शित करें - php/mysql?