Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите разобраться начинающему
Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите разобраться начинающему

Страниц (1): [1]
 

1. olegp - 08 Сентября, 2010 - 18:18:09 - перейти к сообщению
Имеется аудио библиотека из песен. Они выводятся постранично по 20 штук на странице. Рядом с каждой строчкой есть чекбокс:

PHP:
скопировать код в буфер обмена
  1. if ( $cnt_pages > 1 )
  2. {
  3.     echo '<div><p>&nbsp;Страницы: ';
  4.     if ( $page > 5 )
  5.         $startpage = '<a href="view.php?artist='.$artist.'&page=1"><<<</a>';
  6.     else
  7.         $startpage = '';
  8.     if ( $page < ($cnt_pages - 5) )
  9.         $endpage = '<a href="view.php?artist='.$artist.'&page='.$cnt_pages.'">>>></a>';
  10.     else
  11.         $endpage = '';
  12.         if ($page - 10 > 0) {
  13.             $left10 = ' <a href="view.php?artist='.$artist.'&page='.($page - 10).'"><<</a> | ' ;
  14.         }
  15.         if ($page + 10 <= $cnt_pages) {
  16.             $right10 = ' <a href="view.php?artist='.$artist.'&page='.($page + 10).'">>></a> | ' ;
  17.         }
  18.        
  19.         if ($page - 1 > 0) {
  20.             $left1 = ' <a href="view.php?artist='.$artist.'&page='.($page - 1).'"><</a> | ... ' ;
  21.         }
  22.         if ($page + 1 <= $cnt_pages) {
  23.             $right1 = ' ... | <a href="view.php?artist='.$artist.'&page='.($page + 1).'">></a> | ' ;
  24.         }
  25.        
  26.         echo $startpage." | ".$left10.$left1 ;
  27.         $i = 4 ;
  28.         while($i >= 1) {
  29.             if ( $page - $i > 0 ) {
  30.                 $left = ' <a href="view.php?artist='.$artist.'&page='.($page - $i).'">'.($page - $i).'</a> | ';
  31.             } else {
  32.                 $left = '';
  33.             }
  34.            
  35.             $i = $i - 1 ;
  36.            
  37.             echo $left ;
  38.         }
  39.        
  40.         echo '<span style="color:#f00;"><strong>'.$page.'</strong></span> | ' ;
  41.        
  42.         for($p = 1 ; $p <= 5 ; $p++) {
  43.             if ( $page + $p <= $cnt_pages ) {
  44.                 $right = ' <a href="view.php?artist='.$artist.'&page='.($page + $p).'">'.($page + $p).'</a> | ';
  45.             } else {
  46.                 $right = '';
  47.             }
  48.             echo $right ;
  49.         }
  50.          
  51.         echo $right1.$right10.$endpage ;
  52.  
  53.     echo '</p></div>';


С помощью чекбоксов надо записать ID песни в БД для составления плейлиста.
Задача состоит в том, чтоб при переходе на следущую (или предыдущую) страницу сохранялись (записывались в БД) отмеченные чекбоксы.

Я делал так:
PHP:
скопировать код в буфер обмена
  1.  
  2.         if (isset($_POST['file'])) {
  3.         $file = $_POST['file'] ;
  4.     }
  5.    
  6.     $a = 1 ;
  7.     while ($a <= 20) {
  8.         if (isset($file[$a])) {
  9.             echo $file[$a]."<br>" ;
  10.         }  
  11.         $a++ ;      
  12.     }
  13.  


При SUBMIT'е выводятся ID песен, а при переходе на дугую страницу - нет.
Сайт используется для просмотра на телевизоре через медиапроигрыватель, в котором ограничены возможности браузера.
Возможно ли решить эту проблему на чистом PHP (без JS)?
2. Uchkuma - 08 Сентября, 2010 - 20:01:05 - перейти к сообщению
olegp пишет:
Возможно ли решить эту проблему на чистом PHP (без JS)?
Возможно. Для этого переход на другие страницы должен осуществляться тоже сабмитами а не ссылками. Т.о. при переходе на другую страницу будет отправлена форма с отмеченными чекбоксами, скрипт-обработчик занесет в базу соответствующие значения и в ответ вернет следующую страницу.
3. olegp - 08 Сентября, 2010 - 20:09:24 - перейти к сообщению
Uchkuma
А можно пример, пожалуйста.
4. Uchkuma - 08 Сентября, 2010 - 20:45:23 - перейти к сообщению
olegp, чессно лень разбирать ваш код. Когда вы переходите по ссылке, параметры скрипту передаются методом GET. Скрипт у вас принимает номер страницы из переменной $_GET['page']. Когда отправляете форму (нажимаете на сабмит), данные передаются методом POST. Т.е. номер страницы надо будет ловить в переменной $_POST['page']. Вместо ссылок сделайте инпуты
CODE (html):
скопировать код в буфер обмена
  1. <input type="submit" name="page" value="5">
где 5 - номер страницы.
(Добавление)
Да, инпуты должны быть внутри соответствующей формы с чекбоксами.
5. olegp - 09 Сентября, 2010 - 16:21:41 - перейти к сообщению
Uchkuma
Спасибо, получилось. Круто
6. ALEN - 09 Сентября, 2010 - 19:05:45 - перейти к сообщению
сессии не пробовали?
7. Uchkuma - 09 Сентября, 2010 - 19:38:59 - перейти к сообщению
Сессии тут при чем?
8. olegp - 09 Сентября, 2010 - 20:51:54 - перейти к сообщению
А можно обойтись без этого:
CODE (html):
скопировать код в буфер обмена
  1. <META http-equiv="refresh" content="0; url=index.php">


Header не работает ??? Непонял!
PHP:
скопировать код в буфер обмена
  1. header("Location: index.php")
9. ALEN - 09 Сентября, 2010 - 21:25:40 - перейти к сообщению
Сори не прочитал....
Но у вас тут все равно как что делать пост или гет методом.


Пробуем вот так.

А еще шаблон очень страшный, много до ужаса echo
10. Uchkuma - 09 Сентября, 2010 - 21:50:48 - перейти к сообщению
ALEN пишет:
Но у вас тут все равно как что делать пост или гет методом.
Как гет методом отправить отмеченные чекбоксы? Имеется ввиду не прописыванием в форме method="GET", это и так понятно Улыбка
(Добавление)
olegp пишет:
не работает
"Не работает" не описание проблемы. Что происходит?
olegp пишет:
<META http-equiv="refresh" content="0; url=index.php">
А это изврат.
11. olegp - 09 Сентября, 2010 - 22:44:37 - перейти к сообщению
Если используется Heder и если перед ним есть какой-либо код, то выдается ошибка. Более подробно напишу завтра.
12. Мелкий - 09 Сентября, 2010 - 23:00:02 - перейти к сообщению
olegp пишет:
Если используется Heder и если перед ним есть какой-либо код, то выдается ошибка. Более подробно напишу завтра.

Скорее, не код, а вывод в браузер и ошибка выдаётся headers already send (заголовки уже отправлены). Происходит, т.к. есть вывод в браузер, а заголовки должны отсылаться раньше.
13. Uchkuma - 10 Сентября, 2010 - 08:17:00 - перейти к сообщению
olegp, заголовки должны отправляться до любого вывода в браузер. Вы понимаете что такое вывод в браузер? Вывод в браузер производят функции echo и print, а также ряд других функций. Также все что находится вне тегов <?php ?> это тоже вывод браузер, включая пустые строки и любые пробельные символы.

И вообще, если сталкиваетесь с проблемой при использовании какой-либо функции, заимейте привычку смотреть ее описание на http://php.su/functions/ . Если бы вы это делали, то смогли бы прочитать следующее:
Цитата:
Помните, что header() обязана вызываться до отправки любого вывода: нормальными ли тэгами HTML, пустыми строками в файле или из PHP. Очень частой ошибкой является чтение кода функциями include() или require(), или другой функцией доступа к файлу, и наличие пробелов или пустых строк, которые выводятся до вызова header(). Та же проблема возникает при использовании едингого PHP/HTML-файла.
14. olegp - 10 Сентября, 2010 - 21:14:24 - перейти к сообщению
Uchkuma пишет:
olegp, заголовки должны отправляться до любого вывода в браузер. Вы понимаете что такое вывод в браузер? Вывод в браузер производят функции echo и print, а также ряд других функций. Также все что находится вне тегов <?php ?> это тоже вывод браузер, включая пустые строки и любые пробельные символы.

И вообще, если сталкиваетесь с проблемой при использовании какой-либо функции, заимейте привычку смотреть ее описание на http://php.su/functions/ . Если бы вы это делали, то смогли бы прочитать следующее:
Цитата:
Помните, что header() обязана вызываться до отправки любого вывода: нормальными ли тэгами HTML, пустыми строками в файле или из PHP. Очень частой ошибкой является чтение кода функциями include() или require(), или другой функцией доступа к файлу, и наличие пробелов или пустых строк, которые выводятся до вызова header(). Та же проблема возникает при использовании едингого PHP/HTML-файла.


Разобрался. Перед header() Был require.
Заработало!
Прочитал про функцию.

Спасибо.

 

Powered by ExBB FM 1.0 RC1