RayBacK Posted June 28, 2006 at 12:41 AM Report #35173 Posted June 28, 2006 at 12:41 AM 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
kingless Posted June 28, 2006 at 12:48 AM Report #35175 Posted June 28, 2006 at 12:48 AM Podes mostrar o código das 2 classes ?
RayBacK Posted June 28, 2006 at 01:03 AM Author Report #35179 Posted June 28, 2006 at 01:03 AM 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]
kingless Posted June 28, 2006 at 01:12 AM Report #35182 Posted June 28, 2006 at 01:12 AM 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;
RayBacK Posted June 28, 2006 at 01:21 AM Author Report #35184 Posted June 28, 2006 at 01:21 AM 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
kingless Posted June 28, 2006 at 01:30 AM Report #35185 Posted June 28, 2006 at 01:30 AM 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..
RayBacK Posted June 28, 2006 at 01:43 AM Author Report #35189 Posted June 28, 2006 at 01:43 AM 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 😁
Sven Posted October 21, 2006 at 05:55 PM Report #59123 Posted October 21, 2006 at 05:55 PM em vez de include("mysql.php"); --> AQUI usa include_once("mysql.php"); --> AQUI Writing software is more fun than workingO covil do Barão
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now