Jump to content
JFernandesVR

Ligação ao MYSQL

Recommended Posts

JFernandesVR

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

Share this post


Link to post
Share on other sites
HappyHippyHippo

1º - quais as mensagens de erro que te aparecem

2º - qual é a linha 3 ???


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

Share this post


Link to post
Share on other sites
JFernandesVR

linha 3 do bdmysql.class.php é

class BDMySQL {

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

linha 437

$resultado = mysql_query($sql);

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
HappyHippyHippo

1º - o erro está antes dessa linha 3

2º - o erro que fizeste post é devido a incorrecta informação de autenticação no servidor MySQL, verifica qual é a informação corecta porque (quase de certeza) não será "******"


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

Share this post


Link to post
Share on other sites
JFernandesVR

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

Share this post


Link to post
Share on other sites
HappyHippyHippo

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

Share this post


Link to post
Share on other sites
JFernandesVR

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);

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
HappyHippyHippo

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

Share this post


Link to post
Share on other sites
JFernandesVR

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

Share this post


Link to post
Share on other sites
HappyHippyHippo

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

Share this post


Link to post
Share on other sites
JFernandesVR

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
}

?>

Share this post


Link to post
Share on other sites
JFernandesVR

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();
?>

Share this post


Link to post
Share on other sites
yoda

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

Share this post


Link to post
Share on other sites
JFernandesVR

nao percebi?

ficheiro a parte?

como posso ligar sem usar esses ficheiros??

ja tentei o mysql_connect e nao funca

Edited by JFernandesVR

Share this post


Link to post
Share on other sites
JFernandesVR

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

Share this post


Link to post
Share on other sites
yoda

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.

Share this post


Link to post
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.