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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Проверка чекбоксов при постраничном выводе
olegp
Отправлено: 08 Сентября, 2010 - 18:18:09
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Имеется аудио библиотека из песен. Они выводятся постранично по 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)?

(Отредактировано автором: 09 Сентября, 2010 - 16:23:00)

 
 Top
Uchkuma
Отправлено: 08 Сентября, 2010 - 20:01:05
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




olegp пишет:
Возможно ли решить эту проблему на чистом PHP (без JS)?
Возможно. Для этого переход на другие страницы должен осуществляться тоже сабмитами а не ссылками. Т.о. при переходе на другую страницу будет отправлена форма с отмеченными чекбоксами, скрипт-обработчик занесет в базу соответствующие значения и в ответ вернет следующую страницу.
 
 Top
olegp
Отправлено: 08 Сентября, 2010 - 20:09:24
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Uchkuma
А можно пример, пожалуйста.
 
 Top
Uchkuma
Отправлено: 08 Сентября, 2010 - 20:45:23
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




olegp, чессно лень разбирать ваш код. Когда вы переходите по ссылке, параметры скрипту передаются методом GET. Скрипт у вас принимает номер страницы из переменной $_GET['page']. Когда отправляете форму (нажимаете на сабмит), данные передаются методом POST. Т.е. номер страницы надо будет ловить в переменной $_POST['page']. Вместо ссылок сделайте инпуты
CODE (html):
скопировать код в буфер обмена
  1. <input type="submit" name="page" value="5">
где 5 - номер страницы.
(Добавление)
Да, инпуты должны быть внутри соответствующей формы с чекбоксами.
 
 Top
olegp
Отправлено: 09 Сентября, 2010 - 16:21:41
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Uchkuma
Спасибо, получилось. Круто
 
 Top
ALEN
Отправлено: 09 Сентября, 2010 - 19:05:45
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




сессии не пробовали?
 
 Top
Uchkuma
Отправлено: 09 Сентября, 2010 - 19:38:59
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Сессии тут при чем?
 
 Top
olegp
Отправлено: 09 Сентября, 2010 - 20:51:54
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




А можно обойтись без этого:
CODE (html):
скопировать код в буфер обмена
  1. <META http-equiv="refresh" content="0; url=index.php">


Header не работает ??? Непонял!
 
 Top
ALEN
Отправлено: 09 Сентября, 2010 - 21:25:40
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Сори не прочитал....
Но у вас тут все равно как что делать пост или гет методом.


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

А еще шаблон очень страшный, много до ужаса echo
 
 Top
Uchkuma
Отправлено: 09 Сентября, 2010 - 21:50:48
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




ALEN пишет:
Но у вас тут все равно как что делать пост или гет методом.
Как гет методом отправить отмеченные чекбоксы? Имеется ввиду не прописыванием в форме method="GET", это и так понятно Улыбка
(Добавление)
olegp пишет:
не работает
"Не работает" не описание проблемы. Что происходит?
olegp пишет:
<META http-equiv="refresh" content="0; url=index.php">
А это изврат.

(Отредактировано автором: 09 Сентября, 2010 - 22:10:26)

 
 Top
olegp
Отправлено: 09 Сентября, 2010 - 22:44:37
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Если используется Heder и если перед ним есть какой-либо код, то выдается ошибка. Более подробно напишу завтра.
 
 Top
Мелкий Супермодератор
Отправлено: 09 Сентября, 2010 - 23:00:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




olegp пишет:
Если используется Heder и если перед ним есть какой-либо код, то выдается ошибка. Более подробно напишу завтра.

Скорее, не код, а вывод в браузер и ошибка выдаётся headers already send (заголовки уже отправлены). Происходит, т.к. есть вывод в браузер, а заголовки должны отсылаться раньше.


-----
PostgreSQL DBA
 
 Top
Uchkuma
Отправлено: 10 Сентября, 2010 - 08:17:00
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




olegp, заголовки должны отправляться до любого вывода в браузер. Вы понимаете что такое вывод в браузер? Вывод в браузер производят функции echo и print, а также ряд других функций. Также все что находится вне тегов <?php ?> это тоже вывод браузер, включая пустые строки и любые пробельные символы.

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

(Отредактировано автором: 10 Сентября, 2010 - 08:17:26)

 
 Top
olegp
Отправлено: 10 Сентября, 2010 - 21:14:24
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Uchkuma пишет:
olegp, заголовки должны отправляться до любого вывода в браузер. Вы понимаете что такое вывод в браузер? Вывод в браузер производят функции echo и print, а также ряд других функций. Также все что находится вне тегов <?php ?> это тоже вывод браузер, включая пустые строки и любые пробельные символы.

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


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

Спасибо.

(Отредактировано автором: 10 Сентября, 2010 - 21:15:01)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB