- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всем привет!
Помогите решить проблему :rolleyes:
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 168 in /home/vipseo/public_html/classes/GenerateHTML.class.php on line 601
Похоже что результат возвращаемый из базы - пуст. Т.е. не нашлось ни одной записи с данными в запросе условиями.
А вообще было бы неплохо посмотреть код класса GenerateHTML.class.php. Хотя бы строк 10 - 15 около 601ой строки.
Вот код (не полный)
Вы скопировали первые 240 строк? Ошибка то на 610. Скопировали бы тогда уж весь или хотя бы функцию, в которой этот запрос к базе идет.
а до этого всё работало?
Ничего не меняли в скрипте?
Может у прова спросить, что с базой сейчас?
Может не в тему, но разве document.getElementById() или innerHTML умеют кидать исключения?
Вот кусок кода с 610 строчкой, там она выделена.
В скрипте - не менял ничего.
while ($pos = strpos($str, "{template")){
$templ_str = substr($str,$pos+1);
$last = strpos($templ_str,'}');
$str_to_parse = substr($templ_str,0,$last);
parse_str($str_to_parse);
$templ_body = null;
if (!$fp = fopen($this->config['home_dir'].'templates/'.$template,'r')){exit;}
while ($line = fgets($fp,1024)){$templ_body .= $line;}
fclose($fp);
$strings[$key] = str_replace("{template=$template}", $templ_body, $str);
$str = $strings[$key];
}
while ($pos = strpos($str, "{message")){
$mes_str = substr($str,$pos+1);
$last = strpos($mes_str,'}');
$str_to_parse = substr($mes_str,0,$last);
parse_str($str_to_parse);
$messages = array();
$mes = mysql_fetch_object($db->query("SELECT * FROM messages WHERE tag = '$message'"));
$strings[$key] = str_replace("{message=$message}", $mes->text, $str);
$str = $strings[$key];
}
while ($pos = strpos($str, "{advert_block")){
$mes_str = substr($str,$pos+1);
$last = strpos($mes_str,'}');
$str_to_parse = substr($mes_str,0,$last);
parse_str($str_to_parse);
$delimiter = mysql_result($db->query("SELECT delimiter FROM advert_delimiters WHERE blocknum = '$advert_block'"),0);
$advert_body = "<div class='advert_block'>";
$ad_res = $db->query("SELECT * FROM advert WHERE blocknum = '$advert_block' ORDER BY priority");
while ($ad_row = mysql_fetch_object($ad_res)){
$advert_body .= $ad_row->text.$delimiter;
}
$advert_body .= "</div>";
$strings[$key] = str_replace("{advert_block=$advert_block}", $advert_body, $str);
$str = $strings[$key];
610--------------------------------------------------------610
}
while ($pos = strpos($str, "{category_id")){
610--------------------------------------------------------610
$sub_str = substr($str,$pos+1);
$last = strpos($sub_str,'}');
$str_to_parse = substr($sub_str,0,$last);
parse_str($str_to_parse);
$cat_id = $category_id;
if (isset($tmpl)){
$strings[$key] = str_replace("{category_id=$cat_id&tmpl=$tmpl}", $this->getCategory($cat_id,$tmpl), $str);
$str = $strings[$key];
} else {
$strings[$key] = str_replace("{category_id=$cat_id}", $this->getCategory($cat_id), $str);
$str = $strings[$key];
}
1. Надо было 601ую строку а не 610ую :) но она есть в приведенном участке кода :) :) :)
2. Если код класса к которому относится объект $db написан правильно и функция query() действительно возвращает идентификатор результата обращения к базе, то ошибка связана именно с тем, что результат пустой.
3. А вообще код написан коряво... некошерно возвращать функцией $db->query() идентификатор результата а потом в коде выполнять какие-то операции с этим результатом. Потому что, чтоб выполнить, например, проверку надо теперь писать так:
$db_result = $db->query(....);
if (mysql_num_rows($db_result)>0){
....
То есть вводить лишнюю переменную в коде.
Правильнее было бы если уже сделали что-то проде драйвера БД, то зашивать в него и все функции БД, такие как mysql_result, mysql_fetch_row, mysql_fetch_assoc с надлежащими проверками....
Не.... много лишнего, что делать скажите?
Если быстро и просто замените
на
Если ничего не меняли, и до этого работало, лучше обратить к хостинг провайдеру, ато еще чего поменяете, потом и тут вам помочь не смогут..