Ir para conteúdo
Fórum Script Brasil
  • 0

[Resolvido]Erro no Servidor ou no código


jefponte

Pergunta

Eu tenho uma forma de fazer filtro dinâmico em banco de dados mysql usando $_GET. Funciona perfeitamente no servidor que pago na internet, mas no meu servidor local APACHE está dando um erro.

Veja o código usado para o filtro:

<?php

//filtro para a primeira categoria

$categ = $_GET['categ1'];

//se o valor de $categ for vazio, $string não recebe nada.

if (!isset($categ) || $categ==" )

{

$string ="";

}

else

{

$string="WHERE categ1= '". $categ. "'";

}

?>

<?php

//filtro para a segunda categoria

$categ2 = $_GET['categ2];

//se o valor de $categ2 for vazio, string2 não recebe nada.

if (!isset($categ2) || $categ2=="" )

{

$string2 ="";

}

else

{

$string2="And categ2= '". $categ2. "'";

}

//esses filtros são adicionados no select e realizados pelo usuário do site através de links

$con = mysql_connect("localhost","root","senha");

mysql_select_db("oreidosl_oreidoslivros", $con);

$sql = "SELECT livros.*, categorias.* FROM `livros`

INNER JOIN `categorias` ON livros.`id` = categorias.`id_arquivo` $string $string2 ";

[...]

Está funcionando no site www.oreidoslivros.com.br, mas no meu servidor local apresenta um erro!

Notice: Undefined index: categ2 in D:\web\oreidoslivros\exibfiltroserie.php on line 24

A linha 24 é a linha onde o $_GET aparece pela segunda vez. Todas as vezes que tentei, só o fato de incluir essa variável novamente já aparece o erro.

Fui olhar as versões de PHP de um e de outro usando PHP info() para saber se o problema era com a versão. O do servidor que pago é PHP Version 5.3.13 , o php no meu servidor é 5.3.5! Se alguém sou ber com resolver isso eu agradeceria.

Editado por jefponte
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Você está acessando um index que não existe no array.

Por exemplo:

$array = array(
    'a' => 1,
    'b' => 2,
);
echo $array['a'] // imprime 1
echo $array['c'] // Ops, este índice não existe, o PHP vai emitir o warning ...
Você pode resolver este warning com isset:
// Usando o array acima não vai imprimir nada e o warning não será emitido
if (isset($array['c'])) {
    echo $array['c'];
}

Espero que tenha entendido. Qualquer dúvida estou a disposição.

Um abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Hum. Então eu não posso ter uma variável com valor não declarado dentro de um select? E o GET? Deveria existir um valor antes de declarar a variável que recebe o GET? Então devo colocar o isset no $_GET, se for verdadeiro, declara o categ. Aí se as duas variáveis categ1 e categ2 existirem o meu select virá com as variáveis, se não não. É isso?

Editado por jefponte
Link para o comentário
Compartilhar em outros sites

  • 0

É muito importante resolver isso, pois tenho dois sites que usam esse filtro dinâmico. Então todos estão com erro.

Então lá vai a minha tentativa de resolução. Me ajudem onde eu estou errando, por favor.

Vou colocar o isset no $_GET e ver o que acontece. Deletei o filtro da segunda categoria para tentar resolver essa, posteriormente coloco novamente um filtro melhor para a segunda categoria.

<?php

//se $_GET[categ1] não tem valor nenhum, categ também não recebe nada. Logo $string não vai ter nada.

if (!isset($_GET['categ1']) || $categ==" )

{

$string ="";

}

//caso contrário, $categ vai receber o valor de $_GET['categ1]. E $string vai conter os valores que serão um filtro em cima do campo categ1 e da informação recebida pelo $_GET.

else

{

$categ = $_GET['categ1'];

$string="WHERE categ1= '". $categ. "'";

}

//Váriável $string poderia ser colocada no select sem problemas.

?>

Está certo assim?

Link para o comentário
Compartilhar em outros sites

  • 0

Olha aqui, por favor, alguém me ajude. Quando coloco a primeira categoria funciona, mas na segunda começa a dar problema.

if (!isset($_GET['categ1']) || $_GET['categ1']==" )

{

$categ="";

$string ="";

}

else

{

$categ = $_GET['categ1];

$string="WHERE categorias.`categ1`= '". $categ. "'";

}

if (!isset($_GET['categ2']) || $_GET['categ2']==" )

{

$categ2 = "";

$string2 ="";

}

else

{

$categ2 = $_GET['categ2];

$string2="And categorias.`categ2`= '". $categ2. "'";

}

$con = mysql_connect("localhost","oreidosl_root","cocacola@12");

mysql_select_db("oreidosl_oreidoslivros", $con);

$sql = "SELECT livros.*, categorias.* FROM `livros`

INNER JOIN `categorias` ON livros.`id` = categorias.`id_arquivo` $string $string2 ";

$query = mysql_query($sql);

Editado por jefponte
Link para o comentário
Compartilhar em outros sites

  • 0
Olha aqui, por favor, alguém me ajude. Quando coloco a primeira categoria funciona, mas na segunda começa a dar problema.

if (!isset($_GET['categ1']) || $_GET['categ1']==" )

{

$categ="";

$string ="";

}

else

{

$categ = $_GET['categ1];

$string="WHERE categorias.`categ1`= '". $categ. "'";

}

if (!isset($_GET['categ2']) || $_GET['categ2']==" )

{

$categ2 = "";

$string2 ="";

}

else

{

$categ2 = $_GET['categ2];

$string2="And categorias.`categ2`= '". $categ2. "'";

}

$con = mysql_connect("localhost","oreidosl_root","cocacola@12");

mysql_select_db("oreidosl_oreidoslivros", $con);

$sql = "SELECT livros.*, categorias.* FROM `livros`

INNER JOIN `categorias` ON livros.`id` = categorias.`id_arquivo` $string $string2 ";

$query = mysql_query($sql);

tente isso e poste aqui o resultado

<?php

if ( !isset($_GET['categ1']) || ($_GET['categ1']=="" ) )
{
$categ="";
}
else
{
$categ = $_GET['categ1'];
$string="categorias.`categ1`= '". $categ. "' ";
}
if (!isset($_GET['categ2']) || $_GET['categ2']=="" )
{
$categ2 = "";
}
else
{
$categ2 = $_GET['categ2'];
$string2="And categorias.`categ2`= '". $categ2. "'";
}

$wher= ( isset($string) or isset($string2) ) ? " WHERE ".$string.$string2 : '';


$con = mysql_connect("localhost","oreidosl_root","cocacola@12");
mysql_select_db("oreidosl_oreidoslivros", $con);

$sql = "SELECT livros.*, categorias.* FROM `livros`
INNER JOIN `categorias` ON livros.`id` = categorias.`id_arquivo` $wher";
$query = mysql_query($sql) or die("Falha ao tentar executar consulta: ".mysql_error());

Link para o comentário
Compartilhar em outros sites

  • 0

Rickayron, testei. Quando acesso com o filtro no primeiro aparece o erro na linha 22, a mesma linha onde a variável $wher é declarada. E quando acesso com o segundo filtro aparece o seguinte erro:

Falha ao tentar executar consulta: Unknown column 'categorias.categ2' in 'where clause'

Link para o comentário
Compartilhar em outros sites

  • 0

jefponte,

Mais o o resultado final é retornado? Ou não trás nada?

No seu servidor não aparece nada porque no PHP.INI da maioria dos servidores vem com error_reporting = E_ALL & ~E_NOTICE,

e os locais com error_reporting = E_ALL

Para configurar o PHP.INI para não exibir as mensagens de notificação você deve deixar da seguinte forma,

error_reporting = E_ALL & ~E_NOTICE

Atenciosamente.

Link para o comentário
Compartilhar em outros sites

  • 0
Rickayron, testei. Quando acesso com o filtro no primeiro aparece o erro na linha 22, a mesma linha onde a variável $wher é declarada. E quando acesso com o segundo filtro aparece o seguinte erro:

Falha ao tentar executar consulta: Unknown column 'categorias.categ2' in 'where clause'

o 1° erro ocorrido nesse codigo abaixo foi solucionado!

agora o segundo, informa que a coluna categ2 não existe na tabela categorias.

então para corrigir voce deve informar o nome certa da coluna da tabela.

se tiver duvida poste a estrutura da tabela aqui.

até mais.

<?php

if ( !isset($_GET['categ1']) || ($_GET['categ1']=="" ) )
{
$categ="";
$string='';
}
else
{
$categ = $_GET['categ1'];
$string="categorias.`categ1`= '". $categ. "' ";
}
if (!isset($_GET['categ2']) || $_GET['categ2']=="" )
{
$categ2 = "";
$string2='';
}
else
{
$categ2 = $_GET['categ2'];
$string2=" And categorias.`categ2`= '". $categ2. "'";
}

$wher= ( !empty($string) or !empty($string2) ) ? " WHERE ".$string.$string2 : '';


$con = mysql_connect("localhost","oreidosl_root","cocacola@12");
mysql_select_db("oreidosl_oreidoslivros", $con);

$sql = "SELECT livros.*, categorias.* FROM `livros`
INNER JOIN `categorias` ON livros.`id` = categorias.`id_arquivo` $wher";
$query = mysql_query($sql) or die("Falha ao tentar executar consulta: ".mysql_error());

Link para o comentário
Compartilhar em outros sites

  • 0

Rickayron, muito obrigado! Está funcionando perfeitamente agora.

E o erro do segundo filtro foi por causa da Tabela, que fiz a importação no mysql do servidor local e esqueci de renomear o campo dessa segunda categoria.

Ajudou a corrigir uns três sites que eu tenho funcionando. Valeu mesmo!

Caso resolvido!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...