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 :: Журнал регистрации служебных поездок и местных командировок сотрудников [2]

 PHP.SU

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


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

> Без описания
Строитель Модератор
Отправлено: 17 Апреля, 2014 - 15:19:28
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




LIME пишет:
ну да
вместо вывода присвой значение в переменную
например
echo $_SESSION['err'];
unset($_SESSION['err']);
делаем
PHP:
скопировать код в буфер обмена
  1.        if (isset($_SESSION['err'])){
  2.         $err = $_SESSION['err'];
  3. }else{
  4.         $err = 'no errors';
  5. }
  6.         unset($_SESSION['err']);

далее думаю понятно
(Добавление)
<?=$err?> в шаблоне где надо
таким образом получаем возможность выводить где хотим
менять место вывода
выводить более одного раза(например пагинация выше контента и ниже)


Теперь ясно. Спасибо! )
 
 Top
Строитель Модератор
Отправлено: 17 Апреля, 2014 - 17:48:20
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




Переписал с учётом исправлений файл index.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     session_start();
  3.     if (isset($_SESSION['err'])){
  4.         $err = $_SESSION['err'];
  5.         } else {
  6.         $err = '';
  7.         }
  8.     unset($_SESSION['err']);
  9.     $file='data.txt';
  10.     if (!file_exists($file)){
  11.         file_put_contents($file, NULL);
  12.         }
  13.     $file=array_reverse(file($file));
  14.     $all=sizeof($file);
  15.     for($i=0; $i<$all; $i++){
  16.         $str.=$file[$i].'^^';
  17.         }
  18.     $arr = explode('^^',$str);
  19.     $table='<table border="1">';
  20.     foreach($arr as $val){
  21.         $txt = explode('^',$val);
  22.         if ($txt[0]=='') break;
  23.         $table.='<tr><td width="105">'.$txt[0].'</td>';
  24.         $table.='<td width="88">'.$txt[1].'</td>';
  25.         $table.='<td width="193">'.$txt[2].'</td>';
  26.         $table.='<td width="368">'.$txt[3].'</td>';
  27.         $table.='<td width="193">'.$txt[4].'</td></tr>';
  28.         }
  29.     $table.='</table>';
  30. ?>
  31. <!DOCTYPE HTML>
  32. <html>
  33. <head>
  34.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  35.     <title>Журнал регистрации</title>
  36. </head>
  37. <body>
  38.     <?=$err?>
  39.     <?=$table?>
  40.     <form action="sort.php" method="post">
  41.         <table border="1">
  42.             <caption></caption>
  43.             <tr>
  44.                 <th>Выбор отдела</th>
  45.                 <th>Дата</th>
  46.                 <th>Ф.И.О.</th>
  47.                 <th>Цель поездки/Адрес</th>
  48.                 <th>Время отъезда/Приезда</th>
  49.             </tr>
  50.             <tr>
  51.                 <td>
  52.                     <select name="group">
  53.                         <option value="Отдел кадров">Отдел кадров</option>
  54.                         <option value="Отдел-1">Отдел-1</option>
  55.                         <option value="Отдел-2">Отдел-2</option>
  56.                     </select>
  57.                 </td>
  58.                 <td>
  59.                     <input type="text" name="date" value="<?=date('d.m.Y')?>" size="10" maxlength="10" />
  60.                 </td>
  61.                 <td>
  62.                     <input type="text" name="user" size="25" maxlength="30" />
  63.                 </td>
  64.                 <td>
  65.                     <input type="text" name="mission" size="50" maxlength="50" />
  66.                 </td>
  67.                 <td>
  68.                     <input type="text" name="time" value="<?=date('H:i')?>" size="25" maxlength="25" />
  69.                 </td>
  70.             </tr>
  71.         </table>
  72.         <input type="submit" value="Внести запись" />
  73.     </form>
  74. </body>
  75. </html>

(Отредактировано автором: 17 Апреля, 2014 - 18:22:18)

 
 Top
LIME
Отправлено: 17 Апреля, 2014 - 18:01:49
Post Id


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


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


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




Строитель а теперь еще момент
я в примере не зря дал else
нельзя использовать не инициалированную переменную
это вызовет нотайс
по крайней мере присвой пустое значение "" если не установлено значение
есть причины которые долго объяснять но по крайней мере установив вывод всех ошибок ты получишь нотайсы для не предусмотренных тобой ситуаций
в хорошем коде не должно быть даже нотайсов
всё должно быть предусмотрено и тогда ты будешь контролировать всё и вся
 
 Top
Строитель Модератор
Отправлено: 17 Апреля, 2014 - 18:23:01
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




LIME пишет:
Строитель а теперь еще момент
я в примере не зря дал else
нельзя использовать не инициалированную переменную
это вызовет нотайс
по крайней мере присвой пустое значение "" если не установлено значение
есть причины которые долго объяснять но по крайней мере установив вывод всех ошибок ты получишь нотайсы для не предусмотренных тобой ситуаций
в хорошем коде не должно быть даже нотайсов
всё должно быть предусмотрено и тогда ты будешь контролировать всё и вся


Исправил )
 
 Top
LIME
Отправлено: 17 Апреля, 2014 - 18:31:45
Post Id


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


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


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




погнали дальше искоренять говнокод
PHP:
скопировать код в буфер обмена
  1. $file = array_reverse(file($file));
  2. $all = sizeof($file);
  3. for ($i = 0; $i < $all; $i++) {
  4.     $str.=$file[$i] . '^^';
  5. }
  6. $arr = explode('^^', $str);



в чем отличие этих подходов?
(Добавление)
только в последнем пустом элементе
 
 Top
Строитель Модератор
Отправлено: 17 Апреля, 2014 - 19:10:23
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




LIME пишет:
погнали дальше искоренять говнокод
PHP:
скопировать код в буфер обмена
  1. $file = array_reverse(file($file));
  2. $all = sizeof($file);
  3. for ($i = 0; $i < $all; $i++) {
  4.     $str.=$file[$i] . '^^';
  5. }
  6. $arr = explode('^^', $str);



в чем отличие этих подходов?
(Добавление)
только в последнем пустом элементе



Ниасилил... В чём отличие чего от чего?
PHP:
скопировать код в буфер обмена
  1.  
  2. //Получаем массив и переворачиваем значения его элементов
  3. $file = array_reverse(file($file));
  4. //Считаем кол-во элементов массива(для цикла)
  5. $all = sizeof($file);
  6. //Проходим по массиву
  7. for ($i = 0; $i < $all; $i++) {
  8. //и заносим в $str через разделитель ^^ значения его элементов
  9. //в итоге получаем строку
  10.     $str.=$file[$i] . '^^';
  11. }
  12. //разбиваем эту строку на элементы массива
  13. $arr = explode('^^', $str);



PHP:
скопировать код в буфер обмена
  1. //Здесь так же получаем массив и переворачиваем значения его элементов
  2. //разница - в именах переменных?
  3. $arr = array_reverse(file($file));
 
 Top
LIME
Отправлено: 17 Апреля, 2014 - 19:16:28
Post Id


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


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


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




а ты в обоих случаях сделай var_dump($arr) в конце и найди 3 отличия
(Добавление)
черт
зря я видимо твой интеллект похвалил
 
 Top
Строитель Модератор
Отправлено: 17 Апреля, 2014 - 19:36:54
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




LIME пишет:
а ты в обоих случаях сделай var_dump($arr) в конце и найди 3 отличия
(Добавление)
черт
зря я видимо твой интеллект похвалил


Вот отличия:

array(0) { }

array(1) { [0]=> string(0) "" }

В массиве есть пустая строка, поэтому я добавил это условие во втором цикле
 
 Top
Downloader
Отправлено: 18 Апреля, 2014 - 01:43:23
Post Id


Новичок


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


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




Ну вот, уже информация набирается Улыбка
 
 Top
Строитель Модератор
Отправлено: 18 Апреля, 2014 - 14:15:49
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




Строитель пишет:
LIME пишет:
погнали дальше искоренять говнокод
PHP:
скопировать код в буфер обмена
  1. $file = array_reverse(file($file));
  2. $all = sizeof($file);
  3. for ($i = 0; $i < $all; $i++) {
  4.     $str.=$file[$i] . '^^';
  5. }
  6. $arr = explode('^^', $str);



в чем отличие этих подходов?
(Добавление)
только в последнем пустом элементе



А теперь я правильно реализовал идею?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     session_start();
  3.     if (isset($_SESSION['err'])){
  4.         $err=$_SESSION['err'];
  5.         } else {
  6.         $err='';
  7.         }
  8.     unset($_SESSION['err']);
  9.     $file='data.txt';
  10.     if (!file_exists($file)){
  11.         file_put_contents($file, NULL);
  12.         }
  13.     $arr=array_reverse(file($file));
  14.     $table='<table border="1">';
  15.     foreach($arr as $val){
  16.         $txt=explode('^',$val);
  17.         if ($txt[0]=='') break;
  18.         $table.='<tr><td width="105">'.$txt[0].'</td>';
  19.         $table.='<td width="88">'.$txt[1].'</td>';
  20.         $table.='<td width="193">'.$txt[2].'</td>';
  21.         $table.='<td width="368">'.$txt[3].'</td>';
  22.         $table.='<td width="193">'.$txt[4].'</td></tr>';
  23.         }
  24.     $table.='</table>';
  25. ?>


Только теперь я не знаю, как при необходимости в foreach() впихнуть постраничку.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB