Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Tubino Borges

site funciona localmente, mas no servidor web da este erro(codigos)

Recommended Posts

O site funciona perfeitamente em localhost, fui testar no servidor gratuito hosyinger, e na minha galeria de fotos, na hora de abrir o album e ver as fotos, da o seguinte erro

 

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /home/u689125600/public_html/Rollerdois/galeria.php on line 29 

este é o codigo completo da galeria php

<?php
include('admin/panel/_setup.php');


?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
	<title>Mis galerias</title>
	<link rel="stylesheet" href="website.css" />
</head>
<body>
    <div id="principal">
	      
<?php
if( isset( $_GET['gal'] ) ) {
    $id = $_GET['gal'];
	$consulta = "SELECT DESCRIPCION, TITULO FROM galerias WHERE IDGALERIA='$id'";
    $filas = mysqli_query($cnx, $consulta);
    $col = mysqli_fetch_assoc($filas);
    
	echo "<h2>$col[TITULO]</h2>";
	echo "<p>$col[DESCRIPCION]</p>";
	
	echo '<div id="ver_galeria">';
	$consulta = "SELECT * FROM FOTOS WHERE FKGALERIA='$id' AND ESTADO='visible' ORDER BY POSICION";
	$filas = mysqli_query($cnx, $consulta);
	while( $col = mysqli_fetch_assoc($filas)){
	echo '<div>';
	echo '<p>'.$col['NOMBRE'].'</p>';
	echo '<img src="admin/fotos/'.$col['ARCHIVO'].'" alt="'.$col['NOMBRE'].'" />';
	
	echo '</div>';
	
	
	}
	echo '</div>';

}else{
$consulta =<<<SQL
SELECT
     IDGALERIA,
	 TITULO,
	 DESCRIPCION,
	 DATE_FORMAT( FECHA_ALTA, '%d/%m/%y' ) FECHA
FROM
   galerias
ORDER BY
     FECHA_ALTA DESC
SQL;

$filas = mysqli_query( $cnx, $consulta );

echo '<div id="listado">';

while( $columna = mysqli_fetch_assoc($filas)){
      $id = $columna['IDGALERIA'];
      $subconsulta = "SELECT ARCHIVO FROM fotos WHERE FKGALERIA='$id' AND ESTADO='visible' ORDER BY RAND() LIMIT 1";
	  $filas2 = mysqli_query($cnx, $subconsulta);
	  $datos = mysqli_fetch_assoc($filas2);
	 
	  $nombre_archivo = $datos['ARCHIVO'];
	  
  echo '<div>';
   echo "<h2>$columna[TITULO]</h2>";
   echo "<div>$columna[FECHA]</div>";
   if( $nombre_archivo != null){
  echo "<img src='admin/fotos/$nombre_archivo' alt='preview de la galeria' />";
  }
   echo "<p>$columna[DESCRIPCION]</p>";
   echo "<a href='index.php?gal=$columna[IDGALERIA]'>VER GALERIA</a>";
   echo '</div>';
   }
    echo '</div>';
   
   }
   
   ?>
  </div>
 </body>
 </html>

essa é a linha 29

while( $col = mysqli_fetch_assoc($filas)){

Já quebrei a cabeça, não entendo pq funciona perfeitamente no xampp e no servidor da hostinger da esse erro. Me ajuda ai eu já tentei de tudo e não entendo o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja a versão do php que você usa localmente e a que está na hospedagem, e outra, dê uma olhada sobre

o mysqli na documentação do php, pois acho que estás fazendo da forma incorreta.

 

http://www.php.net/manual/pt_BR/mysqli-result.fetch-all.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sempre coloque

 

or die(mysql_error());

 


Assim você vai ter uma mensagem de erro mais precisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja a versão do php que você usa localmente e a que está na hospedagem, e outra, dê uma olhada sobre

o mysqli na documentação do php, pois acho que estás fazendo da forma incorreta.

 

http://www.php.net/manual/pt_BR/mysqli-result.fetch-all.php

Edgard Hufelande obrigado por responder.

As duas versões são a 5. Funciona perfeitamente localmente, na hospedagem a parte de visualizar as fotos que da o erro.

 

Esta é a galeria de fotos: http://actubino.url.ph/Rollerdois/funcao.php

 

quando clica em ver fotos ela puxa o titulo e descrição certinho do album. Mas onde deveria estar o titulo da foto e as fotos que da o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edgard Hufelande obrigado por responder.

As duas versões são a 5. Funciona perfeitamente localmente, na hospedagem a parte de visualizar as fotos que da o erro.

 

Esta é a galeria de fotos: http://actubino.url.ph/Rollerdois/funcao.php

 

quando clica em ver fotos ela puxa o titulo e descrição certinho do album. Mas onde deveria estar o titulo da foto e as fotos que da o erro.

 

Poste o código da página galeria.php por gentileza. ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o código da página galeria.php por gentileza. ^^

<?php
include('admin/panel/_setup.php');


?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
	<title>Mis galerias</title>
	<link rel="stylesheet" href="website.css" />
</head>
<body>
    <div id="principal">
	      
<?php
if( isset( $_GET['gal'] ) ) {
    $id = $_GET['gal'];
	$consulta = "SELECT DESCRIPCION, TITULO FROM galerias WHERE IDGALERIA='$id'";
    $filas = mysqli_query($cnx, $consulta);
    $col = mysqli_fetch_assoc($filas);
    
	echo "<h2>$col[TITULO]</h2>";
	echo "<p>$col[DESCRIPCION]</p>";
	
	echo '<div id="ver_galeria">';
	$consulta = "SELECT * FROM FOTOS WHERE FKGALERIA='$id' AND ESTADO='visible' ORDER BY POSICION";
	$filas = mysqli_query($cnx, $consulta);
	while( $col = mysqli_fetch_assoc($filas)){
	echo '<div>';
	echo '<p>'.$col['NOMBRE'].'</p>';
	echo '<img src="admin/fotos/'.$col['ARCHIVO'].'" alt="'.$col['NOMBRE'].'" />';
	
	echo '</div>';
	
	
	}
	echo '</div>';

}else{
$consulta =<<<SQL
SELECT
     IDGALERIA,
	 TITULO,
	 DESCRIPCION,
	 DATE_FORMAT( FECHA_ALTA, '%d/%m/%y' ) FECHA
FROM
   galerias
ORDER BY
     FECHA_ALTA DESC
SQL;

$filas = mysqli_query( $cnx, $consulta );

echo '<div id="listado">';

while( $columna = mysqli_fetch_assoc($filas)){
      $id = $columna['IDGALERIA'];
      $subconsulta = "SELECT ARCHIVO FROM fotos WHERE FKGALERIA='$id' AND ESTADO='visible' ORDER BY RAND() LIMIT 1";
	  $filas2 = mysqli_query($cnx, $subconsulta);
	  $datos = mysqli_fetch_assoc($filas2);
	 
	  $nombre_archivo = $datos['ARCHIVO'];
	  
  echo '<div>';
   echo "<h2>$columna[TITULO]</h2>";
   echo "<div>$columna[FECHA]</div>";
   if( $nombre_archivo != null){
  echo "<img src='admin/fotos/$nombre_archivo' alt='preview de la galeria' />";
  }
   echo "<p>$columna[DESCRIPCION]</p>";
   echo "<a href='index.php?gal=$columna[IDGALERIA]'>VER GALERIA</a>";
   echo '</div>';
   }
    echo '</div>';
   
   }
   
   ?>
  </div>
 </body>
 </html>

esta é a linha 29

 

while( $col = mysqli_fetch_assoc($filas)){

 

O mais estranho que no painel que administra as fotos, ele puxa as fotos normalmente

 

http://actubino.url.ph/Rollerdois/admin/panel/administrar_fotos.php?id=19

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno,

 

Sempre que lidar com banco de dados pense numa maneira de capturar e tratar os erros, não deixe ele simplesmente serem lançados pois serão erros bem genéricos. Usar "or die" é uma maneira rudimentar de fazer isso mas é melhor que nada. Ter que seguir esses erros genéricos no código é realmente chato e ainda mais complicado para nós que não temos acesso ao bd.

 

Então Sempre que você executar uma funcão mysqli_qualquercoisa() coloque o or die(mysqli_error()) depois dela; Então faça algo do tipo:

$filas = mysqli_query($cnx, $consulta) or die(mysqli_error());

 

$col = mysqli_fetch_assoc($filas) or die(mysqli_error());

 

//etc

 

Ainda em tempo nunca receba nenhum dado sem tratamento como você esta fazendo com $_GET['gal']. Agora que você publicou o link e código com vulnerabilidade não dou dois tempos até você receber um ataque.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Siga a dica do Raoni... Utilize o or die...

 

Ainda em tempo nunca receba nenhum dado sem tratamento como você esta fazendo com $_GET['gal']. Agora que você publicou o link e código com vulnerabilidade não dou dois tempos até você receber um ataque.

 

Se tratando de alguns membros aqui não duvido muito não. rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno,

 

Sempre que lidar com banco de dados pense numa maneira de capturar e tratar os erros, não deixe ele simplesmente serem lançados pois serão erros bem genéricos. Usar "or die" é uma maneira rudimentar de fazer isso mas é melhor que nada. Ter que seguir esses erros genéricos no código é realmente chato e ainda mais complicado para nós que não temos acesso ao bd.

 

Então Sempre que você executar uma funcão mysqli_qualquercoisa() coloque o or die(mysqli_error()) depois dela; Então faça algo do tipo:

 

 

Ainda em tempo nunca receba nenhum dado sem tratamento como você esta fazendo com $_GET['gal']. Agora que você publicou o link e código com vulnerabilidade não dou dois tempos até você receber um ataque.

Eles não precisam atacar, e so me pedir a senha do servidor que eu passo hauahuh é só para testes mesmo. eu passei o or die

$filas = mysqli_query($cnx, $consulta) or die(mysqli_error());
hile( $col = mysqli_fetch_assoc($filas) or die(mysqli_error()));

e voltou retornou essa mensagem de erro diferente

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /home/u689125600/public_html/Rollerdois/galeria.php on line 28

sera que o erro é na conexão?

 

Sou novo com php e banco de dados, estou fazendo este site pessoal como meio para aprender. Funcinou perfeitamente no meu xampp, quando passei pro servidor me deu esse balde de agua fria com esse erro. Cheguei tão longe pra não conseguir finalizar. O pior de tudo é que o e erro fica martelando na cabeça e você quer descobrir o que é, da uma agonia que eu nem sei explicar hehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

...
mysqli_free_result($consulta);
$filas = mysqli_query($cnx, $consulta);
while( $col = mysqli_fetch_assoc($filas)){
...

Tenta assim...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro ainda é genérico deve estar faltando muito "or die" no seu código, como eu disse use desde o inicio ao final e não apenas nestas duas linhas. Esse erro realmente não ajuda.

Vamos la, notei o seguinte:

$consulta = "SELECT DESCRIPCION, TITULO FROM galerias WHERE IDGALERIA='$id'";

 

Mude para


$consulta = "SELECT DESCRIPTION, TITULO FROM galerias WHERE IDGALERIA='$id'";

 

Sobre a vulnerabilidade, existe uma série de robos que varrem automaticamente a web atras de vulnerabilidades, quando esse post for indexada pelos mecanismo de pesquisa é bem possível que sofra com esses ataques automáticos.

 

Mesmo se for um servidor para testes é preciso tomar cuidado com segurança pois se um hacker passar virus ou colocar uma pagina escondida para roubar senhas de banco por exemplo o responsável legal sera o cliente da hospedagem (suponho você).

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

...
mysqli_free_result($consulta);
$filas = mysqli_query($cnx, $consulta);
while( $col = mysqli_fetch_assoc($filas)){
...

Tenta assim...

Osmar, obrigado por responder, infelizmente não deu certo, localmente ele deu varios erros e parou de funcionar. no servidor WEB ele continuou dando esse aviso de espera de parametro

 

O erro ainda é genérico deve estar faltando muito "or die" no seu código, como eu disse use desde o inicio ao final e não apenas nestas duas linhas. Esse erro realmente não ajuda.

 

Vamos la, notei o seguinte:

 

$consulta = "SELECT DESCRIPCION, TITULO FROM galerias WHERE IDGALERIA='$id'";

 

Mude para

 

$consulta = "SELECT DESCRIPTION, TITULO FROM galerias WHERE IDGALERIA='$id'";

 

Sobre a vulnerabilidade, existe uma série de robos que varrem automaticamente a web atras de vulnerabilidades, quando esse post for indexada pelos mecanismo de pesquisa é bem possível que sofra com esses ataques automáticos.

 

Mesmo se for um servidor para testes é preciso tomar cuidado com segurança pois se um hacker passar virus ou colocar uma pagina escondida para roubar senhas de banco por exemplo o responsável legal sera o cliente da hospedagem (suponho você).

Roni, obrigado mais uma vez pelas dicas.

Essa linha seleciona a coluna da minha tabela galeria que se chama DESCRIPCION e outra que se chama TITULO da id

é só o nome das tabelas do banco de dados, não altera nada se eu muda-las.

Quanto a segurança do site vou começar a ler sobre isso mais pra frente, assim que resolver esse problema da visualização de todas as fotos do album que foi criado.

Mais uma vez obrigado.

 

 

Amigo tente usar

 

 

$col = mysql_fetch_array($filas) no lugar de $col = mysqli_fetch_assoc($filas)

Tiago, muito obrigado por responder.

Eu tentei o codigo já, e continua dando esse aviso de que mysql_fetch_array() espera uma parametro.

 

O que me deixa louco com esse erro é que localmente, tanto no xampp como no wamp, ele funciona perfeitamente. Já no serviço gratuito da hostinger que eu usei pra testar pq dizia que tinha mysqli ativo(o que na verdade tem, pq tudo funciona menos essa parte).

Realmente não entendo, nunca vi isso de algo funcionar perfeitamente localmente e em um servidor WEB não funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você verificou se em setup.php o usuário, banco, host, e senha para conexão estão de acordo com os da hospedagem? Se estiver Como esta seu código agora? Poste novamente para vermos as modificações que você fez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

depois de [inline]$filas = mysqli_query( $cnx, $consulta );[/inline], adicione:

 

 

die("Erro na consulta: " + mysqli_error($cnx));

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Amigo tente usar

 

 

$col = mysql_fetch_array($filas) no lugar de $col = mysqli_fetch_assoc($filas)

 

 

Ele está usando a extensão mysqli_ do php, como ele fez a conexão com o mysqli_ não poderá usar o mysql_..

 

 

O erro ainda é genérico deve estar faltando muito "or die" no seu código, como eu disse use desde o inicio ao final e não apenas nestas duas linhas. Esse erro realmente não ajuda.

 

Vamos la, notei o seguinte:

 

$consulta = "SELECT DESCRIPCION, TITULO FROM galerias WHERE IDGALERIA='$id'";

 

Mude para

 

$consulta = "SELECT DESCRIPTION, TITULO FROM galerias WHERE IDGALERIA='$id'";

 

Sobre a vulnerabilidade, existe uma série de robos que varrem automaticamente a web atras de vulnerabilidades, quando esse post for indexada pelos mecanismo de pesquisa é bem possível que sofra com esses ataques automáticos.

 

Mesmo se for um servidor para testes é preciso tomar cuidado com segurança pois se um hacker passar virus ou colocar uma pagina escondida para roubar senhas de banco por exemplo o responsável legal sera o cliente da hospedagem (suponho você).

 

Aparente mente a base de dados dele é em espanhol, o que creio que seria o descripcion mesmo. hehe

 

 

 

@Bruno

 

O problema creio que seria algo na query, que não está retornando nada para o mysql_fetch_assoc... Pelo erro parece que a variável $filas está retornando nula.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema creio que seria algo na query, que não está retornando nada para o mysql_fetch_assoc... Pelo erro parece que a variável $filas está retornando nula.

 

quase isso. A variável [inline]$filas[/inline] contém o valor [inline]false[/inline] que indica erro de consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera muito obrigado, vcs não vão acreditar, e vão querer me matar huaahuah

Todo o erro era pq a tabela que puxava o ID estava com uma letra em maiuscula. E no xampp e no wamp não dava diferença e rodava, mas na web ele não entendia.

Obrigado a todos que me ajudaram, eu aprendi muito com esse erro pois tive que ler muita coisa, e era algo muito simples.

Muito obrigado mesmo a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.