Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Рекрусия

Сообщения:  [1-8] 

 
 автор: shmel   (30.05.2006 в 13:20)   письмо автору
 
   для: cheops   (30.05.2006 в 12:54)
 

Спасибо большое.

   
 
 автор: cheops   (30.05.2006 в 12:54)   письмо автору
 
   для: shmel   (30.05.2006 в 10:59)
 

Массив $ss следует объявить глобальным
<?php
function page_par_id ($ppi)   

   global 
$ss;
   
$msq mysql_query("select page_id, page_parent_id, page_name from page where page_id = '".$ppi."' order by page_id asc"); 
   while (
$ww mysql_fetch_array($msq)) { 
   
page_par_id ($ww['page_parent_id']); 
   
$ss[] = $ww['page_name']; 
   } 
return 
$ss;   

echo 
count(page_par_id(17));  // Возвращает 1, а должен 2
?>

   
 
 автор: shmel   (30.05.2006 в 10:59)   письмо автору
 
   для: shmel   (29.05.2006 в 13:13)
 

Всетаки это из-за вызова echo, переписал в таком виде

function page_par_id ($ppi)  
 { 
   $msq = mysql_query("select page_id, page_parent_id, page_name from page where page_id = '".$ppi."' order by page_id asc"); 
   while ($ww = mysql_fetch_array($msq)) { 
   page_par_id ($ww['page_parent_id']); 
   $ss[] = $ww['page_name']; 
   } 
return $ss;  

echo count(page_par_id(17));  // Возвращает 1, а должен 2

Но почему-то возвращается 1, а по идее должно быть 2, т.к в цикле вызывается page_par_id ($ww['page_parent_id']); . Помогите подправить код, чтоб он выводил дерево.

   
 
 автор: shmel   (29.05.2006 в 13:13)   письмо автору
 
   для: cheops   (29.05.2006 в 13:00)
 


<?
if ($_GET['tip']=='edit') {
// PUT
if ($_POST['page_parent_id']!=0
 {
  
$put2 page_par_id($_GET['page_id']);
 }
else 
 {
 
$put2 $_POST['page_name']; 
 } 
// END PUT
$query "UPDATE page SET page_parent_id='".$page_parent_id."', temp_id='".$temp_id."', sait_id='".$sait_id."', put='".$put2."', page_name='".$page_name."',
          page_men_name='"
.$page_men_name."', page_title='".$page_title."', page_description='".$page_description."', page_keywords='".$page_keywords."',
          doc_id='"
.$doc_id."', page_doc_link='".$page_doc_link."', lang_id='".$lang_id."' WHERE page_id =".$_GET['page_id'].";";
}
// --------------------------------------------------------
if(@mysql_query($query)) {
print 
"<html><head>\n";
echo 
$put2;  // Для проверки выводится ли вообще результат! Выводит sdf/werwe/
//print "<meta HTTP-EQUIV='refresh' content='0; url=../../admin/struktura.php'\n";
print "</html></head>\n";
exit();
}

?>

Да функция срабатывает, а вот в БД незаносится информация. если к примеру сделать так

if ($_POST['page_parent_id']!=0) 
 {
  $put2 = "sssss/ssss/sss/";
 }

то это заносится в БД., хотя в преведущем случае функция срабатывает, и в участке кода перенаправления выводит этот результат.
if(@mysql_query($query)) {
print "<html><head>\n";
echo $put2;  // Для проверки выводится ли вообще результат! Выводит sdf/werwe/
//print "<meta HTTP-EQUIV='refresh' content='0; url=../../admin/struktura.php'\n";
print "</html></head>\n";
exit();
}

   
 
 автор: cheops   (29.05.2006 в 13:00)   письмо автору
 
   для: shmel   (29.05.2006 в 12:37)
 

Сразу после вызова
<?php
  $ww 
page_par_id ($ppi);
?>

Выведите содержимое $ww - есть в нём что-нибудь?

   
 
 автор: shmel   (29.05.2006 в 12:37)   письмо автору
 
   для: cheops   (19.05.2006 в 23:14)
 

function page_par_id ($ppi) 
 {
   $msq = mysql_query("select page_id, page_parent_id, page_name from page where page_id = '".$ppi."' order by page_id asc");
   while ($ww = mysql_fetch_array($msq)) {
   page_par_id ($ww['page_parent_id']);
   echo  $ww['page_name']."/";
   }
 }


Если поставить
echo  $ww['page_name']."/";
после вызова функции, то последовательность будет нужной. Теперь возникла другая проблема, мне надо занести это в БД.
Происходит это примерно так:
$ww = page_par_id ($ppi);
mysql_query("insert into page values (ww='".$ww."')");

Но в БД незаносится информация, как я понял это из-за вызова в вункции echo.
Попытался использовать return, да вот только return возвращает 1 результат(page3), передонного $ppi, а должно возвращаться дерево ( page1/page2/page3/).
Подскажите как можно решить проблему с занисением в БД,.

   
 
 автор: cheops   (19.05.2006 в 23:14)   письмо автору
 
   для: shmel   (19.05.2006 в 15:28)
 

Вместо
<?php
//echo "Парент ИД-".$ww['page_parent_id']."  ИД-".$ww['page_id']."<br>";
?>

испльзуйте оператор return - это позволит изменить вам порядок возвращения ссылок. Вызов в результате будет выглядеть не
<?php
page_par_id
(14);
?>

а
<?php
echo page_par_id(14);
?>

   
 
 автор: shmel   (19.05.2006 в 15:28)   письмо автору
 
 

Здраствуйте.
Есть функция которая выводит такую последовательность:
В БД есть 2 поля id и parent_id
1
1.2
2.1
1.3

<?
function page_par_id_q ($ppi
 {
   
$msq mysql_query("select page_parent_id, page_id from page where page_parent_id = '".$ppi."'");
   while (
$ww mysql_fetch_array($msq)) {
   echo 
"Парент ИД-".$ww['page_parent_id']."  ИД-".$ww['page_id']."<br>";
   
page_par_id_q ($ww['page_id']);
   }
 }
page_par_id_q(0);
?>


И есть обратная функция: т.е я ей передаю ид страници и она выводит связи этой страници до parent_id = 0, но проблема в том что она выводит это не в том порядке что мне надо(сначало ID переданной страници, потом id стр. связаной с переданной parent_id, и в самом конце стр. с parent_id=0, а мне надо это в обратном порядке со страници parent_id=0, Первая функция не подходит т.к страниц с парент_ид=0 может быть сколько угодно. Подскажите как можно это перевернуть.

<?
function page_par_id ($ppi
 {
   
$msq mysql_query("select page_id, page_parent_id, page_name from page where page_id = '".$ppi."' order by page_id asc");
   while (
$ww mysql_fetch_array($msq)) {
   echo 
$ww['page_name']."_";
   
//echo "Парент ИД-".$ww['page_parent_id']."  ИД-".$ww['page_id']."<br>";
   
page_par_id ($ww['page_parent_id']);
   }
 }
page_par_id(14);
?>

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования