За последние 24 часа нас посетили 18518 программистов и 1606 роботов. Сейчас ищет 931 программист ...

Сравнение даты (PHP MYSQL) Нужна идея реализации!

Тема в разделе "PHP и базы данных", создана пользователем YuZi, 10 фев 2011.

  1. YuZi

    YuZi Активный пользователь

    С нами с:
    9 фев 2011
    Сообщения:
    4
    Симпатии:
    0
    Всем доброго времени суток!
    Суть такова: если введённая мною дата в переменную $sdata еще не прошла (включительно) - выводить рисунок ok.png. Если прошла - выводить рисунок no.png
    есть несложный код для реализайии идеи:
    файл 1.php:
    PHP:
    1. <?
    2. include '2.php';
    3. img(20110209);
    4. ?>
    файл 2.php:
    PHP:
    1. <?php
    2. function img($sdata)
    3. {
    4.  
    5. $date = date("Ymd");
    6.  
    7.     if ($date <= $sdata)
    8.     {
    9.     print '<img src=images/ok.png>';
    10.     }
    11.       else
    12.       {
    13.       print '<img src=images/no.png>';
    14.       }
    15. }
    16. ?>
    НО! вводить вручную давно уже никому не интерестно(тем более что это быдет цикл DO WHILE), будем вытаскивать значение переменной $sdata из БД.
    Итак, вытаскиваем значение переменной $sdata из БД:

    Изменяем файл 1.php:

    PHP:
    1. <?php include("bd.php");
    2.  
    3. $result = mysql_query("SELECT date FROM tablica",$db);
    4. $myrow = mysql_fetch_array($result);
    5.  
    6. do
    7. {
    8.  
    9. include '2.php';
    10. img(%s);
    11. ",$myrow["date"]);
    12.  
    13. }
    14. while ($myrow = mysql_fetch_array($result));
    15.  
    16. ?>
    17.  
    И тут я сталкиваюсь с проблемой и нуждаюсь в Вашей помощи!
    Почему все данные в цикле DO WHILE выводятся как текст, а не идет подключение к файлу 2.php (include '2.php'), не срабатывает функция ??? (П.С. переменные из БД вытаскиваются правельно в формате '20010215','20010205','20010210' и т.д.)

    Помогите разобраться или предложите альтернативный вариант!
     
  2. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Логику такого вывода не понял, но ошибки у тебя такие
    1) файл 2.php нужно включать один раз
    2) вызов функции img должен быть как в файле 1.php
    3) выборку записей нужно в цикле while
    В итоге твой код должен быть примерно таким
    PHP:
    1.  
    2. <?php
    3. include("bd.php");
    4. include '2.php';
    5. $result = mysql_query("SELECT date FROM tablica",$db);
    6. if(result)
    7. {
    8.     while ($myrow = mysql_fetch_array($result,MYSQL_ASSOC))
    9.     {
    10.         echo  img($myrow["date"]);
    11.     }
    12. }
    13.  
     
  3. YuZi

    YuZi Активный пользователь

    С нами с:
    9 фев 2011
    Сообщения:
    4
    Симпатии:
    0
    PHP:
    1. <?php
    2.  include("bd.php");
    3.  include ("2.php");
    4.  $result = mysql_query("SELECT date FROM tablica",$db);
    5.  if(result)
    6.  {
    7.      while ($myrow = mysql_fetch_array($result,MYSQL_ASSOC))
    8.      {
    9.          echo  img($myrow["date"]);
    10.      }
    11.  }
    Да, этот вариант работает, но в одиночном случае (у меня значений $myrow["date"] будет около ста)
     
  4. YuZi

    YuZi Активный пользователь

    С нами с:
    9 фев 2011
    Сообщения:
    4
    Симпатии:
    0
    Я пришел к варианту который мне подходит, вот он:

    PHP:
    1. <?php include("bd.php");
    2. include ("2.php");
    3. $result = mysql_query("SELECT * FROM tablica",$db);
    4. $myrow = mysql_fetch_array($result);
    5.  
    6. do
    7. {
    8. $date = date("Ymd");
    9. echo("дата сегодня: $date<br>");
    10. echo $myrow['date'];
    11. echo '<br>';
    12.  
    13.     if ($date <= $myrow['date'])
    14.     {
    15.     print '<img src=images/ok.png>';
    16.     }
    17.       else
    18.       {
    19.       print '<img src=images/no.png>';
    20.       }
    21. }
    22. while ($myrow = mysql_fetch_array($result));
    23.  
    24. ?>
    все работает в отдельном случае, но когда вствляю в основной код где надо выводить большое кол-во текста проблема вывода как текст остаётся:

    PHP:
    1. <?php include("bd.php");  
    2.  
    3. $result = mysql_query("SELECT date FROM tablica",$db);  
    4. $myrow = mysql_fetch_array($result);  
    5.  
    6. do  
    7. {  
    8.  
    9. /*МНОГО-МНОГО ТЕКСТА, форм и т.д*/
    10.  
    11. $date = date("Ymd");
    12. echo("дата сегодня: $date<br>");
    13. $sdata = %s;
    14. echo $sdata;
    15.  
    16.    if ($date <= $sdata)
    17.    {
    18.    print '<img src=images/ok.png>';
    19.    }
    20.      else
    21.      {
    22.      print '<img src=images/no.png>';
    23.      }
    24.  
    25. /*МНОГО-МНОГО ТЕКСТА, форм и т.д*/
    26.  
    27. ",$myrow["date"]);  /*и куча значений кот. вытаскиваются из БД*/
    28.  
    29.  
    30. }  
    31. while ($myrow = mysql_fetch_array($result));  
    32.  
    33. ?>
     
  5. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    YuZi
    1) почитай про использование функции printf
    2) напиши четко последовательность вывода данных для каждого значения $myrow["date"]

    Пояснения
    1) такое впечатление, что ты думаешь, что функция printf рассматривает переданную строку как PHP код
    2) в цикле ты каждый раз выводишь
    echo("дата сегодня: $date<br>");
    что для меня кажется совершенно бессмысленным - 100 раз вывести сегодняшную дату
     
  6. YuZi

    YuZi Активный пользователь

    С нами с:
    9 фев 2011
    Сообщения:
    4
    Симпатии:
    0
    2) в цикле ты каждый раз выводишь
    echo("дата сегодня: $date<br>");
    что для меня кажется совершенно бессмысленным - 100 раз вывести сегодняшную дату

    ____________________________________________________________________________

    Runner

    выводил дату для наглядности... конечно же в основном коде этой строки вообще не будет.

    П.С. с функцией printf что-то я неправельно подошёл вообще к поставленой задаче... в данный момент пробую другой вариант