Форум

Data.BG Форуми: Проблем с заявка към базата данни - Data.BG Форуми

Прехвърляне към съдържание

Страница 1 от 1
  • Вие не можете да започнете нова тема
  • Вие не може да отговаряте на тази тема

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

#1
Потребителят е неактивен   muzikalenn 

  • Група: Потребители
  • Мнения: 364
  • Регистриран: 30-April 08
  • Репутация: 0
  • Пол:Мъж
  • Град:Ямбол
Изписа ми следната грешка?

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"].
" &nbsp; <strong>Конски сили:</strong> ".$row["Konski_sili"]."&
nbsp; <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" />';
?>

0

#2
Потребителят е неактивен   muzikalenn 

  • Група: Потребители
  • Мнения: 364
  • Регистриран: 30-April 08
  • Репутация: 0
  • Пол:Мъж
  • Град:Ямбол

Преглед на мнениеnosoft, на 30.10.14 - 14:41, каза:

Трябва да си го проследиш. Казва ти примерно, че $db->query_result не ти е ресурс. То ест върнат резултат от заявка. Или си го затрил или не спазваш последователност или има грешка в заявката и не връща ресурса. Проследявай си го с: print_r($db->query_result);die(); . А и най-добре се научи да ползваш MySQLi вместо MySQL библиотеки на PHP, че ще отпаднат от някоя версия. Да не говорим, че си описал огромен код само за класа за базата. Като основа може да е една педия код. Да не говорим за метода show_search_results, който хич не е за този клас. А и да държиш в класа заявката и резултатите е странно. По-добре да са външни и несвързани с обекта за базата. Нямаш нужда от методи за особождаване на паметта и за затваряне - прави си го при край на PHP-то. Дори е хубаво обекта за базата да ти е Singleton - то ест единичен.
class YourDBClass{
//...
	private static $instance=false;
	public static function getInstance(){
		if(!is_object(self::$instance)){
			self::$instance=new self();
		}
		return self::$instance;
	}
//...
}
//И да го викаш с примерни методи
$res1=YourDBClass::getInstance()->query($query1);

$db=YourDBClass::getInstance();
$res2=$db->get_results($query2);

Тва е един и същи обект викайки getInstance. Даже правят __construct protected, ако не искат да е възможно да се създава друг обект. Обекта се държи в статичната променлива $instance вътре в самият клас. Създава се при първо викане и нататък се връща. Да не говорим за по-сложни варианти с автоматично зареждане (autoloader) с namespace и при викане например на:
$res=\framework\path\db::getInstance()-> query($query);
Направо и да ти зарежда скрипта. Но това е особено писане.


Благодаря ти за нововъденията, наистина трябва да седна и да ги науча, но с този проблем неможах да се справя. Отново ми дава същата грешка
0

Споделете тази тема чрез:


Страница 1 от 1
  • Вие не можете да започнете нова тема
  • Вие не може да отговаряте на тази тема

1 потребители четат тази тема
0 регистрирани потребители, 1 гости и 0 анонимни потребители


Data.BG e форум за дискусии. Data.BG не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Data.BG.

Close  Member Login