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

Consulta MySQL


Elizangela

Pergunta

Olá...

Sou iniciante em php...estou tentando enviar uma consulta MySql para outra página...onde será gerado o arquivo pdf desta consulta...mas não estou conseguindo enviar a consulta...poderiam me dizer como faço??

abaixo o código que está dentro de uma função:

function sql_relatorio()
{ 
 global $conn;
  global $order;
  global $ordtype;
  global $filter;
  global $filterfield;
  global $wholeonly;
  global $consult;

  $filterstr = sqlstr($filter);
  if (!$wholeonly && isset($wholeonly) && $filterstr!='') $filterstr = "%" .$filterstr ."%";
  $sql = "SELECT `id`, `nome`, `usuario`, `senha`, `nivel`, `cargo`, `email` FROM `Users`";
  if (isset($filterstr) && $filterstr!='' && isset($filterfield) && $filterfield!='') {
    $sql .= " where " .sqlstr($filterfield) ." like '" .$filterstr ."'";
  } elseif (isset($filterstr) && $filterstr!='') {
    $sql .= " where (`id` like '" .$filterstr ."') or (`nome` like '" .$filterstr ."') or (`usuario` like '" .$filterstr ."') or (`senha` like '" .$filterstr ."') or (`nivel` like '" .$filterstr ."') or (`cargo` like '" .$filterstr ."') or (`email` like '" .$filterstr ."')";
  }
  if (isset($order) && $order!='') $sql .= " order by `" .sqlstr($order) ."`";
  if (isset($ordtype) && $ordtype!='') $sql .= " " .sqlstr($ordtype);
  $res = mysql_query($sql, $conn) or die(mysql_error());

    header("location: relatorio.php?sql=$sql"); //não tenho certeza se é assim que se faz.
    exit; 
}

Obrigada,

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Dessa forma que você fez, você até consegue enviar sim a consulta para uma outra página.

Assim está indo por GET, ou seja, aparecerá tudo na barra de endereços.

Nessa página relatorios.php você pode recuperar o que você enviou colocando o seguinte código antes de trabalhar com a consulta:

$sql = $_GET["sql"];

Isso fará com que ele pegue o que foi passado "pela barra de endereços" e transforme novamente na variável $sql.

Como sua dúvida no sub-fórum era a mesma, eu removi seu outro post e mantive apenas este aqui, ok?

Se não for isso que você quiser saber, posta aqui novamente!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá...

Mas se utilizo header...aparece a seguinte mensagem:

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/htdocs/ensin1br/SistemaEscolar/frm_admin/alexa1br/Users.php:23) in /home/httpd/htdocs/ensin1br/SistemaEscolar/frm_admin/alexa1br/Users.php on line 547

Se puder responder ... agradeço...realmente estou precisando implementar este código corretamente...

Obrigada,

Link para o comentário
Compartilhar em outros sites

  • 0

Aaaaaah é!

Esquecí de dizer, você não pode utilizar header depois de já ter impresso algo no navegador porque header é cabeçalho, e obrigatoriamente vem antes do conteúdo!

Tem algo que você pode fazer....

É gambiarra, mas funciona, é imperceptível ao usuário e não dá zebra:

Troque a linha:

header("location: relatorio.php?sql=$sql");
Pela linha:
echo "<script language=\"javascript\">window.location.href = \"relatorio.php?sql=$sql\";</script>";

Sim, um JavaScript!

Testa aí e me fala o que aconteceu!

Link para o comentário
Compartilhar em outros sites

  • 0

Porém, caso o JavaScript do navegador estivesse desabilitado não funcionaria, não é?

Não sei se é tão efetivo, pois apresenta alguns problemas, mas sempre utilizei a meta tag Refresh:

<meta http-equiv="refresh" content="0;url=relatorio.php?sql=....">

# If the redirect happens quickly (less than 2-3 seconds), readers with older browsers can't hit the "Back" button. This is a usability problem.

# If the redirect happens quickly and goes to a non-existant page, your readers won't be able to hit the "Back" button. This is a usability problem that will cause people to completely leave your site.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi ...

Brigadão pela força que está me dando...sou novata mesmo...estou tentando desenvolver um sistema escolar..mas emperrei nos relatórios...

Bem...agora o erro está dando na página do Relatório...

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/httpd/htdocs/ensin1br/SistemaEscolar/relatorio.php on line 36

Não retornou nenhum registro

Será que não está enviando minha consulta??

Link para o comentário
Compartilhar em outros sites

  • 0

Ah, você não pode enviar um resource por meio de $_GET ou $_POST.

Você deve mandar o texto da consulta, pegar com $_GET, "decodificar" as palavras em hexadecimal com urldecode, então fazer a query no script relatorio.php.

Por exemplo:

<?php
$link = mysql_connect(....);
mysql_select_db(....);
$query = urldecode($_GET['sql']);
$result = mysql_query($query, $link);
?>

Porém, isto é MUITO arriscado de se fazer, pois qualquer um pode executar querys no seu banco de dados.

Abraços.

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

  • 0

O que o Dorubi falou é verdade!

Você não pode executar a query nessa mesma página, ou deixá-la pronta na página de relatórios, colocando em variáveis apenas o necessário para a query funcionar?

Só pra você ter uma idéia, eu poderia chegar no navegador e digitar:

relatorios.php?sql="TRUNCATE TABLE `usuario`"

E você perderia todos os usuários cadastrados!

Link para o comentário
Compartilhar em outros sites

  • 0

Oi...

Obrigada mesmo pela atenção de vocês .... achei melhor então criar um campo e chamar a função na própria página...e não enviar para outra página (relatorio.php).

Só que agora dá outra mensagem de erro... :blink:

Me ajudem....por favor... :blush:

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/htdocs/ensin1br/SistemaEscolar/frm_admin/alexa1br/Users.php:23) in /home/httpd/htdocs/ensin1br/SistemaEscolar/fpdf/fpdf.php on line 1022

FPDF error: Some data has already been output to browser, can't send PDF file

Abraços,

Elizangela

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,2k
    • Posts
      652,1k
×
×
  • Criar Novo...