помогите, сайт выдает ошибку Warning: mysql_result() [function.mysql-result]: Unable

freezzeerf
На сайте с 15.08.2007
Offline
59
13886

Всем привет!

Помогите решить проблему :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

→ Разрабатываю дизайн сайтов. → Менеджерам отдаю от 30% до 50% в зависимости от объема проекта → Портфолио (http://www.free-lance.ru/users/freezzeerf) ICQ: 385553008
ArtInt
На сайте с 28.02.2007
Offline
61
#1

Похоже что результат возвращаемый из базы - пуст. Т.е. не нашлось ни одной записи с данными в запросе условиями.

А вообще было бы неплохо посмотреть код класса GenerateHTML.class.php. Хотя бы строк 10 - 15 около 601ой строки.

Fiat lux!
freezzeerf
На сайте с 15.08.2007
Offline
59
#2

Вот код (не полный)

<?php

error_reporting(E_ALL ^ E_NOTICE);
ini_set("display_errors","1");
session_start();

class GenerateHTML{

var $html;
var $config = array();
var $params = array();
var $messages = array();


function GenerateHTML($args = null){
// Load config //
$db = db_sql::instance();

$res = $db->query("SELECT * FROM config");
while ($row = mysql_fetch_object($res)){
$this->config[$row->name] = $row->value;
}////////////////

$messages = array();
$res = $db->query("SELECT * FROM messages");
while ($row = mysql_fetch_object($res)){
$this->messages[$row->tag] = $row->text;
}

$this->params = $args;
$this->params['links_start'] = 0;

}

function loadTemplate($url){
if (!$fp = @fopen($url,'r')){
echo "&#9580;°шсър! &#9573;ръющ ёЄЁрэшЎ&#8730; эх ёє&#8729;хёЄтєхЄ.";
exit;
} else {
$this->html = null;
while ($line = fgets($fp,1024)){
$this->html .= $line;
}
fclose($fp);
}
}

function makeCatalogBody(){
$db = db_sql::instance();
if (!isset($_SESSION['catalog_body'])){
$catalog_body = null;
if ($this->config['sort_method'] == 1) {
$order = 'ORDER BY name';
} else if ($this->config['sort_method'] == 2){
$order = 'ORDER BY priority';
}
$caterogy_res = $db->query("SELECT * FROM category WHERE parent is NULL AND visible = 1 $order");

$catalog_body = "<table class='mainTab' width=".$this->config['tab_width']."><tr>";
$i = 0;
while ($categorys = mysql_fetch_object($caterogy_res)){
$link_count = mysql_result($db->query("SELECT COUNT(*) as count FROM links WHERE category_id = '$categorys->id' AND accepted = '1'"),0);
if ($this->config['show_numoflinks'] == 1){
$child_res = $db->query("SELECT id FROM category WHERE parent = '".$categorys->id."' AND visible = 1");
while ($child_row = mysql_fetch_object($child_res)){
$cnt = mysql_result($db->query("SELECT COUNT(*) as count FROM links WHERE category_id = '$child_row->id' AND accepted = '1'"),0);
$link_count += $cnt;
}
$col_srting = "<font class='linkcount'>($link_count)</font>";
}
if ($i < $this->config['col_limit']){

$catalog_body .= "<td width=".$this->config['td_width']."><a href='category.php?cat=".$categorys->id."' class='category'>".$this->config['category_image']." ".$categorys->name."</a>$col_srting";

// &#9575;юърч&#8730;трхь ёєсърЄрыюуш
if ($this->config['show_subcat'] == 1) {
$child_res = $db->query("SELECT * FROM category WHERE parent = '".$categorys->id."' AND visible = 1 $order LIMIT 0,".$this->config['max_subcats_in_cat']);
$catalog_body .= "<div>";
while ($child_row = mysql_fetch_object($child_res)){
//$link_count = mysql_result($db->query("SELECT COUNT(*) as count FROM links WHERE category_id = $child_row->id"),0);
$catalog_body .= "<a href='category.php?cat=".$child_row->id."' class='subcatsInCat'>".$child_row->name."</a>,";
}
$catalog_body .= "<font class='subcatsInCat'></font></div>";
}//

$catalog_body .= "</td>
";
$i++;
} else {
$catalog_body .= "</tr>
<tr><td width=".$this->config['td_width']."><a href='category.php?cat=".$categorys->id."' class='category'>".$this->config['category_image']." ".$categorys->name."</a>$col_srting";
// &#9575;юърч&#8730;трхь ёєсърЄрыюуш
if ($this->config['show_subcat'] == 1) {
$child_res = $db->query("SELECT * FROM category WHERE parent = '".$categorys->id."' AND visible = 1 $order LIMIT 0,".$this->config['max_subcats_in_cat']);
$catalog_body .= "<div>";
while ($child_row = mysql_fetch_object($child_res)){
//$link_count = mysql_result($db->query("SELECT COUNT(*) as count FROM links WHERE category_id = $child_row->id"),0);
$catalog_body .= "<a href='category.php?cat=".$child_row->id."' class='subcatsInCat'>".$child_row->name."</a>,";
}
$catalog_body .= "<font class='subcatsInCat'></font></div></td>";
}//
$i = 1;
}
}
$catalog_body .= "</tr></table><div align='right'><a href='http://www.m-cat.ru' tagret='_blank' style='font-size: 10px; text-decoration:none; color: black;'>&copy; m-cat b1.0.1</a></div>";
$_SESSION['catalog_body'] = $catalog_body;
} else {$catalog_body = $_SESSION['catalog_body'];}
return $catalog_body;
}

function makeLinks(){
$db = db_sql::instance();
if ($this->config['full_desc'] == 0){
$links = "<table width=".$this->config['tab_link_width']." class='linkTab'>
";
$res = $db->query("SELECT * FROM links WHERE `category_id` = '".$this->params['cat']."' ".$this->params['accepted']." ORDER BY id LIMIT ".$this->params['links_start'].",".$this->config['links_on_page']);
$i = 0;
while ($row = mysql_fetch_object($res)){
if ($this->config['backlink_type'] == 3){
if ($row->checked == 1){$anchor = $row->name;$title= null;}
else {$anchor = $row->url; $title = $row->name."<br>";}
} else {
$anchor = $row->name;$title= null;
}
$links .= "<tr><td>$title<a href=http://".$row->url." target=_blank>".$anchor."</a><br><div>$row->short</div><div class='linkTabUrl'>$row->url</div></td></tr>
";
}
$links .= "</table>";
} else if ($this->config['full_desc'] == 1){
$links = "<table width=".$this->config['tab_link_width']." class='linkTab'>
";
$res = $db->query("SELECT * FROM links WHERE `category_id` = '".$this->params['cat']."' ".$this->params['accepted']." ORDER BY id LIMIT ".$this->params['links_start'].",".$this->config['links_on_page']);
while ($row = mysql_fetch_object($res)){

$links .= "<tr><td><a href=page.php?id=".$row->id." target=_blank>".$row->name."</a><br><div>$row->short</div><div class='linkTabUrl'>$row->url</div></td></tr>
";
}
$links .= "</table>";
}
return $links;
}

function makePaging(){
$db = db_sql::instance();
if ($this->params['page']){
for ($a = 0; $a < $this->params['pages']; $a++){
if (isset($this->params['lnk_template'])) {
if ($this->params['page'] == ($a+1)){
$paging .= "<a href='category.php?cat=".$this->params['cat']."&page=".($a)."&tmpl=".$this->params['lnk_template']."'><b>".($a+1)."</b></a> &nbsp;";
} else {
$paging .= "<a href='category.php?cat=".$this->params['cat']."&page=".($a)."&tmpl=".$this->params['lnk_template']."'>".($a+1)."</a> &nbsp;";
}
} else {
if ($this->params['page'] == ($a+1)){
$paging .= "<a href='category.php?cat=".$this->params['cat']."&page=".($a)."'><b>".($a+1)."</b></a> &nbsp;";
} else {
$paging .= "<a href='category.php?cat=".$this->params['cat']."&page=".($a)."'>".($a+1)."</a> &nbsp;";
}
}
}
}
return $paging;
}

function makeSubcats(){
$db = db_sql::instance();
$subcats = "<div style=\"width:".$this->config['subcat_tab_width']."px;\" class=subcatsField>
";
$res = $db->query("SELECT * FROM category WHERE `parent` = '".$this->params['cat']." ' AND visible = 1 ORDER BY name");
while ($row = mysql_fetch_object($res)){
$subcats .= "<a href='category.php?cat=".$row->id."' class='subcatLink'>".$row->name."</a>
";
}
$subcats .= "</div>";
return $subcats;
}

function makeAddForm(){
$db = db_sql::instance();
$add_form = "
<script>
function countLength(elem,max,min){
var length = max - elem.value.length;
var length_per = (length-1)/max * 100;
length--;
if (length < 0 ) {length =0;}
if (length < (max-min)) {image = 'img/dot.gif';
} else {
image = 'img/dot_red.gif';
}
document.getElementById(elem.name+'_status').innerHTML = '('+length+')<img src=\"'+image+'\" height=2 width='+length_per+'>';
}
";
if ($this->config['backlink_type'] == 3){
$add_form .= "
function change_ex(){
try{
document.getElementById('res_ex').innerHTML =
'<b>&#9516; ёыєўрх хёыш т&#8730; єёЄрэютшЄх с¤ъышэъ:</b><br><a href=\'http://'+document.getElementById('el_url').value+'\' target=_blank>'+document.getElementById('el_name').value+'</a><br>'+document.getElementById('el_short').value+'<hr><b>&#9532;ёыш с¤ъышэър эх сєфхЄ:</b><br>'+document.getElementById('el_name').value+'<br><a href=\'http://'+document.getElementById('el_url').value+'\' target=_blank>'+document.getElementById('el_url').value+'</a><br>'+document.getElementById('el_short').value;
}
catch(ex){

}
}";
} else {
$add_form .= "
function change_ex(){
try{
document.getElementById('res_ex').innerHTML =
'<a href=\'http://'+document.getElementById('el_url').value+'\' target=_blank>'+document.getElementById('el_name').value+'</a><br>'+document.getElementById('el_short').value;
}
catch(ex){

}
}";
}
$add_form .= "
</script>

<div class='form'>";
if (isset($this->params['errors'])) {
$add_form .= "<div class='errorMes'>".$this->params['errors']."</div>
<center>[<a href='#' onclick='window.history.back()'>&#9552;рчрф</a>]</center>";
} else if (isset($this->params['mes'])) {
$add_form .= "<div class='afterAddMes'>".$this->params['mes']."</div>";
} else {
$add_form .="<form action='add_link.php' method='POST'>
&#9577;рЄхуюЁш*:<br>
<select name='category'>";
$res = $db->query("SELECT * FROM category WHERE parent is NULL AND visible = 1");
while ($row = mysql_fetch_object($res)){
$add_form .= "<option value='".$row->id."'";
if ($row->id == $this->params['cat']) {$add_form .= " selected ";}
$add_form .=">".$row->name."</option>";
$res_sub = $db->query("SELECT * FROM category WHERE parent = $row->id AND visible = 1");
while ($row_sub = mysql_fetch_object($res_sub)){
$add_form .= "<option value='".$row_su
Vitо
На сайте с 17.07.2007
Offline
25
#3

Вы скопировали первые 240 строк? Ошибка то на 610. Скопировали бы тогда уж весь или хотя бы функцию, в которой этот запрос к базе идет.

Онлайн школа покера (http://www.pokermoscow.ru/school/)
WwWork
На сайте с 07.02.2006
Offline
150
#4

а до этого всё работало?

Ничего не меняли в скрипте?

Может у прова спросить, что с базой сейчас?

-
На сайте с 07.12.2005
Offline
97
-K-
#5

Может не в тему, но разве document.getElementById() или innerHTML умеют кидать исключения?

freezzeerf
На сайте с 15.08.2007
Offline
59
#6

Вот кусок кода с 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];
}
Solmyr
На сайте с 10.09.2007
Offline
501
#7

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 с надлежащими проверками....

freezzeerf
На сайте с 15.08.2007
Offline
59
#8

Не.... много лишнего, что делать скажите?

-
На сайте с 07.12.2005
Offline
97
-K-
#9

Если быстро и просто замените


$delimiter = mysql_result($db->query("SELECT delimiter FROM advert_delimiters WHERE blocknum = '$advert_block'"),0);

на


$res = $db->query("SELECT delimiter FROM advert_delimiters WHERE blocknum = '$advert_block'");
$delimiter = mysql_num_rows($res) ? mysql_result($res, 0) : '';
WwWork
На сайте с 07.02.2006
Offline
150
#10

Если ничего не меняли, и до этого работало, лучше обратить к хостинг провайдеру, ато еще чего поменяете, потом и тут вам помочь не смогут..

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий