Проблем с заявка към базата данни

Lenor

Registered
Изписа ми следната грешка?

Код:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

Код:
<?php

class MYSQL_DB
{
private $host = "localhost";
private $user = "****";	
private $password = "*****";
public $database_name = "*****";
public $query ;
public $query_result ;
public $number_of_results_found ;
public $what_to_output ;
public $number_of_affected_rows ;
private $connection ; 
public $row ;
public $redove ;

public function connect()
{
@	$this->connection = mysql_connect($this->host ,$this->user , $this->password);
	if(!$this->connection)
	{
		echo "Проблем с конекцията към базата с данни !".mysql_error();
		return false ;
		exit ;
	}
	else
	{
		return true ;
	}
}
	
public function select_db()
{
@	$try = mysql_select_db($this->database_name);
	if(!$try)
	{
		echo "Проблем с избора на базаta данни  с име : $this->database_name!";
		return false ;
		exit ;
	}
	else
	{
		return true ;
	}
}


public function set_names_utf_8()
{
@	$try = mysql_query("SET NAMES 'utf8'");
	if(!$try)
	{
		echo "Проблем със set name utf-8";
		return false ;
	}
	else
	{
		return true ;
	}
}


 public function run_query()
{
	if($this->query =="")
	{
		echo 'Не може да стартирате празна заявка . Дайте стойност на $this->zaqvka ';
	}
	else
	{
		$this->query_result = mysql_query($this->query);
		if(!$this->query_result)
		{
			echo "Проблем със заявката ";
			return false ;
			exit ; 
		}
		else
		{
		
		
		}
	}
}	


public function number_of_results_found_fn()
{
	// raboti sus SELECT klauzata
	$rows = mysql_num_rows($this->query_result) ;
	$this->number_of_results_found = $rows;
}

public function affected_rows()
{
	// Get the number of affected rows by the last INSERT, UPDATE, REPLACE or DELETE query
	$this->number_of_affected_rows =   mysql_affected_rows() ;
}
public function set_row()
{
	$this->connect();
	$this->select_db();
	$this->query = "SHOW COLUMNS FROM items";
	$this->run_query();
	$this->number_of_results_found_fn();
	$number_of_columns =  $this->number_of_results_found ;
	//echo $number_of_columns;
	$count = 0 ;
	$this->query = "select * from items";
	$this->run_query();
	$this->number_of_results_found_fn();
	$this->redove = $this->number_of_results_found;
	//echo "namereni_rezultati : ".$redove;
	//echo "<br/>";
	while($row_2 = mysql_fetch_array($this->query_result, MYSQL_NUM))
	{
		for($i = 0 ; $i < $number_of_columns ; $i++)
		{			
			$this->row[$count][$i] = $row_2[$i] ;			
		}
	$count++; 	
	}
	
	
}
public function display_the_found_results()
{
	for($b = 0  ; $b < $this->redove ; $b++ )
	{
		
	}
}

public function free_memory()
{
	mysql_free_result($this->query_result);
}

public function close_connection()
{
	mysql_close($this->connection);

	
} 



public function show_search_results()
{
	while($row = mysql_fetch_array($this->query_result))
	{
	echo "<div id=\"results\"  >";
		echo "<div id=\"header\" >";
			echo "<div id=\"item_name\">".$row["ime_na_artikula"]."</div>";
			echo "<div id=\"pokupka_id\"> Номер на покупката : ".$row["Pokupka_ID"]."</div >";
			echo "<div class=\"clear\"></div>";
		echo"</div>" ;
		echo"<div id=\"pic_plus_info_about_product\">";
			echo"<div  id=\"pic\"> " ;
				// proverka dali v bazata danni ima referenciq kum nqkolko izobrajenie za daden item , ili ima samo edno izobrajenie
				$broi_snimki = substr_count($row["Small_pics" ], '|');
				if($broi_snimki == 0 )
				{
					echo "<a href=\"../".$row["Big_pics"]."\" rel=\"lightbox\" >";
						echo"<img src=\"../".$row["Small_pics"]."\"  />";
					echo"</a><br /> " ;
				}
				else
				{
					$masiv_snimki_thumb = explode('|' ,$row["Small_pics"] ) ;
					$masiv_snimki_800x600 = explode('|' ,$row["Big_pics"] ) ;
					$start = 0 ;
					$total_elements = count($masiv_snimki_thumb) ;
					for($start = 0 ; $start < $total_elements ; $start++)
					{
						// predi za da raboteshe shemata pisheh a href="http://localhost/"
						echo "<a href=\"../".$masiv_snimki_800x600[$start]."\" rel=\"lightbox[".$row["Item_ID"]."]\" >";
							echo"<img src=\"../".$masiv_snimki_thumb[$start]."\"  />";
						echo"</a><br /> " ;
					}
		
				}
 
				echo "</div>" ;

				echo "<div id=\"item_info\" ><a href=\"/more_info_about_product.php?item_id=".$row["Item_ID"]."\" target=\"_blank\">Повече информация за артикула </a><br/>";
				echo "<a href=\"/edit_item.php?item_id=".$row["Item_ID"]."\" target=\"_blank\">Редактирай продукта</a>";
				echo "</div>" ;
				echo "<div class=\"clear\"></div>";


				
		echo"</div>";
		echo "<div id=\"purchase_info\" >";
			echo "<div id=\"sklad_and_grad\">";
			echo"<div id=\"sklad_ime\">Склад : ".$row["ime_na_sklada"]."</div>";
			echo"<div id=\"grad\">Град : ".$row["City"]."</div>";
			echo "<div class=\"clear\"></div>";
			echo "</div>";
				echo "<div id=\"price\"  >";			
					echo "<table width=\"600\" cellspacing=\"0\">";	
						echo "<thead>";
							echo"<tr>";
								echo "<th>Бройки</th>";
								echo "<th>Покупна Цена</th>";
								echo "<th>Продажна Цена</th>";
								echo "<th>Надценка</th>";
							echo "</tr>";
						echo "</thead>";
						echo "<tbody>";
							echo "<tr>";								
								echo"<td width=\"15%\" class=\"left_bottom_border\">".$row["Broiki"]."</td>";
								echo"<td width=\"30%\" class=\"bottom_border\">".$row["Pokupna_cena"]."</td>";
								echo"<td width=\"30%\" class=\"bottom_border\">".$row["Prodajna_cena"]."</td>";
								echo"<td width=\"25%\" class=\"right_bottom_border\">".$row["Nadcenka"]." % </td>";
							echo"</tr>";
						echo "</tbody>";
					echo"</table>";										
					echo "<div id=\"dati\" >";
							echo "<p>Дата на покупката :".$row["data_na_pokupkata"]."<br />
							Дата на изчерпване на количествата :".$row["Date_End"]."
							</p>" ;
					echo "</div>";
					echo "<p>Допълнителна Информация за покупката  : ".$row["info_za_pokupkata"]." </p>";
				echo "</div>";
		echo "</div>";
	echo "</div>";
	}
}

}
?>

Код:
<?php
require_once("php_classes/DataBase.php");
require_once("php_classes/word_edit.php");
require_once("php_funkcii/php_functions.php");
$db = new MYSQL_DB();
$db->connect();
$db->select_db();
$db->set_names_utf_8();
$kategoriq = $_GET["categoriq"];
// stranicirane


$rezultati_na_stranica = 15 ;
$page = $_GET["page"];

$start = ($page - 1 ) * $rezultati_na_stranica ;
$db->query="SELECT COUNT( * ) AS total FROM advanced where `Kategoriq` LIKE  '$kategoriq' ";
$db->run_query();
$red = mysql_fetch_array($db->query_result) ;
$obsht_broi_zapisi = $red["total"] ;
$broi_stranici = ceil($obsht_broi_zapisi / $rezultati_na_stranica) ;

$query_first_part = "(select * from advanced  WHERE  `Kategoriq` LIKE  '$kategoriq' and `V_nalichnost` like 'yes' )";
$query_second_part ="(select Zapis_ID as zapis, Kategoriq , Marka , Model ,Konski_sili , Godina_na_proizvodstvo, Chasove_rabota , Cena , Skorostna_kutiq , Gumi_predni , Gumi_zadni , Idva_ot , Dopulnitelna_informaciq , V_nalichnost as Available , Big_images, Small_images , Data_na_dobavqne , Posledna_Redakciq from advanced  WHERE  `Kategoriq` LIKE  '$kategoriq' and `V_nalichnost` like 'no' order by zapis DESC limit 500)";
$db->query="$query_first_part union all $query_second_part limit $start , $rezultati_na_stranica";

//$db->query="select * from advanced  WHERE  `Kategoriq` LIKE  '$kategoriq' LIMIT $start , $rezultati_na_stranica ";
$db->run_query() ;
echo '<img src="images/web/tractors_up.jpg" />';
echo '<img src="images/web/line.jpg" />';
while($row = mysql_fetch_array($db->query_result))
{
$info = $row["Dopulnitelna_informaciq"];
$masiv_info = explode(" " , $info) ;
$small = $row["Small_images"];
$id= $row["Zapis_ID"];
$masiv_izobr = explode("|" , $small);
$available_or_not = $row["V_nalichnost"];
$class="";
if($available_or_not=="yes")
{
	$class=' class="yellow" ';
}
else
{
}
// DA napisha funkciq !!!!!
//$cenata = $row["Cena"];
//$duljina = strlen($cenata);
//for($i = 0 ; $i < $duljina ; $i++)
//{
//	
//}
echo "<div id=\"individual_container\"   $class      >";
	echo "<div id=\"picture\"       ><a href=\"more_detail_preview.php?id=$id\"><img src=\"".$masiv_izobr[0]."\"></a></div>  ";
	echo "<div id=\"rest\"          >  ";
		echo "<div id=\"name_price\">";
		$lv_or_not="";
		$cena = $row["Cena"] ;
		if($cena!="Цена по договаряне")
		{
			$lv_or_not = "лв";
			$duljina = strlen($cena);
			$cena_reversed = strrev($cena) ;
			
			$new_cena_reversed=""; ;
			
			for($i= 0 ; $i < $duljina ; $i++)
			{
				if($i==3)
				{
					$new_cena_reversed.=" ";
				}
				$new_cena_reversed .= $cena_reversed[$i];
			}
			$cena = strrev($new_cena_reversed) ;
		}
		
		
		
		
		echo "<p class=\"Imeto\">".$row["Marka"]." ".$row["Model"]."</p>";
		echo "<p class=\"Cenata\">$cena  $lv_or_not</p>";
		echo "<div class=\"clear\"></div>";
		echo "</div>";
		echo  "<div id=\"godina_sili_chasove\"><strong>Година: </strong> ".$row["Godina_na_proizvodstvo"]."   <strong>Конски сили:</strong> ".$row["Konski_sili"]."  <strong>Часове:</strong> ".$row["Chasove_rabota"]." </div>  ";
		echo "<div id=\"butona\"><a href=\"more_detail_preview.php?id=$id\"><img src=\"images/web/information_green.png \"></a></div>";
		echo "<div id=\"poveche_informaciq\">";
				echo "<p>";
				for($i = 0 ; $i < 15 ; $i++)
				{
					echo $masiv_info[$i];
					echo " " ;
				}
				echo "...";
				echo "</p>";
		echo "</div>";
		
	
	echo "<div class=\"clear\"></div>";
	
	//	echo "<a href=\"more_detail_preview.php?id=$id\">Допълнителна информация</a> ";
	echo "</div> ";
	echo "<div class=\"clear\"></div>";
	echo '<img src="images/web/line.jpg" />';
echo "</div>";
}
echo "<div class=\"stranicirane\">";
for($i = 1 ; $i <= $broi_stranici ; $i++)
{
	if($i==$page)
	{
		echo "<a id=\"stranicirane_aktivna_stranica\" href=\"advanced.php?categoriq=$kategoriq&page=$i\">$i</a>";
		echo " ";
	}
	else
	{
		echo "<a  href=\"advanced.php?categoriq=$kategoriq&page=$i\">$i</a>";
		echo " ";
	}
	
	
	
}
echo "</div>";
echo '<img src="images/web/products_down.jpg" />';
?>
 
Lenor каза:
Сложих го на реда където ми дава грешката, но грешката отново си стой
Е добре де каква е грешката? Нали за това ти го казах - за да видиш каква е грешката? (предполагам, че е някъде в някоя заявка?)
И на кой ред е това? Дай реда с грешката +- 5-10 реда да видим...
 
$start = ($page - 1 ) * $rezultati_na_stranica ;
$db->query="SELECT COUNT( * ) AS total FROM advanced where `Kategoriq` LIKE '$kategoriq' ";
$db->run_query();
$red = mysql_fetch_array($db->query_result) ;
$obsht_broi_zapisi = $red["total"] ;
$broi_stranici = ceil($obsht_broi_zapisi / $rezultati_na_stranica) ;

$query_first_part = "(select * from advanced WHERE `Kategoriq` LIKE '$kategoriq' and `V_nalichnost` like 'yes' )";
$query_second_part ="(select Zapis_ID as zapis, Kategoriq , Marka , Model ,Konski_sili , Godina_na_proizvodstvo, Chasove_rabota , Cena , Skorostna_kutiq , Gumi_predni , Gumi_zadni , Idva_ot , Dopulnitelna_informaciq , V_nalichnost as Available , Big_images, Small_images , Data_na_dobavqne , Posledna_Redakciq from advanced WHERE `Kategoriq` LIKE '$kategoriq' and `V_nalichnost` like 'no' order by zapis DESC limit 500)";
$db->query="$query_first_part union all $query_second_part limit $start , $rezultati_na_stranica";

//$db->query="select * from advanced WHERE `Kategoriq` LIKE '$kategoriq' LIMIT $start , $rezultati_na_stranica ";
$db->run_query() ;
echo '<img src="images/web/tractors_up.jpg" />';
echo '<img src="images/web/line.jpg" />';
while($row = mysql_fetch_array($db->query_result)) die(mysql_error());
{
$info = $row["Dopulnitelna_informaciq"];
$masiv_info = explode(" " , $info) ;
$small = $row["Small_images"];
$id= $row["Zapis_ID"];
$masiv_izobr = explode("|" , $small);
$available_or_not = $row["V_nalichnost"];
$class="";
if($available_or_not=="yes")
{
$class=' class="yellow" ';
}
else
{
}
 
От php грешката в първия ти пост предполагам, че имаш грешка в mysql заявката. Затова ти казах да използваш mysql_error() - тази функция връща грешката от последната заявка. Честа практика е да я използваш така:

PHP:
$query = mysqli_query("select ..") or die('MYSQL грешка! ' + mysql_error());

// тук вече while(mysqli_fetch_array()) .. и т.н.
По този начин ще ти се изведе mysql грешката, ако има такава.

Ако има грешка и не се оправиш, дай грешката и заявката, при която се получава.

+ ориентирай се към mysqli и(ли) PDO.
 

Back
Горе