Jump to content

Ligação ao MYSQL


JFernandesVR

Recommended Posts

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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);
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
}

?>
Link to comment
Share on other sites

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

Mais tarde essa prática vai-te dar bastantes problemas.

Pega num ficheiro à parte, inclui a classe de acesso à base de dados e tenta ligar-te a ela, e diz o que acontece.

Link to comment
Share on other sites

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();
?>
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.