Здравствуйте, сейчас перебираю свой самописный сайт. Вот код на вывод новостей: PHP: if ($_GET['cat']) { $cat = '>=1'; } else { $cat = '=2'; } $query = mysqli_query($mysqli, "SELECT * FROM news WHERE status $cat ORDER BY id DESC "); $short = substr(0, 100); if (mysqli_num_rows($query) == 0) { echo "There are no records!"; } else { mysqli_set_charset(connection, "utf8"); while ($art = mysqli_fetch_assoc($query)) { echo '<div class="news" id="' . $art['id'] . '">'; echo ' <div class="news_content">'; if ($art['img']) { echo ' <img class="news_img" src="/content/img/' . $art['img'] . '">'; echo ' <img class="news_img_m" src="/content/img/' . $art['img'] . '">'; } echo ' <h5>' . $art['date'] . ' <a href="/visit/' . $art['author'] . '">Автор</a></h5>'; echo ' <p>'; echo mb_strimwidth(htmlspecialchars($art['text']), 0, 300, '... <a href="/p/' . $art['id'] . '">Читать далее</a>'); echo ' </p>'; echo ' </div>'; echo '</div>'; } } echo '<br>'; Сам код выглядит не очень, хоть и работает отлично. Есть ли статьи с этой темой, в которой на примере показывается как правильно оформить такой код?
@NikolaMSk, РНР это как раз логика, а не представление. @Kizer, установка кодировки соединения по хорошему должна быть один раз при установке соединения с бд. Для грамотного написания кода одной статьи не достаточно. Прочтите 3-4 книги и пару лет практики в большинстве случаев достаточно.
Из цитатника этот ответ взял? Очень легко сказать читай книги, при этом даже не порекомендовав ни одну)) Нет у меня столько времени, что бы читать книгу( Поэтому и прошу примеры, а дальше с php.su читаю то, что не понятно.
В чём ошибка? Если в запросе присутствует 'cat' то сделать то-то то-то. Со вторым согласен, место connection должна быть переменная (возможно стёр случайно)
Я вам как-то уже давал ссылку на мою статью Как сделать вывод списка статей? Выводов вообще никаких не сделали. Как написал Валик, установку кодировки делаете внутри той же обертки, что и коннект. В нек. случаях это действие можно опустить, но вам для надежности лучше всегда делать. И результат этой ф-ции нужно учитывать, например: PHP: function mysqli_open() { require PATH.'include/dbconfig.php'; if (($link=mysqli_connect($host,$user,$pw,$db))&&!mysqli_set_charset($link,'utf8')) { mysqli_close($link); return false; } return $link; } --- Добавлено --- P.S. Обратите внимание на обертку, используемую в шаблоне. В нем не должно быть никаких mysqli-ф-ций.
а если в запросе его не будет? --- Добавлено --- потому что каждый раз, когда посетителям предлагаешь тот или иной код из этой мути, смотрят как в коде переменные с воздуха берутся/прилетают. Просто вырезка безобразная. Что они там должны понять - хз, своих проблем отбавляй.
@MouseZver, ТСу прежде всего нужен пример с отделением шаблона от осн. кода списка. Шаблон списка в статье есть. Осн. код – по первой ссылке в ней, в котором определяется большинство из используемых в шаблоне переменных. Думаю, ТС в состоянии понять, что если ему не нужна вилка «список/отдельная статья», то ее использовать не нужно. Про реально непонятные переменные для «пришедших со стороны» меня спросили в первом комменте к статье, но они ТСу нафиг не нужны. --- Добавлено --- P.S. Если ТС не догадается, для чего нужны ф-ции вроде extra('head-section','<style type="text/css">...</style>') или error(404), то сам виноват. Впрочем первая в реале обычно тоже никому не нужна, а для второй всегда найдется достойная замена из своего каркаса.
@Kizer, что у вас там с substr vs mb_strimwidth? Первая, видимо, орфан, да и к тому же калека. Если избавляетесь от тэгов путем HTML-кодирования, резать строку вслепую все равно нельзя, т.к. могут остаться обрезки от кода HTML-сущности. Используйте обычную очистку от тэгов. Или сначала обрежьте, а потом закодируйте. P.S. И результаты запросов нужно проверять
@Kizer кто так учил проверять входные переменные ? ответь. отобрази все ошибки PHP: <?php error_reporting ( E_ALL ); еще раз
Среднее время прочтения одной страницы на количество страниц в книге)) Здесь же не рассказ, что бы его читать. Нужно применять на практике каждую тему.
с учётом того, что надо для начала научиться читать, скорее всего много --- Добавлено --- для начала прочитай как рассказ, а потом уже будешь знать где искать, когда начнёшь применять подозреваю рассказы тебе тоже некогда читать?
Я про это PHP: $query = mysqli_query($mysqli, "SELECT * FROM news WHERE status $cat ORDER BY id DESC "); --- Добавлено --- В случае ошибки можно генерировать 503-ью (см. осн. код списка).