Jump to content

[SOLVED] Help array,displaying products


devain

Recommended Posts

I am new to working with arrays and it took me alot of hours to come up with the following Was Wondering if I could get some input on some code to see if I am getting it right. Dont know if this a efficient way of doing it but it seem to work sorta with the exception of the list statement. I am hoping I am posting this in the right section.

 

Products table contains a array categories(cat1,cat2,cat3)

 

What I am wanting to do is display the results by searching the array if the $category listed below is

in the array display that product

 

Products Table is as follows

id product_name categories

41708 TEST cat1,cat2,cat3,cat4

 

 

Here is the test page which is not displaying the results

 

 

http://72.29.78.150/~restore/test3.php

 

$category='cat1'; 
// still not sure why you have to have this before the query I am assuming that this tells php that its going to be an array and is blank until query 

$cat_categories = array(); 

//  still not sure why this has to be here before the query I am assuming that this tells php that its going to be an array and is blank until query 


$all_categories = array(); 

///             ---------------------------------------------- 


// Query the database which is selecting all entries in the products tabls 


$query = "SELECT product_name,id,categories from products limit 5"; 
         


$result = mysql_query($query) or die(mysql_error()); 

while($row = MySQL_fetch_assoc($result)){ 

// read this still not really sure why I need the array 
//merge especially since I am only dealing with one table that contains the array cat1,cat2,cat3 


         
$categories = array_merge($cat_categories,explode(',',$row['categories']));      

           
   if (in_array("cat1", $categories,0)) { 



         echo("<br><br>TRUE<br>  If $ category='cat1' is in array this is where I want to create vairables for the fields product_name and id to display each product meaning more then one to user<br><br>");  

         echo "<br>Product ID:<br>" . $row['id'] . "<br>"; 
      
         echo("<br>"); 
      
         echo "Product Name:<br>" . $row['product_name'] . "<br>"; 


// I have tried $result here but nothing also 

list($product_name, $id) = $row;  


// Variables  I want to use using the list function above but not working 

echo("<br><br> Trying to use the below Variables which are $ product_name $ ID using the list function but does not seem to be working"); 
                                                                                                                          
        echo("<br><br>Product Name:<br>$product_name<br><br>Product_Id:$id<br>"); 
         
///  Else statement if no results exist 
        
}else{ 
         echo("<br>-------------------------------------------------------------------------------"); 
         echo("<br><br>false<br><br>  This is displaying as the else statement if it does not exits"); 
        
}      
}

 

 

Thanks any help would be appericated

 

Link to comment
https://forums.phpfreaks.com/topic/75384-solved-help-arraydisplaying-products/
Share on other sites

try

$category='cat1';
$query = "SELECT product_name,id,categories from products WHERE FIND_IN_SET('$category', categories)";
$result = mysql_query($query) or die(mysql_error());
while($row = MySQL_fetch_assoc($result)){
   echo imlope(' - ', $row), '<br />';
}

 

 

I recommend you read up on "normalization"

http://www.phpfreaks.com/forums/index.php/topic,126097.0.html

 

 

Normalized, the data becomes

[pre]

category        productcat        product

---------        ---------          --------

cat_id  --+      id          +---  prod_id

catname  +--    cat_id      |    prod_descrip

                prod_id  ---+

[/pre]

 

Then

    
<?php

$sql = "SELECT c.catname, p.prod_descrip
        FROM category c
        INNER JOIN productcat pc  c.cat_id = pc.cat_id
        INNER JOIN product p ON pc.prod_id = p.prod_id
        WHERE c.cat_id = '$cat'";     
$res = mysql_query($sql) or die (mysql_error()."<p>$sql</p>");
while (list($cat, $prod) = mysql_fetch_row($res))
{
    echo "$cat : $prod <br />";
}        
?>

 

Job done.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.