2015-02-13 7 views
5

चाहता था मैं 2 टेबलपीएचपी शॉपिंग कार्ट - श्रेणियाँ पेज के रूप में

उत्पादों products

और श्रेणियों
categories
(CatParentId 0 जनक श्रेणी है) काम नहीं कर रहा।

जो मैं प्राप्त करने का प्रयास कर रहा हूं वह यह है कि जब कोई उपयोगकर्ता मूल श्रेणी पर क्लिक करता है, तो उसे उस श्रेणी में सूचीबद्ध उत्पादों को और साथ ही साथ बाल श्रेणी के उत्पादों को भी लाया जाना चाहिए और यदि उपयोगकर्ता किसी भी बच्चे श्रेणी पर क्लिक करता है, तो उसे केवल बाल श्रेणी में सूचीबद्ध उत्पादों को लाएं।

यहाँ पूरा कोड है कि मैं अब तक का इस्तेमाल किया है, लेकिन कोई सफलता के लिए:

<section class="col-lg-9 col-md-9 col-sm-9"> 
    <?php 
    $catId = $catName = $n = ""; 
    $id = 0; 
    require_once 'Classes/class.Validation.php'; 
    $validate = new Validation(); 
    if (isset($_GET['name']) && $_GET['name'] != "") { 
     $catName = $_GET['name']; 
     $u = "SELECT CatId, CatName, CatParentId FROM categories WHERE CatName = '".$catName."'"; 
     $validate->Query($u); 
     if ($validate->NumRows() >= 1) { 
      while ($rows = $validate->FetchAllDatas()) { 
       $id = $rows['CatId']; 
       $n = $rows['CatName']; 
       $query = "SELECT 
           c.CatName, 
           p.ProdCode, 
           p.ProdName 
          FROM 
           products p, 
           categories c 
          WHERE 
           c.CatId = p.CatId 
           AND 
           c.CatParentId = '".$id."'"; 
       $validate->Query($query); 
       if ($validate->NumRows() >= 1) { 
        while ($row = $validate->FetchAllDatas()) { 
         // show products here 
        } 
       } else { 
        $query = "SELECT 
            c.CatName, 
            p.ProdCode, 
            p.ProdName 
           FROM 
            products p, 
            categories c 
           WHERE 
            c.CatParentId = p.CatId 
            AND 
            c.CatId = '".$id."' 
           "; 
        $validate->Query($query); 
        if ($validate->NumRows() >= 1) { 
         while ($row = $validate->FetchAllDatas()) { 
          // show products here 
         } 
        } 
       } 

      } 
     } 
    } 
    ?> 
</section> 

मैं बहुत यकीन है कि मैं एक तार्किक त्रुटि है, लेकिन मैं यह नहीं मिल सकता है, जहां मैं इसे बना दिया है कि कर रहा हूँ। कृपया मेरी मदद करो। किसी भी तरह की सहायता की हम सराहना करेंगे।

अद्यतन 1:

मैं इसे अपने दम पर हल कर लिया है। प्रयुक्त INNER JOIN

यहाँ कोड है - भविष्य में संदर्भ के लिए: ->

<section class="col-lg-9 col-md-9 col-sm-9"> 
    <?php 
    $catId = $catName = $n = ""; 
    $id = 0; 
    require_once 'Classes/class.Validation.php'; 
    $validate = new Validation('benef8w7_ecommerce'); 
    if (isset($_GET['name']) && $_GET['name'] != "") { 
     $catName = $_GET['name']; 
     $query = "SELECT 
         p.ProdCode, 
         p.ProdRate, 
         c1.CatId, 
         c1.CatName, 
         c2.CatParentId 
        FROM 
         categories c2 
          INNER JOIN 
           categories c1 
          ON 
           c2.CatId = c1.CatParentId 
            INNER JOIN 
             products p 
            ON 
             p.CatId = c1.CatId 
        WHERE 
         c2.CatName = '".$catName."'"; 
     $validate->Query($query); 
     if ($validate->NumRows() >= 1) { 
      while ($row = $validate->FetchAllDatas()) { 
       // show all the products here for both parent and child categories. 
      } 
     } else { 
      $query = "SELECT 
          p.ProdCode, 
          p.ProdName, 
          c.CatId, 
          c.CatParentId, 
          c.CatName 
         FROM 
          products p 
           INNER JOIN 
            categories c 
           ON 
            c.CatId = p.CatId 
         WHERE 
          c.CatName = '".$catName."'"; 
      $validate->Query($query); 
      if ($validate->NumRows() >= 1) { 
       while ($row = $validate->FetchAllDatas()) { 
        // show products here if there are no child categories. 
       } 
      } 
     } 
    } 
    ?> 
</section> 

लेकिन अद्यतन 1 के बाद, मुझे लगता है मैं अन्य बग/त्रुटि के साथ आए हैं: ->

ऊपर प्रश्नों के अंदर अपडेट 1 ठीक काम करता है बशर्ते कि मूल श्रेणी में कोई उत्पाद न हो लेकिन बाल श्रेणी के अंदर उत्पाद हैं। यदि मूल श्रेणी (बाल श्रेणी रखने वाले) में उत्पाद हैं, तो मूल श्रेणी उत्पाद (ओं) दिखाए जाते हैं/दिखाए जाते हैं और केवल बाल श्रेणी उत्पाद दिखाए जाते हैं।

यदि उपयोगकर्ता अभिभावक श्रेणी पर क्लिक करता है तो मैं मूल श्रेणी के सभी उत्पादों और बाल श्रेणी के बच्चों को भी दिखाना चाहता हूं।

मैं इस बग/त्रुटि को कैसे हल करूं?

+0

कृपया मुझे बाहर करने में मदद। मैं इसे 3 दिनों से आजमा रहा हूं .. –

उत्तर

0

मैं php के लिए बहुत नया हूं और मैंने सोचा कि मैं आपकी समस्या के बारे में सोचने से कुछ सीख सकता हूं। तो यह चौराहे मेरे दिमाग में आया। मैंने किसी प्रकार का छद्म कोड इस्तेमाल किया..मुझे आशा है कि आपको विचार मिलेगा।

SELECT CatId, CatParentId FROM categories WHERE CatName = '$catName'; 

you save CatId and CatParentId to php vars... 

//is it child? 
    if($CatParentId > 0) { 
    SELECT ProdName FROM products WHERE CatId = '$CatId'; 

    //display all products from this child category 
} else { 
    //for when our category is a parent 
    //we need to find how many childs it has. 
    //I suggest using an array of all cat IDs we want to display products from 

    SELECT CatId FROM categories WHERE CatParentID = '$CatId'; 
    //we store it to an array 
    //we cannot forget about our Parent category 
    $categories[x]; 

    //we want to create SELECT 
    //now we need to add php code 
    if(sizeof($categories) == 1){ //our parent has 0 childs 
     SELECT ProdName FROM products WHERE CatId = '$CatId'; 
    } else { 
    SELECT ProdName FROM products WHERE CatId = '$CatId' + 
    for($i = 1; $i <= sizeof($categories); $i++) { //I assume we saved our parent to $categories[0] 
     //here you add remaining conditions 
     "OR CatId = '$categories[i]"; 
    } 
     + add last ";" 
    } 
} 

मैं innerjoins नफरत:]

आनंद और मुझे आशा है कि यह भी एक अच्छा प्रोग्रामर जवाब ताकि हम एक प्रतिक्रिया प्राप्त:]

संबंधित मुद्दे