PHP.SU

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

Страниц (106): В начало « ... 98 99 100 101 102 103 104 [105] 106 »

> Найдено сообщений: 1580
Строитель Отправлено: 20 Апреля, 2014 - 00:24:38 • Тема: Некорректный вывод данных в браузер из двухмерного массива • Форум: Хранение данных, их вывод и обработка

Ответов: 5
Просмотров: 2441
Axl пишет:
Всем привет.
Проблема: есть двухмерный ассоциативный массив вида примерно такого:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $arr = array (
  3.   "а" => array("абв","где","ёжз"),
  4.   "б" => array("икл","мно","прс"),
  5.   "в" => array("туф","хцч","шщэ")
  6. );
  7.  
  8. foreach ($arr as $values){
  9.   foreach ($values as $value){
  10.     echo $value[0];
  11.   }
  12. }
  13.  

При попытке вывести первые элементы строк значений внутренних массивов получаю на странице, в зависимости от браузера, пустые квадраты или чёрные ромбы со знаком вопроса вместо русскоязычных символов. При выводе var_dump'ом в массивах всё равно видны квадраты. Если выводить первые элементы значений наружного массива, то "абвиклтуф" выведется нормально. Header с utf-8 посылал, в php.ini utf-8 прописывал, тестировал на разных Open Server'ax и XAMPP'e, прогуглил всё, что можно - без толку. Help!



А нужно именно сразу всё содержимое массива выводить? Я бы другим циклом прошёл по массиву.Например:

PHP:
скопировать код в буфер обмена
  1. $arr=array('а'=>array('абв','где','ёжз'),
  2.            'б'=>array('икл','мно','прс'),
  3.            'в'=>array('туф','хцч','шщэ'));
  4. $all=sizeof($arr);
  5. for($i=0; $i<$all; $i++){
  6.     $str_0.=$arr['а'][$i].'<br />';
  7.     $str_1.=$arr['б'][$i].'<br />';
  8.     $str_2.=$arr['в'][$i].'<br />';
  9. }
  10. echo $val=$str_0.$str_1.$str_2;
  11.  
Строитель Отправлено: 18 Апреля, 2014 - 23:34:28 • Тема: Что легче обработать интерпретатору txt файл с текстом или текст из Mysql • Форум: Работа с файловой системой и файлами

Ответов: 12
Просмотров: 3116
JamesHound пишет:
Планируется обработка большого количества текста и сейчас уже возникают долгие задержки при выводе и обработке текста из Mysql. Отсюда вопрос. Если текст помещу в txt файл, уменьшиться ли нагрузка на интерпретатор ?


Попробуйте самостоятельно отследить время выполнения обоих скриптов(на файлах, и MySQL) , разместив в соответсвующих местах примерно такой код

PHP:
скопировать код в буфер обмена
  1. $start=microtime(1);
  2. ########################################
  3. ####### Здесь код вашего скрипта #######
  4. ########################################
  5. $end=microtime(1);
  6. $time=$end-$start;
  7. echo $time;
  8.  
Сравните время выполнения программ и сделайте выбор в пользу меньшего Закатив глазки
Строитель Отправлено: 18 Апреля, 2014 - 14:15:49 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
Строитель пишет:
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() впихнуть постраничку.
Строитель Отправлено: 17 Апреля, 2014 - 19:36:54 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

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


Вот отличия:

array(0) { }

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

В массиве есть пустая строка, поэтому я добавил это условие во втором цикле
Строитель Отправлено: 17 Апреля, 2014 - 19:10:23 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
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));
Строитель Отправлено: 17 Апреля, 2014 - 18:23:01 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

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


Исправил )
Строитель Отправлено: 17 Апреля, 2014 - 17:48:20 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
Переписал с учётом исправлений файл 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 - 15:19:28 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
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?> в шаблоне где надо
таким образом получаем возможность выводить где хотим
менять место вывода
выводить более одного раза(например пагинация выше контента и ниже)


Теперь ясно. Спасибо! )
Строитель Отправлено: 17 Апреля, 2014 - 15:07:43 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
LIME пишет:
шаблон это та разметка которая у тебя ниже php
обычно это подключается отдельным файлом(это очень упрощенно)
как минимум include
чтоб разделить логику и представление
подробнее объяснит гугл
MVC
(Добавление)
я же писал
убери все выводы из PHP
формируй переменные и выводи их в шаблоне
не мешай логику с отображением(представлением)
при дальнейшем росте проекта в твоем подходе возникнет нечитаемая каша из php и html


Я понял, благодарю Улыбка
(Добавление)
[quote=Строитель]
LIME пишет:
шаблон это та разметка которая у тебя ниже php
обычно это подключается отдельным файлом(это очень упрощенно)
как минимум include
чтоб разделить логику и представление
подробнее объяснит гугл
MVC
(Добавление)
я же писал
убери все выводы из PHP
формируй переменные и выводи их в шаблоне
не мешай логику с отображением(представлением)
при дальнейшем росте проекта в твоем подходе возникнет нечитаемая каша из php и html




А можете на примере этого кода показать, где надо сделать вывод? Тут два echo; их оба надо перенести в тело html ?
Строитель Отправлено: 17 Апреля, 2014 - 14:58:45 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
LIME пишет:
все выводы в php убери
формируй переменные и их выводи в шаблоне
а вообще даже неплохо для такого незначительно опыта
очень даже
экранирование и редирект
вполне толково для 3го раза
(Добавление)
и проверки есть
точно 3ий раз?))


Да, скрипт действительно третий. Первый был калькулятор на 4-е основных действия (+,-,*,/), второй - гостевая на файлах, ну и собственно третий - этот журнал. Спасибо за помощь. А про вывод в шаблоне можно подробнее на примере?
(Добавление)
Переписал index.php

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


Я так понимаю, что каждый вызов echo; замедляет выполнение скрипта?
Строитель Отправлено: 17 Апреля, 2014 - 14:42:41 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
LIME пишет:
см выше
(Добавление)
для вывода <?=$table?>



Спасибо, перепишу.
Строитель Отправлено: 17 Апреля, 2014 - 14:35:59 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
LIME пишет:
Строитель пишет:
Это мой всего третий скрипт ))
для 3го ожидаемо
но вообще код кошмар
для начала что за таблица выводится перед доктайпом?
почему не накапливается в переменную которую потом можно вставить в разметку ниже?
и почему на каждую строку новая таблица?
почему не вынести <table> за цикл?


Таблица перед доктайпом - протупил. Как накопить в переменную? Через точку "." ? Если да, то для вывода потом использовать ещё один цикл?
Строитель Отправлено: 17 Апреля, 2014 - 14:23:35 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
esterio пишет:
Вопрос то в чем?
Если чесно то реализация хромая мягко говоря


А можно по-подробней? Это мой всего третий скрипт ))
Строитель Отправлено: 17 Апреля, 2014 - 14:15:35 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
Вот мой вариант

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


sort.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     session_start();
  3.     if (isset($_POST)){
  4.         $group = $_POST['group'];
  5.         $date = trim(htmlspecialchars($_POST['date']));
  6.         $user = trim(htmlspecialchars($_POST['user']));
  7.         $mission = trim(htmlspecialchars($_POST['mission']));
  8.         $time = trim(htmlspecialchars($_POST['time']));
  9.         $date = str_replace(array("\n",'^'),'',$date);
  10.         $user = str_replace(array("\n",'^'),'',$user);
  11.         $mission = str_replace(array("\n",'^'),'',$mission);
  12.         $time = str_replace(array("\n",'^'),'',$time);
  13.         $string = $group.'^'.$date.'^'.$user.'^'.$mission.'^'.$time."\n";
  14.             if (!empty($date) && !empty($user) && !empty($mission) && !empty($time)){
  15.                 file_put_contents('data.txt', $string, FILE_APPEND);
  16.             } else {
  17.                 $_SESSION['err']='<h2>Заполните все поля!</h2>';
  18.             }
  19.     }
  20.     header('Location: index.php');
  21. ?>
Строитель Отправлено: 17 Апреля, 2014 - 08:40:05 • Тема: Журнал регистрации служебных поездок и местных командировок сотрудников • Форум: Вопросы новичков

Ответов: 24
Просмотров: 1207
Downloader пишет:
Дорогие друзья, всех приветствую!
У меня такой вопрос. В организации есть журнал в который сотрудник отъезжающий по делам записывает свой отъезд. Но это порой не совсем удобно, так как журнал лежит в определённом месте, до него нужно сначала дойти, вписаться и уйти. У меня возникла идея сделать это в виде электронного ресурса - сайта. Может есть какие готовые решения или какой нибудь компонент для Joomla.
К сообщению прикрепляю рисунок для более понятного объяснения.


Я сегодня напишу такой журнал )

Страниц (106): В начало « ... 98 99 100 101 102 103 104 [105] 106 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB