PHP.SU

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

Страниц (142): В начало « ... 134 135 136 137 138 139 [140] 141 142 »

> Найдено сообщений: 2118
Zuldek Отправлено: 22 Декабря, 2010 - 21:00:00 • Тема: cron.php • Форум: Программирование на PHP

Ответов: 4
Просмотров: 262
Мелкий пишет:
CURRENT_TIMESTAMP

Благодарю. С одной стороны проще ибо не мучится с преобразованием даты-времени, а с другой, с этой функции ведь время по серверу, а у меня в бд пишется дата и время с пользовательской формы. Впрочем его можно не поленится и в серверное перевести Закатив глазки
Zuldek Отправлено: 22 Декабря, 2010 - 20:27:51 • Тема: Как создать такой систему подключения шаблона такую же как в PhpBB • Форум: Программирование на PHP

Ответов: 5
Просмотров: 474
Gestein пишет:
Не мне CMS чужая не нужна. Я голову развиваю. Так и не получил ответа.

Смарти это не чужая CMS, это система построения шаблонов, которая интегрируется с CMS специально для тех кто не хочет изобретать велосипед. Открытые исходники.
Zuldek Отправлено: 22 Декабря, 2010 - 15:11:02 • Тема: cron.php • Форум: Программирование на PHP

Ответов: 4
Просмотров: 262
написал скрипт для запуска по расписанию скрипт проверяет даты в базе и если дта больше текущей, меняет параметр активности акции на 0.

Но что-то мне подсказывает что решение далеко не самое изящное и есть более простые способы. Прошу посоветовать подобные, если они имеются.


CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  // Устанавливаем соединение с базой данных
  3.  require_once("config.php");
  4.  $currenttime=time();
  5.  $n=0;
  6.  $query = "Select share_starttime, share_endtime FROM shares";
  7.  if($shares = mysql_query($query)) {
  8.    while($share = mysql_fetch_array($shares))
  9.         {
  10.         $date_time_string = $share[share_endtime];
  11.         $dt_elements = explode(' ',$date_time_string);
  12.    $date_elements = explode('-',$dt_elements[0]);
  13.    $time_elements = explode(':',$dt_elements[1]);
  14.         $newtime= mktime($time_elements[0], $time_elements[1],$time_elements[2], $date_elements[1],$date_elements[2], $date_elements[0]);
  15.    //сравниваем UNIX-время с текущим, если текущее больше, убираем активность акции
  16.         if ($currenttime>$newtime) {
  17.         $update = mysql_query("UPDATE shares SET shares.share_active=0");
  18.                 if($update) echo "убрана в архив".$n++."акций";
  19.                 }
  20.         }
  21. }
  22. else echo "ошибка извлечения значений времени";
  23. ?>
  24.  
Zuldek Отправлено: 22 Декабря, 2010 - 12:50:50 • Тема: Помогите с фильтрациями значений • Форум: Программирование на PHP

Ответов: 11
Просмотров: 596
ошибку поправил почти сразу как пост создал ). Спасибо большое, теперь буду думать как обойтись без создания второго массива и искать изящное решение)
Zuldek Отправлено: 22 Декабря, 2010 - 12:04:34 • Тема: Помогите с фильтрациями значений • Форум: Программирование на PHP

Ответов: 11
Просмотров: 596
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Warning: Cannot use a scalar value as an array in  line 9
  3.  
  4. Warning: Cannot use a scalar value as an array in  line 9
  5.  
  6. Warning: Cannot use a scalar value as an array in  line 9

Попробовал ваш вариант - возникает эта ошибка, если я павельно думаю то это изза того что тут где то вернулась переменная а не массив
CODE (htmlphp):
скопировать код в буфер обмена
  1.   // Формируем запрос на для вывода акций
  2.       $shares = array();
  3.       $query = "Select * FROM shares WHERE share_active = 1 ORDER BY share_status ASC LIMIT 3";
  4.         if($shares = mysql_query($query)) {
  5.              while ($row = mysql_fetch_array($shares)) {
  6.       $shares[] = $row;
  7. }

9 строка - $shares[] = $row;
(Добавление)

в месте вывода оставшихся акций -
Warning: Invalid argument supplied for foreach() in
Zuldek Отправлено: 22 Декабря, 2010 - 10:19:24 • Тема: Помогите с фильтрациями значений • Форум: Программирование на PHP

Ответов: 11
Просмотров: 596
Мелкий пишет:
Не согласен. Показан код, жёстко требующий 3 строки. Если строк меньше, элементов массива всё равно будет 3, но пустые будут содержать false вместо массива.

Хм, верно. Сейчас уберу счётчик из цикла и как условие поставлю истину выражения mysql_query($query). Но вопрос реализации вывода значений (разъяснил его выше) всё равно остался
(Добавление)
JustUserR пишет:
Для реализации предявленной вами формулировки задачи возможно использование копирования определенных значений массива - в таком случае возможно прохождение по его элементам посредством foreach-цикла производящего выборку существующих и определенных элементов

А нельзя-ли использовать уже имеющийся массив значений, отфильтровывая их как-то, исключая элементы по ключу (например в роли главной акции через GET передался параметр st=2, следовательно кажем 2-ую строку массива в месте для главной акции, а в месте для дополнительных акций кажем акции 1 и 3, как. То есть чтобы отобразить доп. акции надо отфильтровать массив share, исключив из него строку с ключём 2, выведя остальные элементы в порядке значений их ключей, то есть 1, 3...?
Zuldek Отправлено: 22 Декабря, 2010 - 10:08:59 • Тема: Помогите с фильтрациями значений • Форум: Программирование на PHP

Ответов: 11
Просмотров: 596
JustUserR пишет:
Для осуществления извлечения требуемого числа элементов

Спасибо, но проблема не с извлечением элементов из бд. Вот полный код извлечения и записи в массив:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  $query = "Select * FROM shares WHERE share_active = 1 ORDER BY share_status ASC";
  2.   if($shares = mysql_query($query)) {
  3.        for ($i=1; $i<=3; $i++)
  4.                 {
  5.                 $share[$i] = mysql_fetch_array($shares);
  6.                 }
  7. }

Извлекаем только те акции у которых active = 1. Максимум их может быть 3, минимум 1, так что $i=1; $i<=3; $i++ вообще говоря лишний.

Но основная проблема состоит именно в правильном выводе значений на странице. Как и описал выше, на странице 2 места вывода значеий массива. 1 место для одной акции, идущей на первом месте в массиве (с наименьшим share_status в бд, которым имеет значения от 1 до 3.) и второе место для вывода всех оставшихся значений массива (дополнительные акции, 1-2, в зависимости от наличия их в бд).

Так вот в выводе каждой дополнительной акции там стоит ссылка на текущую страницу, которая передаёт ей параметр st (см. первый пост), который равен ключу текущего выводимого значения в массиве. Этот ключ используется для вывода главной акции в позиции 1 (шапка страницы).

В идеале, когда из бд извлечены 3 акции и через GET не передан st (страница открыта без параметров), приравниваю его к единице. В месте вывода значения главной акции
echo $share[$st]['name']; в месте вывода двух других акций пишу:
CODE (htmlphp):
скопировать код в буфер обмена
  1.       echo $share[2]['name']."<a href='/?st=>".2."'</a>";
  2.       echo $share[3]['name']."<a href='/?st=>".3."'</a>";

таким образом если посетитель давит на ссылку с st=2, грузится эта же страница, только в шапке выводится уже вторая акция $share[2]['name'];
При этом надо чтобы месте вывода допольнительных акций выводились уже акция 1 (на месте 2, которая отобразилась на месте главной), и акция 3.
Аналогично должно быть и для акции $share[3]['name'] : если она кажется месте главной, то как дополнительные отображаются 1, и 2.
При этом надо чтобы если удалят одну любую (или две) акции из бд, то отображалось бы всё равно всё корректно. Вот не могу сообразить как это сделать(.. вроде надо выводить дополнительные акций в виде одного цикла...
Zuldek Отправлено: 22 Декабря, 2010 - 08:56:50 • Тема: Вывод значений в зависимости от их наличия в БД • Форум: Программирование на PHP

Ответов: 3
Просмотров: 314
http://forum.php.su/topic.php?fo...1&topic=5731 тут изложил понятнее, эту тему прошу удалить
Zuldek Отправлено: 22 Декабря, 2010 - 08:54:03 • Тема: Помогите с фильтрациями значений • Форум: Программирование на PHP

Ответов: 11
Просмотров: 596
есть массив
CODE (htmlphp):
скопировать код в буфер обмена
  1. for ($i=1; $i<=3; $i++)
  2.                 {
  3.                 $share[$i] = mysql_fetch_array($shares);
  4.                 }

извлекающий от 1 до 3 строк из бд, в зависимости от их наличия.

строки должны выводится хитрым образом на странице таким образом:
первая, - всегда в шапке страницы, а две другие сбоку (html-оболочка для первой строки одна, а для двух боковых выводимых строк, - другая).

В выводе боковых строк подставляется ссылка на эту же страницу, содержащая параметр $st (ключ текущего выводимого значения массива). Этот параметр используется для вывода одного из значений массива в шапке страница. Если параметр не передан, то выводится в шапке 1, а сбоку 2 и 3 значения, Если передано 2, то - 2 в шапке, 1 и 3 сбоку.
CODE (htmlphp):
скопировать код в буфер обмена
  1. if($_GET['st']) {
  2. $st=$_GET['st'];
  3. }
  4. else $st=1;
  5.  
  6. //вывод значения в шапке
  7. ...html...
  8. echo $share[$st]['name'];
  9. ...html...


с первым значением всё просто, а вот дальше для боковых значений код для вывода наверно такой:
CODE (htmlphp):
скопировать код в буфер обмена
  1. echo $share[2]['name']."<a href='/?st=>".2."'</a>";
  2. echo $share[3]['name']."<a href='/?st=>".3."'</a>";

Вот тут у меня проблема мне кажется этот код работать не будет Огорчение , поскольку надо наверно выводить эти 2 или одно(если в базе удалили 1) значение в цикле, как-то перед этим удаляя из массива то значение, которое уже выведено в шапке.. вот как это сделать я не знаю и очень прошу помочь.
Zuldek Отправлено: 21 Декабря, 2010 - 21:44:28 • Тема: Вывод значений в зависимости от их наличия в БД • Форум: Программирование на PHP

Ответов: 3
Просмотров: 314
[quote=OrmaJever]и что? Однако[/quote#
При щелчке на картинку акции методом GET на эту же странцу передаётся параметр

"st", содержащий status акции (значения от 1 до 3, 1 - основная акция, 2 - доп, 3 - вторая дополнительная. Смысл в том, чтобы если клацаешь по картинке дополнительной акции открывалась снова эта страница и акция по которой клацнул отображается уже в шапке сайта. Это реализовано в самом начале кода страницы как раз через $stm и $stm2. Однако начинаются проблемы если из базы удаляется одна из трёх акций (их 3 максимум).То есть если удалил акцию со статусом 2 (первую дополнительную), в шапке покажется акция с share_status 1, а сбоку (ниже) акция с share_status 3.

При этом если нажать на ссылку с акции 3, то она не выводится в шапку а возникает ошибка! Помогите разобраться, как лучше реализовать вывод акций, чтобы не возникала ошибка эта?
Zuldek Отправлено: 21 Декабря, 2010 - 20:43:25 • Тема: Вывод значений в зависимости от их наличия в БД • Форум: Программирование на PHP

Ответов: 3
Просмотров: 314
CODE (htmlphp):
скопировать код в буфер обмена
  1. <? if($_GET['st']) {
  2.   $_GET['st'] = addslashes($_GET['st']);
  3.  // заменяем все специальные символы эквивалентом
  4.  $_GET['st'] = htmlspecialchars ($_GET['st']);
  5.  // отрезаем все ненужные симовлы
  6.  $_GET['st'] = preg_replace("/[^a-z0-9]/i", "", $_GET['st']);
  7.  $st=$_GET['st'];
  8. } else $st=1;
  9.    switch ($st) {
  10.    case "1":
  11.          $stm=2;
  12.          $stm2=3;      
  13.         break; 
  14.         case "2":
  15.          $stm=1;
  16.          $stm2=3;      
  17.        break;
  18.         case "3":
  19.          $stm=1;
  20.          $stm2=2;      
  21.        break;
  22.         default:
  23.          $stm=2;
  24.          $stm2=3;      
  25.         }
  26. for ($i=1; $i<=3; $i++)
  27.                 {
  28.                 $share[$i] = mysql_fetch_array($shares);
  29.                 }
  30. } else echo "Ошибка соединения с блоком акций";
  31. ?>
  32.  
  33. <?
  34. //вывод основной акци ив шапке
  35. echo $share[$st]['share_discount'].".png";
  36. echo $share[$st]['share_name']
  37. ....
  38. ?>
  39.  
  40. <?
  41. /*
  42. вывод дополнительной и второй дополнительно акции, если есть.
  43. При щелчке на картинку акции методом GET на эту же странцу передаётся параметр
  44. "st", содержащий status акции (значения от 1 до 3, 1 - основная акция, 2 - доп, 3 - вторая дополнительная. Смысл в том, чтобы если клацаешь по картинке дополнительноай акции открвалась снвоа эта страниуа и акция по которой клацнул отображается уже в шапке сайта. Это реализовано в самом началде кода страницы какраз через $stm и $stm2. Однако начинаются проблемы если из базы удаляется одна из трёх акций (их 3 максимум).То есть если удалил акцию со статусом 2 (первую дполнительную), в шапке покажется акция с share_status 1, а сбоку (ниже) акция с share_status 3. При этом если нажать ан ссылку с акции 3, то она не выводится в шапку а возникает ошибка! Помогите разобраться, может надо было както подругмоу реализовать вывод или замену акций...
  45. */
  46. if ($share[$stm]) {
  47. echo "<table class='shares'>
  48.         <tr>
  49.                 <td id='share2' style='background-image:url(".$share[$stm]['share_picture_s'].")'><a href='/?st=".$share[$stm]['share_status']."'><img src='images/share_mask.png'></a></td>
  50.         </tr>
  51.    <tr>
  52.         <td>
  53.        <div id='company_type'>".$share[$stm]['share_comp_type']."</div>
  54.        <div id='company_name'>«".$share[$stm]['share_comp_name']."»:</div>
  55. </td>
  56. </tr>
  57. </table>";
  58.  
  59. if ($share[$stm2]) {
  60. echo "<table class='shares'>
  61.         <tr>
  62.                 <td id='share2' style='background-image:url(".$share[$stm2]['share_picture_s'].")'><a href='/?st=".$share[$stm2]['share_status']."'><img src='images/share_mask.png'></a></td>
  63.         </tr>
  64.    <tr>
  65.         <td>
  66.        <div id='company_type'>".$share[$stm2]['share_comp_type']."</div>
  67.        <div id='company_name'>«".$share[$stm2]['share_comp_name']."»:</div>";
  68. ?>
Zuldek Отправлено: 14 Декабря, 2010 - 14:15:40 • Тема: Отсчёт времени • Форум: Программирование на PHP

Ответов: 0
Просмотров: 138
из php передаю в js переменную с оставшимся временем до события в секундах (lefttime).
Js скрипт для вывода счётчика взял такой -

CODE (htmlphp):
скопировать код в буфер обмена
  1. ShowTime(fname,lefttime,type)
  2. {
  3.   lefttime--;
  4.   if (lefttime<=0) { document.getElementById(fname).innerText=''; window.location.reload(); }
  5.  var sec=lefttime%60;
  6.  var min=Math.floor(lefttime/60);
  7.  var day=Math.floor(lefttime/86400);
  8.  var hour=Math.floor((lefttime/3600)-(day*86400/3600));
  9.  if (sec<10) sec="0"+sec;
  10.  if (min>60) min-=(Math.floor(min/60)*60);
  11.   if (min==60) min=0;
  12.   if (type!=1) { if (min<10) min="0"+min; }
  13.  if (type==1) { document.getElementById(fname).innerHTML=min+" мин. "+sec+" сек."; }
  14.  else
  15.  {
  16.    if (day>0) document.getElementById(fname).innerHTML=day+" д. "+hour+" ч. "+min+" мин. "+sec+" сек.";
  17.     else
  18.     {
  19.       if (hour>0) document.getElementById(fname).innerHTML=hour+" ч. "+min+" мин. "+sec+" сек.";
  20.       else document.getElementById(fname).innerHTML=min+" мин. "+sec+" сек.";
  21.     }
  22.   }
  23.   setTimeout("ShowTime('"+fname+"',"+lefttime+","+type+")",1000);
  24. }


в страницу вывожу результат так -

CODE (htmlphp):
скопировать код в буфер обмена
  1. <div id="lefttime"></div><?php echo "<script>ShowTime('lefttime',".$secs.")</script>"; ?>


Выходит естественно в формате "n д. n ч. n мин. n сек." Прошу помочь рецептом или советом как сделать чтобы слова день час минута секунда правильно склонялись в зависимости от значений.
Zuldek Отправлено: 07 Ноября, 2010 - 21:29:22 • Тема: Поиск значения элемента массива • Форум: Программирование на PHP

Ответов: 14
Просмотров: 968
OrmaJever пишет:
PHP:
скопировать код в буфер обмена
  1. $query = mysql_query('SELECT * FROM artpage WHERE id_page="'.mysql_escape_string($_GET['id']).'"');


Почему нельзя зделать так?


Можно, но, как я уже говорил, - это повторный запрос к бд. сам так в итоге и сделал.
Zuldek Отправлено: 07 Ноября, 2010 - 13:41:45 • Тема: карта сайта • Форум: Программирование на PHP

Ответов: 6
Просмотров: 529
OrmaJever пишет:
Сори за тупой вопрос но зачем там карта сайта? там вроде всего 5 сылок Однако
В даном случааи можно зделать статическую страницу на html и не заморачиватся
(Добавление)
http://parket-moscow[dot]com/calculate.php?item=1%27


Если человек спросил стало быть есть необходимость
Например завтра они начнут продавать обои а после-завтра вообще всё на свете
Сори за тупое пояснение Улыбка
Zuldek Отправлено: 07 Ноября, 2010 - 13:37:06 • Тема: Поиск значения элемента массива • Форум: Программирование на PHP

Ответов: 14
Просмотров: 968
OrmaJever пишет:
Zuldek покажите структуру таблицы. Я уверен что то что вам нужно можно зделать в одном запросе

artpage
------------------
id_page | name
------------------

объясните пожалуйста почему нельзя найти нужное значение в mysql_fetch_array($pgs, MYSQL_NUM) ведь оно там точно есть...

Страниц (142): В начало « ... 134 135 136 137 138 139 [140] 141 142 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB