Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать массив из одно процедуры в другую 
:(
    Опции темы
Drizhenko
Дата 31.5.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Есть некий код
Код

<?
  include "config.php";
  
  echo "<table align=\"center\"><tr><td align=\"center\">";
  

function navigation ($letter1,$letter2,$letter3,$r1,$r2,$limit,$j)
{
$ath=mysql_query("SELECT * FROM films WHERE name like '&#$letter1%' or name like '&#$letter2%' or name like '$letter3' ORDER BY `name` ASC");
    $count = mysql_num_rows($ath);
    $ath=mysql_query("SELECT * FROM films WHERE name like '&#$letter1%' or name like '&#letter2%' or name like '$letter3' ORDER BY `name` ASC LIMIT $limit, 30");
    $page=floor($count/30);
    $rest=$count%30;
    if ($rest>0){$page=$page+1;}
    if ($r1>=10){echo "<a href=\"Index.php?func=navigation&letter1=".$letter1."&letter2=".$letter2."&letter3=".$letter3."&r1=".($rr1=$r1-10)."&r2=".($rr2=$r2-10)."&limit=".($r1*3)."\"><< </a> "; }
    for ($i = $r1; ($i <= $r2)and($i < $page);$ar[$i]="Index.php?func=navigation&letter1=".$letter1."&letter2=".$letter2."&letter3=".$letter3."&r1=".$r1."&r2=".$r2."&limit=".($i*30),print "<a href=\"$ar[$i]\">".($i+1)." </a>", $i++);
    if ($r2<($page-1)){echo "<a href=\"Index.php?func=navigation&letter1=".$letter1."&letter2=".$letter2."&letter3=".$letter3."&r1=".($r1=$r1+10)."&r2=".($r2=$r2+10)."&limit=".(($r2-9)*30)."\">>></a> ";}

 echo "</td></tr></table><br><br>";
      
  if($ath){
  echo "<table cellspacing='0' width='70%' align='center'>";

  while ($autor=mysql_fetch_array($ath))
  {
          global $chb;
          $chb[$j]=$autor['id'];
          echo "<tr><td class='bottomtop' width=\"100%\"><b>".$autor['name']."</b>&nbsp;/ ".$autor['genre']."&nbsp / ".$autor['year']."&nbsp;</td><td rowspan='2' valign='center' align='center' class='bottomtopright'><form name='form1' method='post'>&nbsp;<input type='Checkbox' name='".$chb[$j]."'>&nbsp;</td></tr>
                <tr><td class='bott'>".$autor['actor']."&nbsp;</td></tr><tr><td>&nbsp;</td></tr>";
          $j++;
  }
  print $j;
  print_r ($chb);

  echo "<tr><td align='center'><input type=submit name='submit'></form></td></tr>";
  echo "</table><br><br>";
  }
  else
  {
          echo "<p><b>Error:".mysql_error()."</b><p>";
          exit();
  }

}


if (isset($_POST['submit']))
{
print $j;
    for($i=1;$i<=count($chb);$i++)
            {
                if($chb[$i]<>0)
                    {
                    print $chb[$i];
                    }
            }
}
else
{
call_user_func_array($_GET['func'], array($_GET['letter1'],$_GET['letter2'],$_GET['letter3'],$_GET['r1'],$_GET['r2'],$_GET['limit'],$_GET['j']));
}

?>

Скажите, пожалуйста почему когда я нажимаю кнопку то у меня не печатается массив из процедуры navigation. У меня есть подозрения что он просто обнуляется при завершении процедуры. А как сделать чтобы он запоминался? 
PM MAIL   Вверх
Vaulter
Дата 31.5.2006, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



может он вообще пустой?
ты уверен, что все запросы идут без ошибок и возвращают результаты???
я вот, глядя на код, уже не уверен, так как ошибки не отлавливаются. 


--------------------
PM MAIL WWW ICQ   Вверх
Drizhenko
Дата 31.5.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



33 строка кода выводит массив и переменную j. То есть массив существует,но почему-то при нажатии кнопки пер. j становится равной 0 и массив не выводится. Видимо тоже обнуляется. 
PM MAIL   Вверх
Vaulter
Дата 31.5.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



Drizhenko, так при нажатии и не вызывается функция, которая их заполняет. 


--------------------
PM MAIL WWW ICQ   Вверх
Drizhenko
Дата 31.5.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Ну да, в этом то и проблема, массив заполняется при вызове другой функции, а при нажатии кнопки этот массив, массив имен чекбоксов перебирается циклом, и отмеченные галочкой выводятся на экран.

Может кто знает как реализовать по другому. Задача такая. Нужно при нажатии на кнопку вывести на экран только те записи, что были отмечены  галочкой, причем количество записей и соответсвенно чекбоксов равно 30. и было бы нерационально 30 раз писать в коде строку 
Код

if ($chb[0]==true){print $chb[0]};
if ($chb[1]==true){print $chb[1]};
if ($chb[2]==true){print $chb[2]};
... и т.д.

 
PM MAIL   Вверх
Vaulter
Дата 31.5.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



Drizhenko, тебе нужно
1. обозвать чекбоксы именами след. типа: name='show[".$chb[$j]."]' или name='show[$j]'
2. при REQUEST_METHOD = POST
перебирать их так
Код

if(is_array($_POST['show']))
  while(list($id,$val) = each($_POST['show']))
    echo "была отмечена $id галочка - value чекбокса был: $val<br />";
 


--------------------
PM MAIL WWW ICQ   Вверх
ST_Falcon
Дата 31.5.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 14.11.2003
Где: Львов

Репутация: нет
Всего: 1



Drizhenko
а ты цыклом все пусти.
Код

for($i=0; $i<count($chb); $i++)
{
  if ($chb[$i]==true)
    print $chb[$i];
}
 
PM MAIL ICQ   Вверх
Drizhenko
Дата 31.5.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Vaulter, сделал как ты говоришь, но все равно выводится пустая строка.

ST_Falcon, вообще-то у меня именно так и написано, разве что вместо ==true у меня <>0 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.