Категории,под-категории,под-под-категории Изтриване

Jorko

Registered
Така дойде време отново да поискам помощ и аз

Имам следната таблица

Category

cat_id,cat_name,cat_parent_id

където cat_parent_id определя каква е категорията дали под или под-под

Та искъм с една заявка когато изтрия главна или под автоматично да изтрива останалите и нива но немога да го измисля как пробвах първо да взема всичко с JOIN ама не успях да се справя нещо :)

Благодарско на спасителя ми :)
 
Jorko каза:
Така дойде време отново да поискам помощ и аз

Имам следната таблица

Category

cat_id,cat_name,cat_parent_id

където cat_parent_id определя каква е категорията дали под или под-под

Та искъм с една заявка когато изтрия главна или под автоматично да изтрива останалите и нива но немога да го измисля как пробвах първо да взема всичко с JOIN ама не успях да се справя нещо :)

Благодарско на спасителя ми :)
Нещата изглеждат сложни. Но не са :) Ще ти дам идея, ти се опитай да я реализираш, ако се натъкнеш на проблем. пиши в темата.


Взми си една променлива $category = array();
Предполагма, че главните категорий , нямат cat_parent_id
За това създай заявка, която да ти вади всичките резултати , където
cat_parent_id is null ,( където е празно )


При обхода на всичките резултати с главни категорий, създавай в
PHP:
while($result ==  mysql_featch...())  {
// ако ползваш обикновенните  функций към mysql
$idCat =  $result['cat_id']; // вземаш Ид-то на категорията, за да го ползваш като ключ, и защото е по-кратко
$category['parent'][$idCat] = $result;
// Тъйнкият момент :  Да  извлечеш  децата към този родител.
$sqlNew =  mysql_query("SELECT * FROM  `table` where `cat_parent_id` = {$result['cat_id'] } "); 
       while($children = ...........)
{
$category['children'][$idcat][] = $children;
}
}

В кода , може да има грешки, писал съм го на момента.
 
То аз добре ги вземам но въпросът е следния трябва ми някаква насока как когато изтрия дадена категория неините под нива или под под нива да се изтриват автоматично с нея четох за foreign key на InnoDB но в случая не ми е удачно ако има някакъв по лесен вариант с категориите да кажем също ще ми помогне да не се индикират по парент id само
 
[sql]DELETE FROM `table` WHERE cat_parent_id = ( SELECT cat_id `table` WHERE cat_id = 1 ) // да изтриеш под категорийте[/sql]Нещо такова трябва да е ? :D :oops:
 
въртях суках имам някъв напредак ма пак запънах на едно място


PHP:
if(isset($_POST['yes'])){
			if(isset($_POST['save']) == "checked"){
				$sql = mysql_query("SELECT * FROM `category` WHERE `cat_parent_id` = '$id'") or die(mysql_error());
				if(mysql_num_rows($sql) == 0){   
					$sql = mysql_query("DELETE FROM `category` WHERE `cat_id` = '$id'") or die(mysql_error()); 
				}else{ 
					$sql2 = mysql_query("SELECT * FROM `category` WHERE `cat_parent_id` = ( SELECT cat_id FROM category WHERE cat_parent_id = '$id' )") or die(mysql_error());
					if(mysql_num_rows($sql2) != 0){
							//ако има под под категории
						$sql3 = mysql_query("SELECT * FROM `category` WHERE `cat_parent_id` = ( SELECT cat_id FROM category WHERE cat_parent_id = '$id' )") or die(mysql_error());
						while($row = mysql_fetch_assoc($sql3)){
							$sql3 = mysql_query("UPDATE `category` SET `cat_active` = 0 WHERE `cat_id` = '$row[cat_id]'") or die(mysql_error());
						}
					}
					$sql = mysql_query("UPDATE `category` SET `cat_parent_id` = 0, `cat_active` = 0 WHERE cat_parent_id = '$id'") or die(mysql_error());
					$sql4 = mysql_query("DELETE FROM `category` WHERE `cat_id` = '$id'") or die(mysql_error());
				}
			}
		}

тва е кодът

и ето я и грешката и се чудя ся как да заобиколя...

Код:
Warning: mysql_query() [function.mysql-query]: Unable to save result set in C:\xampp\htdocs\shop\admin\categoryDelete.php on line 22
Subquery returns more than 1 row

ЕДИТ: требе му вкарам некой месечен цикъл ма се чудя как...

ЕДИТ 2:оправих все пак по различен начин след 3 часа игра но благодаря +1 :?:
 

Back
Горе