Re: Reverse (or backward?) Infinity Loop

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi everybody,

I need any help I can get, anyone?1?! Please I am desperate!

Here is my code:
	function get_categories($moduleId=0)
	{
		$this->moduleId = $moduleId;

		$query = 'SELECT
				categoryId,
				categoryParentId,
				translations.*
			    FROM
				categories,
				translations
			    WHERE
				categories.translationId=translations.translationId
			    AND
				categories.categoryModuleId=\'6\'
			    AND
				categories.categoryStatus=\'1\'
			    AND
				translations.translationLanguage=\'pt-br\'
			    GROUP BY
				categories.categoryId
			    ORDER BY
				categories.categoryOrder';

		$this->framework->database->query($query);

		if($this->framework->database->num_rows() > 0)
		{
			while ($this->framework->database->fetch_array())
			{
				$this->categories[] = $this->framework->database->row;
			}
		}
	}

	function get_category($categoryId='')
	{
		if($categoryId != '')
		{
			$t = count($this->categories);
			$i=0;
			while ($i<$t)
			{
				if($this->categories[$i]['categoryId'] == $categoryId)
				{
					foreach($this->categories[$i] as $var=>$val)
					{
						$category[$var] = $val;
					}
					$i = $t;
				}
				else
				{
					$i++;
				}
			}
			return $category;
		}
	}

	function get_parent_categories($parentId='')
	{
		if($parentId != '')
		{
			$t = count($this->categories);
			$i=0;
			$c=0;
			while ($i<$t)
			{
				if($this->categories[$i]['categoryParentId'] == $parentId)
				{
					foreach($this->categories[$i] as $var=>$val)
					{
						$categories[$c][$var] = $val;
					}
				}
				$c++;
				$i++;
			}
			return $categories;
		}

}

function get_categories_tree($categoriesId='')
{
if($categoriesId != '' && is_array($categoriesId))
{
$t = count($categoriesId);
$c = $t;
for($i = $t; $i >= 1; $i--)
{
if(!eregi('.html',$categoriesId[$i]) && !eregi('.htm',$categoriesId[$i]) && eregi('[0-9]',$categoriesId[$i]))
{
$category[$c] = $this->get_category($categoriesId[$i]);


if($category[$c]['categoryParentId'] != '0')
{
$category[$c]['categoryParents'] = $this->get_parent_categories($category[$c]['categoryParentId']);

$t2 = count($category[$c]['categoryParents']);

for($i2=$t2;$i2>=1;$i2--)
{

}
}
else
{
$c--;
$category[$c] = $this->get_different_categories($category[$c]['categoryParentId']);
}
$c--;
}
}
}
print_r($category);
}


It outputs:
Array
(
    [6] => Array
        (
            [categoryId] => 3
            [categoryParentId] => 2
            [translationId] => 123456789
            [translationLanguage] => pt-br
            [field01] => Casa
            [field02] =>
            [field03] =>
            [field04] =>
            [field05] =>
            [field06] =>
            [field07] =>
            [field08] =>
            [field09] =>
            [field10] =>
            [categoryParents] => Array
                (
                    [2] => Array
                        (
                            [categoryId] => 3
                            [categoryParentId] => 2
                            [translationId] => 123456789
                            [translationLanguage] => pt-br
                            [field01] => Casa
                            [field02] =>
                            [field03] =>
                            [field04] =>
                            [field05] =>
                            [field06] =>
                            [field07] =>
                            [field08] =>
                            [field09] =>
                            [field10] =>
                        )

                )

        )

    [5] => Array
        (
            [categoryId] => 2
            [categoryParentId] => 1
            [translationId] => 123456789
            [translationLanguage] => pt-br
            [field01] => Casa
            [field02] =>
            [field03] =>
            [field04] =>
            [field05] =>
            [field06] =>
            [field07] =>
            [field08] =>
            [field09] =>
            [field10] =>
            [categoryParents] => Array
                (
                    [1] => Array
                        (
                            [categoryId] => 2
                            [categoryParentId] => 1
                            [translationId] => 123456789
                            [translationLanguage] => pt-br
                            [field01] => Casa
                            [field02] =>
                            [field03] =>
                            [field04] =>
                            [field05] =>
                            [field06] =>
                            [field07] =>
                            [field08] =>
                            [field09] =>
                            [field10] =>
                        )

                )

        )

    [4] => Array
        (
            [categoryId] => 1
            [categoryParentId] => 0
            [translationId] => 123456789
            [translationLanguage] => pt-br
            [field01] => Casa
            [field02] =>
            [field03] =>
            [field04] =>
            [field05] =>
            [field06] =>
            [field07] =>
            [field08] =>
            [field09] =>
            [field10] =>
        )

    [3] => Array
        (
            [categoryId] => 1
            [categoryParentId] => 0
            [translationId] => 123456789
            [translationLanguage] => pt-br
            [field01] => Casa
            [field02] =>
            [field03] =>
            [field04] =>
            [field05] =>
            [field06] =>
            [field07] =>
            [field08] =>
            [field09] =>
            [field10] =>
        )

)


Many thanks, Bruno B B Magalhaes

On Oct 20, 2004, at 12:30 PM, Bobo Wieland wrote:

this is some code i've written once that gets all supercategories from a mysql db... Take it as it is... It prints out a html-string of links like this:
Category : sub_cat1 : sub_cat2 : sub_cat3.


Maybe you can figure it out... it takes the current id (in your example catId13) as a parameter and goes up to the root...


function catPathRec($id, $show_lnk = false, $rtn_val="") {
global $link_id;
$katname = strtoupper(mysql_result(mysql_query("SELECT kat_namn AS kat FROM text_kat WHERE id = ".$id, $link_id), "kat"));
$hid = mysql_result(mysql_query("SELECT h_id AS hkat FROM text_kat WHERE id = ".$id, $link_id), "hkat");
if ($rtn_val == "") {
if ($show_lnk) { return ($hid == 0) ? ("<a href='text.php?action=kat&kat_id=".$id."' style='font-weight:normal;' onfocus='this.blur()'>".$katname."</a>") : (catPathRec($hid, $show_lnk, " : <a href='text.php?action=kat&kat_id=".$id."' style='font-weight:normal;' onfocus='this.blur()'>".$katname."</a>")); }
else { return ($hid == 0) ? ($katname) : (catPathRec($hid, $show_lnk, " : ".$katname)); }
}
else if ($hid != 0) { return catPathRec($hid, $show_lnk, " : <a href='text.php?action=kat&kat_id=".$id."' style='font-weight:normal;' onfocus='this.blur()'>".$katname."</a>".$rtn_val); }
return "<a href='text.php?action=kat&kat_id=".$id."' style='font-weight:normal;' onfocus='this.blur()'>".$katname."</a>".$rtn_val."\n";
}
----- Original Message ----- From: "Bruno B B Magalhães" <brunobbm@xxxxxxxxxx>
To: <php-general@xxxxxxxxxxxxx>; "php-db" <php-db@xxxxxxxxxxxxx>
Sent: Wednesday, October 20, 2004 4:47 AM
Subject: Reverse (or backward?) Infinity Loop



Hi guys,

I have a normal categories table:

catId
catParentId
catName
catStatus

But I want when a user enters on:

http://hostname/site/products/catId1/catId7/catId13/../../ contentId.html

A listing should apear like that:

• Category 1
     • Category 7
          • Category 13
• Category 2
• Category 3
• Category 4
• Category 5


A reverse (or backward) loop! We need to get the last category and then follow the ParentId until the 0 ParentId. Have anybody made this before (I hope so)?

Many Thanks,
Bruno B B Magalhaes

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



-- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux