Jump to content

Recommended Posts

Posted

Boas,

Eu tou aqui com um problemazito e não o consigou resolver, e queria ver se vcs me conseguia ajudar e que ja tou a dar em tonot  😁!

É o seguinte eu tenh uma class, em que nessa class tem umas instancia e dentro dessa instancia eu quero xamar outra class a que fas a conecção a base de dados e como tenh um loop a instancia ele dix me isto "Cannot redeclare class sql_db", eu percebo pk mas eu queria era uma ajuda para contornar a situação se poderem ajudar agradecia a vossa ajuda.

Obrigada

RayBacK

Posted

Na boa.

Este e o fixeiro mysql.php

Eu ja tou habituado a ele, pois usava-o no phpnuke.

<?php
class sql_db
[code=php]{

var $db_connect_id;
var $query_result;
var $row = array();
var $rowset = array();
var $num_queries = 0;

//
// Constructor
//
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
{

	$this->persistency = $persistency;
	$this->user = $sqluser;
	$this->password = $sqlpassword;
	$this->server = $sqlserver;
	$this->dbname = $database;

	if($this->persistency)
	{
		$this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
	}
	else
	{
		$this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
	}
	if($this->db_connect_id)
	{
		if($database != "")
		{
			$this->dbname = $database;
			$dbselect = @mysql_select_db($this->dbname);
			if(!$dbselect)
			{
				@mysql_close($this->db_connect_id);
				$this->db_connect_id = $dbselect;
			}
		}
		return $this->db_connect_id;
	}
	else
	{
		return false;
	}
}

//
// Other base methods
//
function sql_close()
{
	if($this->db_connect_id)
	{
		if($this->query_result)
		{
			@mysql_free_result($this->query_result);
		}
		$result = @mysql_close($this->db_connect_id);
		return $result;
	}
	else
	{
		return false;
	}
}

//
// Base query method
//
function sql_query($query = "", $transaction = FALSE)
{
	// Remove any pre-existing queries
	unset($this->query_result);
	if($query != "")
                {

		$this->query_result = @mysql_query($query, $this->db_connect_id);

	}
	if($this->query_result)
	{
		unset($this->row[$this->query_result]);
		unset($this->rowset[$this->query_result]);
		return $this->query_result;
	}
	else
	{
		return ( $transaction == END_TRANSACTION ) ? true : false;
	}
}

//
// Other query methods
//
function sql_numrows($query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_num_rows($query_id);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_affectedrows()
{
	if($this->db_connect_id)
	{
		$result = @mysql_affected_rows($this->db_connect_id);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_numfields($query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_num_fields($query_id);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_fieldname($offset, $query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_field_name($query_id, $offset);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_fieldtype($offset, $query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_field_type($query_id, $offset);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_fetchrow($query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
            //@RJR-Pwmg@Rncvkpwo@-@Eqratkijv@(e)@VgejIHZ.eqo
		$this->row[$query_id] = @mysql_fetch_array($query_id);
		return $this->row[$query_id];
	}
	else
	{
		return false;
	}
}
function sql_fetchrowset($query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		unset($this->rowset[$query_id]);
		unset($this->row[$query_id]);
		while($this->rowset[$query_id] = @mysql_fetch_array($query_id))
		{
			$result[] = $this->rowset[$query_id];
		}
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_fetchfield($field, $rownum = -1, $query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		if($rownum > -1)
		{
			$result = @mysql_result($query_id, $rownum, $field);
		}
		else
		{
			if(empty($this->row[$query_id]) && empty($this->rowset[$query_id]))
			{
				if($this->sql_fetchrow())
				{
					$result = $this->row[$query_id][$field];
				}
			}
			else
			{
				if($this->rowset[$query_id])
				{
					$result = $this->rowset[$query_id][$field];
				}
				else if($this->row[$query_id])
				{
					$result = $this->row[$query_id][$field];
				}
			}
		}
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_rowseek($rownum, $query_id = 0){
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_data_seek($query_id, $rownum);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_nextid(){
	if($this->db_connect_id)
	{
		$result = @mysql_insert_id($this->db_connect_id);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_freeresult($query_id = 0){
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}

	if ( $query_id )
	{
		unset($this->row[$query_id]);
		unset($this->rowset[$query_id]);

		@mysql_free_result($query_id);

		return true;
	}
	else
	{
		return false;
	}
}
function sql_error($query_id = 0)
{
	$result["message"] = @mysql_error($this->db_connect_id);
	$result["code"] = @mysql_errno($this->db_connect_id);

	return $result;
}

} // class sql_db

?>

Este e o fixeiro db.php


<?php
include("mysql.php");
$db = new sql_db('localhost', 'username', 'password', 'db', false);
if(!$db->db_connect_id) {
    die("mysqlerror.html");
}

Agora aqui e que há problemas neste fixeiro

classes.php


<?php

class account 
{	

var $id;
var $health;


function consuming($type, $amount) {
                include("db.php"); --> AQUI
	$this->id = $_SESSION['USERID'];
	$this->health = $_SESSION['HEALTH'];
	$result = $db->sql_query("SELECT drugs.strength AS strength, drugbag.drugid AS drugid, drugbag.amount AS amount, drugbag.tconsumed AS consumed FROM drugbag, drugs WHERE drugbag.userid = '$this->id' AND drugbag.drugid = $type AND drugs.id = $type");
	$row = $db->sql_fetchrow($result);											
	$inpact = $row['strength'] * $amount;
	$newhealth = $this->health - $inpact;
	$_SESSION['HEALTH'] = $newhealth;
	$healthpercent = ($newhealth  / 1000);
	$db->sql_query("UPDATE stats SET lasthealth = '$this->health', health = '$newhealth' WHERE id = '$this->id'");
	$newamount = $row['amount'] - $amount;
	$totalconsumed = $row['consumed']+$amount;
	$db->sql_query("UPDATE drugbag SET amount = '$newamount', tconsumed = '$totalconsumed' WHERE userid = '$this->id' AND drugid = '$type'");
	return $healthpercent;		
}

}

[/code]

Posted

o problema está no "return" da "class account"..

Não podes colocar "return $healthpercent;" porque o "return" vai fazer com que o script pare ou retorne para um include ou require... isso quer dizer que ele está a chamar o include("db.php"); duas vezes e por isso mostra aquele erro... tenta colocar:  print("$healthpercent");  em vez de   

return $healthpercent;

Posted

Eu ja tentei e não deu, o problema axo eu é como eu tou a faser um foreach e tou a puxar a instancia consuming, logo ele vai tar a tentar declarar a class, sempre que eu puxar pela instancia, logo n vai dar!


foreach($_POST as $key=>$value) {
if (is_numeric($key) AND $value > "0") {
$account->consuming($key, $value);
echo "$key => $value<br>";
}
}

Tipo se desse para faser logo include sem ser dentro da instancia, ou entao apagar a class n sei se da, e tb n tou a ver outra maneira.

PS: ja tentei kom uma funcao para ver se a class tivesse defenida tipo if (!class_exists('sql_db')), mas dpx dame outro erro tipo isto Fatal error: Call to a member function sql_query() on a non-object. n sei o k faser se souberes, ou tiveres alguma ideia era dix ai sff!

Obrigada

RayBacK

Posted

Não sei... Tenta fazer o seguinte em vez de criares um ficheiro mysql.php e um db.php coloca tudo no ficheiro mysql.php assim:

<?php

class sql_db
{

var $db_connect_id;
var $query_result;
var $row = array();
var $rowset = array();
var $num_queries = 0;

//
// Constructor
//
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
{

	$this->persistency = $persistency;
	$this->user = $sqluser;
	$this->password = $sqlpassword;
	$this->server = $sqlserver;
	$this->dbname = $database;

	if($this->persistency)
	{
		$this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
	}
	else
	{
		$this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
	}
	if($this->db_connect_id)
	{
		if($database != "")
		{
			$this->dbname = $database;
			$dbselect = @mysql_select_db($this->dbname);
			if(!$dbselect)
			{
				@mysql_close($this->db_connect_id);
				$this->db_connect_id = $dbselect;
			}
		}
		return $this->db_connect_id;
	}
	else
	{
		return false;
	}
}

//
// Other base methods
//
function sql_close()
{
	if($this->db_connect_id)
	{
		if($this->query_result)
		{
			@mysql_free_result($this->query_result);
		}
		$result = @mysql_close($this->db_connect_id);
		return $result;
	}
	else
	{
		return false;
	}
}

//
// Base query method
//
function sql_query($query = "", $transaction = FALSE)
{
	// Remove any pre-existing queries
	unset($this->query_result);
	if($query != "")
                {

		$this->query_result = @mysql_query($query, $this->db_connect_id);

	}
	if($this->query_result)
	{
		unset($this->row[$this->query_result]);
		unset($this->rowset[$this->query_result]);
		return $this->query_result;
	}
	else
	{
		return ( $transaction == END_TRANSACTION ) ? true : false;
	}
}

//
// Other query methods
//
function sql_numrows($query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_num_rows($query_id);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_affectedrows()
{
	if($this->db_connect_id)
	{
		$result = @mysql_affected_rows($this->db_connect_id);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_numfields($query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_num_fields($query_id);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_fieldname($offset, $query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_field_name($query_id, $offset);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_fieldtype($offset, $query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_field_type($query_id, $offset);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_fetchrow($query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
            //@RJR-Pwmg@Rncvkpwo@-@Eqratkijv@(e)@VgejIHZ.eqo
		$this->row[$query_id] = @mysql_fetch_array($query_id);
		return $this->row[$query_id];
	}
	else
	{
		return false;
	}
}
function sql_fetchrowset($query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		unset($this->rowset[$query_id]);
		unset($this->row[$query_id]);
		while($this->rowset[$query_id] = @mysql_fetch_array($query_id))
		{
			$result[] = $this->rowset[$query_id];
		}
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_fetchfield($field, $rownum = -1, $query_id = 0)
{
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		if($rownum > -1)
		{
			$result = @mysql_result($query_id, $rownum, $field);
		}
		else
		{
			if(empty($this->row[$query_id]) && empty($this->rowset[$query_id]))
			{
				if($this->sql_fetchrow())
				{
					$result = $this->row[$query_id][$field];
				}
			}
			else
			{
				if($this->rowset[$query_id])
				{
					$result = $this->rowset[$query_id][$field];
				}
				else if($this->row[$query_id])
				{
					$result = $this->row[$query_id][$field];
				}
			}
		}
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_rowseek($rownum, $query_id = 0){
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}
	if($query_id)
	{
		$result = @mysql_data_seek($query_id, $rownum);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_nextid(){
	if($this->db_connect_id)
	{
		$result = @mysql_insert_id($this->db_connect_id);
		return $result;
	}
	else
	{
		return false;
	}
}
function sql_freeresult($query_id = 0){
	if(!$query_id)
	{
		$query_id = $this->query_result;
	}

	if ( $query_id )
	{
		unset($this->row[$query_id]);
		unset($this->rowset[$query_id]);

		@mysql_free_result($query_id);

		return true;
	}
	else
	{
		return false;
	}
}
function sql_error($query_id = 0)
{
	$result["message"] = @mysql_error($this->db_connect_id);
	$result["code"] = @mysql_errno($this->db_connect_id);

	return $result;
}

} 

$db = new sql_db('localhost', 'username', 'password', 'db', false);

if(!$db->db_connect_id) {  die("mysqlerror.html");  }

?>

E depois na "class account" coloca include("mysql.php"); em vez de include("db.php");

<?php

class account 
{	

var $id;
var $health;


function consuming($type, $amount) {
                include("mysql.php"); --> AQUI
	$this->id = $_SESSION['USERID'];
	$this->health = $_SESSION['HEALTH'];
	$result = $db->sql_query("SELECT drugs.strength AS strength, drugbag.drugid AS drugid, drugbag.amount AS amount, drugbag.tconsumed AS consumed FROM drugbag, drugs WHERE drugbag.userid = '$this->id' AND drugbag.drugid = $type AND drugs.id = $type");
	$row = $db->sql_fetchrow($result);											
	$inpact = $row['strength'] * $amount;
	$newhealth = $this->health - $inpact;
	$_SESSION['HEALTH'] = $newhealth;
	$healthpercent = ($newhealth  / 1000);
	$db->sql_query("UPDATE stats SET lasthealth = '$this->health', health = '$newhealth' WHERE id = '$this->id'");
	$newamount = $row['amount'] - $amount;
	$totalconsumed = $row['consumed']+$amount;
	$db->sql_query("UPDATE drugbag SET amount = '$newamount', tconsumed = '$totalconsumed' WHERE userid = '$this->id' AND drugid = '$type'");
	return $healthpercent;		
} 
?>

Talvez assim funcione..

Posted

Ehehe, iss n resoltou mas fex me pensar noutra cena e agora ja ta a workar tudo bem obrigada!

Fiz assim :

if(!class_exists('sql_db')) {
class sql_db
{

E por ai fora..

Já ta a dar brg!!

RayBacK  😁

  • 3 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.