Загрузка...

Who fumbles in PHP respond

Thread in Web development created by heisenberg_ali Nov 3, 2017. 343 views

  1. heisenberg_ali
    heisenberg_ali Topic starter Nov 3, 2017 2 Oct 28, 2017
    Срочно
     
  2. kzpromo
    kzpromo Nov 5, 2017 4 Oct 17, 2017
    собственно, в чем тема разговора?
     
  3. heisenberg_ali
    heisenberg_ali Topic starter Nov 5, 2017 2 Oct 28, 2017
    надо оптимизировать один запрос к БД
     
  4. heisenberg_ali
    heisenberg_ali Topic starter Nov 5, 2017 2 Oct 28, 2017
    $sql = "SELECT news.*, images.filename,
    UNIX_TIMESTAMP(created) AS ctime,
    images.filename FROM news
    LEFT JOIN images
    ON images.news_id = news.id
    WHERE 1
    AND created <= NOW()
    $sql_date
    order by created desc
    LIMIT $start, $positions";
     
  5. kzpromo
    kzpromo Nov 5, 2017 4 Oct 17, 2017
    а если быть более точным? Вы когда-нибудь писали ТЗ?
    + не забудьте скинуть исходник
     
  6. heisenberg_ali
    heisenberg_ali Topic starter Nov 6, 2017 2 Oct 28, 2017
    Code
    <?php
    error_reporting(E_ALL);
    /*
    * Блок используется для вывода новостей по id или для вывода всех новостей в блочном виде
    */
    $noid = "";

    $news_main = "";
    $news_list = "";
    $news_image = "";

    if (isset($_GET['id']) && is_numeric($_GET['id'])) {

    $newsId = (int) $_GET['id'];


    $q = mysql_query("SELECT *, DATE_FORMAT(created, '%H:%i') as ctime
    FROM news
    WHERE id = $newsId");


    /*Выводим количество просмотров*/


    $q3 = mysql_query("SELECT counter FROM news WHERE id = $newsId");
    $res = mysql_fetch_array($q3);
    $count_of_views = $res['counter'];
    $count_of_views++;
    $q3 = mysql_query("UPDATE news SET counter='$count_of_views' WHERE id = $newsId");




    //Debugger("TRUE1","",true);
    if (mysql_num_rows($q) > 0)
    {
    $noid = "yes";
    $news_main = mysql_fetch_assoc($q);
    $_title = $news_main['title'];




    if(!mysql_num_rows(mysql_query("SELECT filename FROM images WHERE news_id = $newsId")))
    $news_image = CONF_STYLE_IMAGE_PATCH."images/newsterm.png";
    else
    $news_image = mysql_result(mysql_query("SELECT filename FROM images WHERE news_id = $newsId"), 0);

    //Debugger($news_image,"",true);
    $news_image = file_exists("images/1_" . $news_image) ? SITE_DOMEN."images/1_" . $news_image : CONF_STYLE_IMAGE_PATCH."newsterm.png";
    $author_image = $news_main['author_image'];

    $tags = rtrim($news_main['tagid'], ',');

    $news_context = mysql_query("SELECT * FROM tags WHERE id IN($tags)");
    $news_t = mysql_query("SELECT * FROM news WHERE id != ".$news_main['id']." AND tagid IN($tags) ORDER BY created DESC LIMIT 5");
    $news_cat = mysql_query("SELECT * FROM news WHERE catid = $news_main[catid] AND id !=$newsId ORDER BY created DESC LIMIT 2");

    $news_video = mysql_fetch_assoc(mysql_query("SELECT * FROM videos WHERE news_id = $newsId AND deleted = false"));

    /*$news_list = mysql_query("SELECT *, DATE_FORMAT(created, '%H:%m') as date
    FROM news
    WHERE created <= NOW()
    ORDER by created DESC
    LIMIT 13");*/
    $news_list = mysql_query("SELECT *, UNIX_TIMESTAMP(created) as date
    FROM news
    WHERE created <= NOW()
    ORDER by created DESC
    LIMIT 8");

    $cat = mysql_fetch_assoc(mysql_query("SELECT * FROM categories WHERE id = $news_main[catid]"));
    $cat['name'] = $_LANG['ID_CAT'][$_SLANG][$cat['id']];

    if($_SLANG=='en')
    $cat['name'] = strtoupper ($cat['name']);
    else
    $cat['name'] = strupper($cat['name']);

    }
    else
    header ("Location: ".CONF_SITE_NEWS);

    }
    else
    {

    /*
    * Блок $date - используется для поиска даты выполняется через get запрос
    * Заметка: Нужно будет реализовать пункт поиска новости по дате
    */
    $noid = "no";
    $date = isset($_GET['date']) ? $_GET['date'] : "";

    if(!get_magic_quotes_gpc())
    {
    $date = addslashes($date);
    }

    if(!empty($date))
    {
    $sql_date = " AND DATE(created) = '$date' ";
    }
    else
    $sql_date = "";

    $total = mysql_result(

    mysql_query("SELECT COUNT(id) FROM news WHERE created <= NOW()
    $sql_date
    AND hide = 0"), 0);


    $positions = $config['positions'];
    $page = isset($_GET['page']) && is_numeric($_GET['page']) ? abs((int)$_GET['page']) : 1;

    $total = intval(($total - 1) / $positions) + 1;

    $page = intval($page);

    if(empty($page) or $page < 0)
    $page = 1;
    if($page > $total)
    $page = $total;

    $start = $page * $positions - $positions;

    $sql = "SELECT news.*, images.filename,
    UNIX_TIMESTAMP(created) AS ctime,
    images.filename FROM news
    LEFT JOIN images
    ON images.news_id = news.id
    WHERE 1
    AND created <= NOW()
    $sql_date
    order by created desc
    LIMIT $start, $positions";

    $news_all = mysql_query($sql);

    if (!mysql_num_rows($news_all))
    $parts = $_LANG['LOGIC_NEWS_NONEN'][$_SLANG];
    else
    {
    $parts = "";
    while ($news = mysql_fetch_assoc($news_all)) {
    if (date("Ymd") != date("Ymd", $news['ctime'])) {
    $date = dateText($news['ctime']) . date(" в H:i", $news['ctime']);
    }
    else {
    $date = date("сегодня в H:i", $news['ctime']);
    }
    $img = file_exists("images/1_".$news['filename']) ? SITE_DOMEN."images/1_".$news['filename'] : CONF_STYLE_IMAGE_PATCH."newsterm.png";
    $parts .= '
    <div class="bl-news-all">
    <div class="bl-news-all-top">
    <div class="bl-news-all-img">
    <div class="bl-news-text-date">'.$date.'</div>
    <img width="" height="" src="'.$img.'"/></div>
    <a href="'.CONF_SITE_NEWS.'?id='.$news['id'].'">'.$titile_news = mb_substr($news['title'], 0, 80, 'UTF-8') . '...' .'</a>
    <div class="block-clear"></div>
    </div>
    </div>';
    }
    }

    $left = "";
    $right = "";
    $center = "";
    /*
    if ($pageN > 1) {
    $left = "<div class='bl-news-pleft'><a href='news.php?page=" . ($pageN - 1) . "'><<<</a></div>";
    }
    if ($total > $positions &&
    $pageN != ceil($total / $positions)) {
    $right = "<div class='bl-news-pright'><a href='new_news.php?page=" . ($pageN + 1) . "'>>>></a></div>";
    }
    */
    // Проверяем нужны ли стрелки назад
    if ($page != 1) $left .= '<div class="bl-news-pleft">
    <a class="bg-animate" href="'.CONF_SITE_NEWS.'?page=1"><<</a>
    <a class="bg-animate" href="'.CONF_SITE_NEWS.'?page='. ($page - 1) .'"><</a>
    </div>';

    // Находим две ближайшие станицы с обоих краев, если они есть
    if($page - 2 > 0)
    $left .= '<div class="bl-news-pcenter"> <a class="bg-animate" href="'.CONF_SITE_NEWS.'?page='. ($page - 2) .'">'. ($page - 2) .'</a></div>';
    if($page - 1 > 0)
    $left .= '<div class="bl-news-pcenter"><a class="bg-animate" href="'.CONF_SITE_NEWS.'?page='. ($page - 1) .'">'. ($page - 1) .'</a></div>';

    if($page + 2 <= $total)
    $right .= '<div class="bl-news-pcenter"><a class="bg-animate" href="'.CONF_SITE_NEWS.'?page='. ($page + 1) .'">'. ($page + 1) .'</a></div>';
    if($page + 1 <= $total)
    $right .= '<div class="bl-news-pcenter"><a class="bg-animate" href="'.CONF_SITE_NEWS.'?page='. ($page + 2) .'">'. ($page + 2) .'</a></div>';

    // Проверяем нужны ли стрелки вперед
    if ($page != $total) $right .= '<div class="bl-news-pright">
    <a class="bg-animate" href="'.CONF_SITE_NEWS.'?page='. ($page + 1) .'">></a>
    <a class="bg-animate" href="'.CONF_SITE_NEWS.'?page=' .$total. '">>></a>
    </div>';
    // Вывод меню
    $pages = $left.'<div class="bl-news-pcenter"><b>'.$page.'</b></div>'.$right;
    }
    ?>
     
  7. renameduser_214334
    чем могу помочь?
     
  8. renameduser_14296
    renameduser_14296 Nov 26, 2017 > ^^_^ < 4 Apr 21, 2014
    mysql в новых версиях PHP отключён.
    юзай msqli, как минимум, а лучше PDO библиотеки и не будет таких вопросов)
     
Top
Loading...