Помогите сократить запросы.

про скрипт я в курсе.
Она вобще не заработала. Делал так
PHP:
$sql = "SELECT * FROM sub_pages WHERE cat in('$p','$cat')or id='$p'";
$res = mysql_query($sql);
while ($out=mysql_fetch_assoc($res)){
if ($out['id']==$p){
	$sub_row = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
		$row = mysql_fetch_array($sub_row);
			$sub_text = $row["text_rus"];
				   }
if ($out['cat']==$cat){$result_category = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);}
if ($out['cat']==$p){$result_cat = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);}
}
Выводит в каждой категории не свой текст, а тот у которого id раньше.
То есть если у страницы есть две подкатегории то в обоих выведет один и тот же текст.
А надо чтобы разный.
PHP:
$sql = "SELECT * FROM sub_pages WHERE id = '$p'";
$sub_row = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
$row = mysql_fetch_array($sub_row);
$sub_text = $row["text_rus"];
Так работает.


ошибочка у вас
while ($out=mysql_fetch_assoc($res)){
if ($out['id']==$p){
$sub_row = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
$row = mysql_fetch_array($sub_row);

зачем вложенные запросы к базе?
у вас и так все есть что вам нужно


$sql = "SELECT * FROM sub_pages WHERE cat in('$p','$cat')or id='$p'";
$res = mysql_query($sql);
while ($out=mysql_fetch_assoc($res)){
if ($out['id']==$p){$row = $out;}
if ($out['cat']==$cat){$result_category = $out;}
if ($out['cat']==$p){$result_cat = $out}
}
на выходе имеем ассоциативные масссивы $row, $result_category,$result_cat
с которыми дальше делайте что хотите.
 
PHP:
$sql = "SELECT * FROM sub_pages WHERE cat in('$p','$cat')";
$res = mysql_query($sql);
while ($out=mysql_fetch_assoc($res)){
if ($out['id']==$p){$row = $out; $sub_text = $row["text_rus"];}
if ($out['cat']==$cat){$result_category = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);}
if ($out['cat']==$p){$result_cat = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);}
}


Остановился на таком варианте, так как не смог придумать, что делать с теми переменными. В цикле их вывести не получилось...
 
Назад
Сверху