Проблема с файлами index.php

Wladim

Новичок
Здравствуйте.
Замаялся искать решение проблемы:
- есть два файла index.php в разных проектах
- при загрузке одного из них в названии вкладки 'title' отображаются данные из БД, а в другом случае - отображается адрес из адресной строки
Вот часть кода (начало) первого файла index.php
<?php
session_start();
include './blocks/db.php';
$result = mysql_query("SELECT `title`, `meta_d`, `meta_k`, `text` FROM `settings` WHERE `page` = 'index'", $db);
$myrow = mysql_fetch_assoc($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo htmlspecialchars($myrow['meta_d']); ?>">
<meta name="keywords" content="<?php echo htmlspecialchars($myrow['meta_k']); ?>">
<title><?php echo htmlspecialchars($myrow['title']); ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
А это - второго файла index.php
<?php
session_start();
include './blocks/db.php';
$result = mysql_query("SELECT `title`, `meta_d`, `meta_k`, `text` FROM `settings` WHERE `page` = 'index'",$db);
$myrow = mysql_fetch_assoc($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo htmlspecialchars($myrow['meta_d']); ?>">
<meta name="keywords" content="<?php echo htmlspecialchars($myrow['meta_k']); ?>">
<title><?php echo htmlspecialchars($myrow['title']); ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
Помогите разобраться.
 

Andkorol

Новичок
var_dump($myrow); всё покажет.
Во втором случае данные из БД не поступают, очевидно.
 

vasinsky

Новичок
1. если и используешь mysql - то 2й аргумент у mysql_query() - не обязателен
2. всё же лучше перейти на mysqli или PDO (дело вкуса) - так как mysql более не поддерживается разработчиками
3. поймать ошибку в sql запросе (на время отладки) можно так mysql_query($sql) or die (mysql_error());
4. чтобы удостовериться, что после запроса, бд вернула строки - можно так
PHP:
if(mysql_num_rows($query)>0){
  //работаем с данными
}
else
    echo 'Строк не найдено';
и как правильно показали - можно мониторить ответ с var_dump(), хотя есть более симпотный вариант
PHP:
echo '<pre>' . print_r($myrow, 1) . '</pre>';
 

vasinsky

Новичок
что разве не читабельный?
в строку всё смотреть или в отформатированный столбец. если у человека не подключен xdebug
 

vasinsky

Новичок
да откуда же вы такие берётесь)) что плохого в 3м совете?

почему не аргументируешь?
 

AmdY

Пью пиво
Команда форума
Потому как ошибки возникают не только во время отладки и их нужно логировать всегда. Вот пример как стоит делать
https://github.com/colshrapnel/safemysql/blob/master/safemysql.class.php#L594
Wladim, пользуйтесь обёрткой вроде той, которая по ссылке, будет меньше проблем.

Мне кажется, что "тот самый Попов" уже здесь
 

vasinsky

Новичок
пля... ну умер - оживляй - я для чего написал в скобках - что это на время отладки?? для бабушки в кедах или беременной ежихе? специально же акцент сделал.
во время отладки - поймал ошибку - и анализируй - зачем остальной хлам - уже который работать не будет - дальше в поток отправлять.
в продакшене - логируй. и хоть что делй - что душе угодно.
 

vasinsky

Новичок
ты меня к попову не приписывай - я всегда плювал на него и плювать буду.

ребят - вы выходите маленько за пределы форума - читайте, вы ей богу - как секта - один гавкнет - остальные подхватят. не нужно читать через строчку мои посты и между строк там ничего нету - если я тока не акцентирую на это внимание.

ознакомитесь с понятиями - отладка и продакшн - дальше проще будет
 

hell0w0rd

Продвинутый новичок
vasinsky, иногда нужно не просто логировать ошибки, но и реагировать на ошибки , выполняя что-то другое.
Это я все к тому, что стоит разу использовать исключения
 

vasinsky

Новичок
да вы друг другу противоречите)) один тыкает носом в кукуюто левую обёртку с логированием, второ говорит - логируй , но не всегда, вы определитесь.
я сам для себя решаю - когда, где и какие логи мне нужны.

исключения это исключения мы пока тут ни слова об ооп синтаксисе не сказали.

иногда нужно не просто логировать ошибки, но и реагировать на ошибки
это гиниально!!!)))) я татуху такую себе сделаю.
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
vasinsky, ты хотя бы понять пытаешься? Код читать умеешь? Там как раз два варианта с trigger_error и exception, никаких противоречий.
В обоих случаях вариант ошибки должен обрабатываться, чтобы нерабочий код не обрабатывался.
остальной хлам - уже который работать не будет - дальше в поток отправлять.
Там будет if или try .. catch особой разницы не играет, но приложение не должно умирать из-за такой мелкой ошибки.
 

AmdY

Пью пиво
Команда форума
ты меня к попову не приписывай - я всегда плювал на него и плювать буду.

ребят - вы выходите маленько за пределы форума - читайте, вы ей богу - как секта - один гавкнет - остальные подхватят.
Вот, вот. Выйди за пределы своего поповского мирка в мир профессионального программирования, где не используют error_reporting(0), $_SERVER['DOCIMENT_ROOT'] и or die()
Мы живём в разных городах и разных странах, работаем в разных компаниях с разными людьми, так что да, у нас секта - профессионалов. И любительские советы, которые порождают говнокодеров, сильно раздражают.
 

vasinsky

Новичок
ты привык пучками сразу ошибки устранять?

мне куда удобней - делать это последовательно - по ходу кода - сверху - вниз.

но приложение не должно умирать из-за такой мелкой ошибки.
с чёго ты взял - что ты должен мне диктовать правила отладки

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

глядим в мануал http://www.php.net/manual/ru/mysqli.construct.php и разводим руками - как так... разработчики скрипт остановили... не правильно делают разработчики, не правильно

какой смысл дальше работать с кодом - если нет коннекта, если запрос засыпался? что там искать? ошибки? так - дам дальше всё остальное и будет - одна огромная ошибка - или условиями ветвления - обход всего этого нерабочего алгоритма.
 

vasinsky

Новичок
я тебе ещё раз говорю, я по попову не учился в жизни.
ты называешь меня говнокодером, любителем))))??? ахаха..

вы тут 5 человек, которые используют свои примеры, который ещё наверно когда то давно кто-то один и принёс. вцепились в них - и нечего другого не признаёте. ещё раз говорю - выходите за пределы своего форума, киснете ведь.
 

vasinsky

Новичок
код в мануале тоже говнокодом назовёшь? и ты себя ещё профи называешь? я тебя умоляю, не смеши мои коленки.

а мне говорили вы тут не любите флудить и холиварить))) ой как ошибались)))

чё пипирками мерятся будем в топике человека с проблемой??

или у тебя больше аргументов нет - и остаётся на оскорбления опускаться?
 

AmdY

Пью пиво
Команда форума
код в мануале тоже говнокодом назовёшь? и ты себя ещё профи называешь? я тебя умоляю, не смеши мои коленки.
конечно. там примеры демонстрирующие работу определённой функции, а не как надо программировать в реальных проектах. иногда даже предупреждение об этом есть в самом мане.
а в комментах и вовсе тьма бывает.

die, конечно ужасная практика, нормальный программист использует инструменты, чтобы видеть трейс к ошибке и значение важных переменных. опять же, посмотри на популярные фреймворки или можешь сам взять http://filp.github.io/whoops/. К тому же есть такой замечательный инструмент как xdebug и значения можно смотреть прямо в watch-ах.

О говнокодинге, вроде уже пару раз показывали где. Вот ещё из этой темы.
Код:
if(mysql_num_rows($query)>0){
$query - очень хорошая переменная, которая в конец запутает своим названием кого угодно, посмотри хотя бы в мане
Код:
int mysql_num_rows ( resource $result )
Дальше идёт непонимание разницы между var_dump и print_r. Не понятно зачем здесь второй параметр, раз уж вывод сразу делаешь
Код:
echo '<pre>' . print_r($myrow, 1) . '</pre>';
Что мешало обрамить в pre тот же var_dump, не понимаю.

Ну и главное, зачем ты ОПЯТЬ лезешь с ответом, который уже дублирует первый ответ от Andkorol? Такое чувство, что хочешь набить комментов, чтобы дать объяву в разделе работа. Заметь, правильный ответ в теме о simplexml я не трогал и даже лайкнул, так что не надо мне инкрементировать предвзятость.
 

vasinsky

Новичок
)) объяву в разделе работа))
не, просто я такой общительный на сам деле.

ну тогда я считаю не честно - говорить о говнокоде и при этом на форуме держать ссылки такого содержания http://phpclub.ru/detail/article/page_password1

вопросов больше не имею.
 
Сверху