Jump to content

Recommended Posts

Posted (edited)

Boas pessoal.

tenho o seguinte problema.

Criei os seguintes ficheiros de ligação a bd

config.inc.php

$NOME_BD = "******";
$NOME_UTILIZADOR = "*****";
$PASSWORD = "*******";
$NOME_SERVIDOR = "localhost";

e o BDMySQL.class.php

class BDMySQL {
 var $conn;
 function ligarBD($bdname, $user, $password, $server) {
$this->conn = mysql_connect($server, $user, $password);
if($this->conn<0) {
  return -1;
}
if(mysql_select_db($bdname, $this->conn)==false) {
  return -1;
}
 }
 function executarSQL($sql_command) {
$resultado = mysql_query($sql_command, $this->conn);
return $resultado;
 }
 function numero_tuplos($tabela) {
$tuplos=0;
$rs=$this->executarSQL("SELECT * FROM $tabela");
while(mysql_fetch_row($rs)) {
  $tuplos++;
}
return $tuplos;
 }
 function fecharBD() {
mysql_close($this->conn);
 }
}

o problema esta que, quando crio uma página nova em php e faço o requiere e includes destes 2 ficheiros acima, nao me consigo ligar a base de dados.

nem fazendo um mysql_connect

tenho tb o class.php onde estao listadas todas as funçoes, mas nao queria tar a inserir mais funçoes

require("config.inc.php");
include("BDMySQL.class.php");
class Classe extends BDMySQL {
	var $bd;
	function Classe() {
global $NOME_BD, $NOME_UTILIZADOR, $PASSWORD, $NOME_SERVIDOR;
			$this->bd = new BDMySQL();
			$this->bd->ligarBD($NOME_BD, $NOME_UTILIZADOR, $PASSWORD, $NOME_SERVIDOR);
 }

por vez, quando faço o require do ficheiro bdmysql.class.php, diz que tem um erro na linha 3 do ficheiro bdmysql.class.php

Edited by JFernandesVR
Posted (edited)

eu pus ***** para nao postar aqui os dados...

o nome do servido de bd, pass e utilizador estao correctos

quando faço o reuire do bdmysql.class.php dame erro na linha 3

quando tento fazer mysql_connect também me dá erro e nao percebo o porque

Edited by JFernandesVR
Posted

eu pus ***** para nao postar aqui os dados...

o nome do servido de bd, pass e utilizador estao correctos

até podias por batatas ... quem está a dizer que está errado é o servidor, não sou eu

quando faço o reuire do bdmysql.class.php dame erro na linha 3

quando tento fazer mysql_connect também me dá erro e nao percebo o porque

eu já disse : o erro está nas linhas anteriores, mais será impossível dizer sem apresentares o erro que te é apresentado

IRC : sim, é algo que ainda existe >> #p@p
Posted

mas os dados estão corretos.

Fatal error: Cannot redeclare class BDMySQL in /home/*****/public_html/Classes PHP/BDMySQL.class.php on line 3

Warning: mysql_query() [function.mysql-query]: Access denied for user '****'@'localhost' (using password: NO) in/home/*****/public_html/pesquisavancada.php on line 444

$resultado = mysql_query($sql);

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/*****/public_html/pesquisavancada.php on line 444

$resultado = mysql_query($sql);

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in/home/*****/public_html/pesquisavancada.php on line 445

while ($artigos = mysql_num_rows($resultado))

Warning: mysql_close(): 4 is not a valid MySQL-Link resource in/home/******/public_html/Classes PHP/BDMySQL.class.php on line 32

mysql_close($this->conn);
Posted

o primeiro erro é devido a múltiplas inclusões do ficheiro.

ou corrigis isso para só ser incluído uma única vez ou usa o (require|include)_once

no que toca a todos os outros, a isso eu já te disse : a informação de autenticação ao servidor MySQL está errada.

IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

como é que pode estar errada, se nas outras páginas funca?

mesmo ponde once_ da me erro que nao consegue conetar.

e ja verifiquei os dados, e eles estao corretos

Edited by JFernandesVR
Posted

como é que pode estar errada, se nas outras páginas funca?

mesmo ponde once_ da me erro que nao consegue conetar.

e ja verifiquei os dados, e eles estao corretos

nisso ninguém te pode ajudar ...

a informação é a que tu apresentaste aqui (a mensagem de erro) e é isso que ela diz.

IRC : sim, é algo que ainda existe >> #p@p
Posted

como posso então fazer a ligação a base de dados?

pondo os pontos nos is

tenho um ficheiros class.php onde estão as funções certo?

para não ter tanto trabalho a fazer a funções, prefiro programar directamente na página que estou a criar.

tenho o config.inc.php que tem os dados de acesso.

tenho o bdmysql.class.php, que faz a ligação a base de dados.

estou a tentar criar uma pesquisa

aqui vai o codigo:

<?php
session_start();
$SID = SID;
 include("Classes PHP/Class.php");
 include_once("Classes PHP/BDMySQL.class.php");
 require_once("Classes PHP/config.inc.php");
?>

<form action="" enctype="multipart/form-data" name="busca" method="post">
<input type="text" name="buscar" />
<input type="submit" name="enviar" value="Procurar" />
</form>		
<?php

$buscar_artigo = $_POST['buscar'];
$sql= "SELECT * FROM artigos WHERE DescricaoPT '%$buscar_artigo%'";
$resultado = mysql_query($sql);
 while ($artigos = mysql_num_rows($resultado))
 {
  $imagem_artigo = $resultado_artigos['Imagem'];
  $referencia_artigo= $resultado_artigos['Referencia'];
  $descricao_artigo= $resultado_artigos['DescricaoPT'];
  $preco_artigo= $resultado_artigos['PrecoPVP'];
  $marca_artigo= $resultado_artigos['Marca'];


?>
  <table width=100% border=1>
	 <tr>
	 <td>Imagem</td>
	 <td>Referência</td>
	  <td>Descrição</td>
	  <td>Preço</td>
	  <td>Marca</td>
	 </tr>

	 <tr>
	  <td><?php echo $imagem_artigo ?></td>
	 <td><?php echo $referencia_artigo ?></td>
	  <td><?php echo $descricao_artigo ?></td>
	  <td><?php echo $preco_artigo ?></td>
	  <td><?php echo $marca_artigo ?></td>
	 </tr>

	 <tr>
	  <td colspan=4 align=right>Total de artigos encontrados</td>
	  <td><?php $total_registo?></td>
	 </tr>


   </table>
<?php
}

?>
Posted

fica no mesmo

bdmysql.class.php

<?php
class BDMySQL {
 var $conn;
 function ligarBD($bdname, $user, $password, $server) {
   $this->conn = mysql_connect($server, $user, $password);
if($this->conn<0) {
  return -1;
   }
   if(mysql_select_db($bdname, $this->conn)==false) {
  return -1;
   }
 }
 function executarSQL($sql_command) {
   $resultado = mysql_query($sql_command, $this->conn);
   return $resultado;
 }
 function numero_tuplos($tabela) {
   $tuplos=0;
   $rs=$this->executarSQL("SELECT * FROM $tabela");
   while(mysql_fetch_row($rs)) {
  $tuplos++;
   }
   return $tuplos;
 }
 function fecharBD() {
   mysql_close($this->conn);
 }
}
?>

class.php

<?php
require("config.inc.php");
include("BDMySQL.class.php");
class Classe extends BDMySQL {
    var $bd;
    function Classe() {
   global $NOME_BD, $NOME_UTILIZADOR, $PASSWORD, $NOME_SERVIDOR;
		    $this->bd = new BDMySQL();
		    $this->bd->ligarBD($NOME_BD, $NOME_UTILIZADOR, $PASSWORD, $NOME_SERVIDOR);
 }
?>

pesquisaavancada.php

<?php
session_start();
$SID = SID;
 include("Classes PHP/Class.php");
include_once("Classes PHP/BDMySQL.class.php");
require_once("Classes PHP/config.inc.php");
$ligarbd=new Classe;
$ligarbd->ligarBD($NOME_BD, $NOME_UTILIZADOR, $PASSWORD, $NOME_SERVIDOR);
$ligarbd->endClasse();
?>
Posted (edited)

Eu tinha dito ficheiro à parte, porque era mesmo para ser um ficheiro à parte, e não nos que tinhas, para realmente entenderes o erro.

global $NOME_BD, $NOME_UTILIZADOR, $PASSWORD, $NOME_SERVIDOR;

Isto é o quê? Estas variáveis são definidas onde? E porque é que estás a fazer a ligação à BD com parâmetros na função se dentro da própria função não as usas? E aqueles includes todos dentro de cada ficheiro? E aquelas nomenclaturas esquisitas nas classes que, pelos vistos, já estão a fazer estragos? Organiza bem o código, entende o que está a acontecer. Se não vês o erro no todo, parte o sistema em partes individuais e testa até encontrares o problema.

Edited by yoda
Posted (edited)

eu fiz isso, seguindo o livro de php 5.3

essas variavies estao definidas no config.inc.php

eu basicamente estou a tentar nao criar mais funçoes no class.php.

queria inserir o php directamente na pagina e o que me acontece é que ele nao liga a bd.

Edited by JFernandesVR
Posted

Que livro era esse? É da editora FCA? Se for, lixo com ele, quem os escreve sabe tanto quanto um utilizador ávido do google, digo isto por experiência (tive um que acabou na lareira). Se a nomenclatura das classes e funções foi copiada desse livro, não o mantes para o lixo, mete na net para a malta se rir um pouco 🙂

Sinceramente, tens tantos erros em tão pouco código que não consigo ajudar sem mudar-te quase tudo, mas isso és tu quem tem de fazer ... olha bem para o código, e identifica os erros que conseguires. Se mais tarde me der para isso, deixo aqui uma sugestão para mudar tanto o código como a forma como pensas nele.

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.