Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Estou com um problema aparentemente simples, mas eu não sei resolver :(
Tenho um formulário que consulta o banco mysql e exibe um relatório. Isso está funcionando perfeito!
Acontece que quero que esse relatório seja exibido em uma nova página FORMATADA, não um simples "target=_blank". Consegui fazer a nova página abrir, mas o resultado não aparece nela e sim na página atual!
O formulário é esse:
<form id="sql_consulta_campo" method="get" name="sql_consulta_campo" action="sql_consulta_campo.php">
<table align="center" width="600" border="0" cellspacing="5" cellpadding="5">
<tr>
<td width="180px" valign="middle" align="left"><font face="arial" size="1">ARGUMENTO:</font></td>
<td width="250px" align="left"><input name="cli_razao" type="text" id="cli_razao" size="40" maxlength="30"></td>
<td width="220px" align="right">
<button name="consultar" id="consultar" type="submit" align="right" onClick="window.showModalDialog('sql_consulta_campo.php?id=$table','Relatório', 'width=600,height=600,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no');"/>
</td>
</tr>
</table>
</form>
E a busca é essa:
<?php
include "../../config.php"; //inclui o arquivo de conexão
session_start(); // começa a session
if(!isset($_SESSION["login"])){
echo "ACESSO NEGADO";
}else{
$login = $_SESSION["login"];
$sql = mysql_query("SELECT * FROM login WHERE login='$login'") or die("O nome de Utilizador ou Senha está incorrecto. MySQL erro:".mysql_error()); // vê se o username existe ou não
$result = mysql_fetch_array($sql); // põem as informações da database numa array
?>
<?php
if (isset($_GET['consultar'])) //faz com que o que está dentro do if, só seja executado se o usuário clicar em 'Consultar'
{
$razao = trim($_GET['cli_razao']);
if ($razao == ""){
echo "<p align=\"center\"><font face=arial size=2 color=#ff0000>Sem argumentos para a consulta!</font>";
}
else {
//Consulta ao Mysql
$qry = mysql_query("SELECT cli_id as 'ID', cli_razao as 'RAZÃO SOCIAL', cli_fantasia as 'NOME FANTASIA', concat(cli_cpf, cli_cnpj) as 'CPF / CNPJ', concat(cli_end, ',', cli_end_num) as 'ENDEREÇO', cli_bairro as 'BAIRRO', cli_cep as 'CEP', cli_cidade as 'CIDADE', cli_uf as 'ESTADO' FROM cad_cliente WHERE cli_razao LIKE '%".$razao."%' ORDER BY cli_id");
//Pegando os nomes dos campos
$num_fields = mysql_num_fields($qry);//Obtém o número de campos do resultado
// consulta quantas linhas foram encontradas
$cont = mysql_num_rows($qry);
if ($num_fields != 0) {
for($i = 0;$i<$num_fields; $i++){//Pega o nome dos campos
$fields[] = mysql_field_name($qry,$i);
}$table = '<table border="1" bordercolor=#cecece cellspacing="0" cellpadding="2" bgcolor="#f9f9f9"><tr>';
for($i = 0;$i < $num_fields; $i++){
$table .= '<th><font size=1 face=arial>'.$fields[$i].'</th>';
}$table .= '<tr>';
for($i = 0;$i < $num_fields; $i++){
$table .= '<td><font size=1 face=arial>'.$r[$fields[$i]].'</td>';
}
$table .= '</tr>';
}//Imprimindo a tabela
echo "<p align=\"center\"><font face=arial size=2>Resultado da busca para: '".$razao."'</font><br>";
echo "<p align=\"center\"><br>".$table."<br><font face=arial size=1>Total de cliente encontrados: " .$cont."</font>"; echo "Nenhum cliente foi encontrado com a palavra ".$razao."";// ESTA LINHA NÃO ESTÁ FUNCIONANDO
}
}?>
<p align="center"><a href="javascript:history.go(-1)"><img src="../../imagens/voltar.jpg" alt="Voltar" border="0" align="center"></a>
<?php
}
?>
O estranho é que o botão "voltar", que está fora do if isset, aparece na nova página, mas o resultado da consulta, não!
Já mudei de POST para GET, mas nada funciona.
Eu acho que o erro está neste trecho, pois não sei como utilizar variáveis e o jquery (alguém disse que é necessário):
onClick="window.showModalDialog('sql_consulta_campo.php?id=$table','Relatório', 'width=600,height=600,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no');"/>
Alguém pode me ajudar?
* Já tenho o arquivo jquery!
>
Não é só mudar no action do form para o endereço da nova página não?
Não... Pq ele tem que fazer a consulta primeiro... (eu acho!)
Consulta complicada a sua. Veja se este exemplo de consulta lhe ajuda em algo.
É claro que a página é maior, mais só peguei o importante.
admin.php //Pagina do administrador.
<?php
include("conexao.php");
?>
<form name="frmBusca" method="post" action="consulta.php" >
<input type="text" name="palavra" />
<input type="submit" value="Buscar" />
</form>
consulta.php //Pagina que vai exibir a consulta, nao tem nenhum link para essa pagina no meu site, ela so aparece se for feita uma consulta
<?php
// Pegamos a palavra
$palavra = trim($_POST['palavra']);
// Verificamos no banco de dados produtos equivalente a palavra digitada
$sql = mysql_query("SELECT * FROM cliente WHERE cli_nome LIKE '%".$palavra."%' ORDER BY cli_nome");
// Descobrimos o total de registros encontrados
$numRegistros = mysql_num_rows($sql);
// Se houver pelo menos um registro, exibe-o
if ($numRegistros != 0) {
// Exibe os resultados em uma tabela
echo "Busca realizada com sucesso pela palavra: " .$palavra."";
while ($cliente = mysql_fetch_object($sql)) { ?>
<table width='805px' height='50px' cellspacing='2' cellpadding='2' border='1' style='margin-top: 15px;' bgcolor='#3b4244'>
<tr bgcolor='#3b4244' style="color: white;">
<td>Id</td>
<td>Nome</td>
<td>Empresa</td>
<td>Especialidade</td>
<td>Email</td>
<td>UF</td>
<td>Cidade</td>
<td>Endereço</td>
<td>Cep</td>
<td>Tel_Fixo</td>
<td>Tel_Movel</td>
<td>Sexo</td>
</tr>
<?php echo"
<tr>
<td bgcolor='white'><div style='font-weight: bold;'><pre>$cliente->cli_id</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_nome</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_empresa</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_especialidade</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_email</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_uf</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_cidade</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_endereco</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_cep</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_tel_fixo</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_tel_movel</pre></div></td>
<td bgcolor='white'><div><pre>$cliente->cli_sexo</pre></div></td>
</tr>
</table>";?>
<?php }
// Se não houver registros echo "Nenhum cliente foi encontrado com a palavra ".$palavra."";
?>>
>
Não é só mudar no action do form para o endereço da nova página não?
Não... Pq ele tem que fazer a consulta primeiro... (eu acho!)
Claro que não! Você pode fazer a consulta e imprimir na mesma página.
Olá, Lucas e Back-on!
Ainda não é isso que preciso... Minha consulta funciona perfeitamente, só não consigo fazer que ela apareça na nova página! :(
>
Olá, Lucas e Back-on!
Ainda não é isso que preciso... Minha consulta funciona perfeitamente, só não consigo fazer que ela apareça na nova página! :(
Não tem como voce tirar uns prints e hospedar no photobucket e mostrar aqui para a gente o que esta acontecendo de errado?
Aqui estão as telas: https://picasaweb.google.com/renatargr/RenataRamos?authkey=Gv1sRgCLj35-uthM-BUQ#
>
Aqui estão as telas: https://picasaweb.google.com/renatargr/RenataRamos?authkey=Gv1sRgCLj35-uthM-BUQ#
Site Bonito.
Tenta colocar um header no final do seu codigo de consulta.
header("location: admin.php?selecao=cadastros"); //Substitui pela sua pagina
>
>
Aqui estão as telas: https://picasaweb.google.com/renatargr/RenataRamos?authkey=Gv1sRgCLj35-uthM-BUQ#
Site Bonito.
Tenta colocar um header no final do seu codigo de consulta.
header("location: admin.php?selecao=cadastros"); //Substitui pela sua pagina
Então... Acho que isso que preciso, mas o que substituo?? Não sei fazer isso! O que coloco no lugar de 'selecao=cadastros' ?
nao sei qual modal você esta usando mas tem algo estranho pq o botao da submit no form e abre um modal sem parametros.... faça um teste para ver se as variaveis aparecem no modal:
esse $table ta sobrando tb...
sql_consulta_campo.php?id=$table'
<?php
include "../../config.php"; //inclui o arquivo de conexão
session_start(); // começa a session
if(!isset($_SESSION["login"])){
echo "ACESSO NEGADO";
}else{
//==============================================================================================
//essas linhas você tb nao esta utilizando em lugar nenhum sao necessarias?
$login = $_SESSION["login"];
$sql = mysql_query("SELECT * FROM login WHERE login='$login'") or die("O nome de Utilizador ou Senha está incorrecto. MySQL erro:".mysql_error()); // vê se o username existe ou não?>
<?php
//***************************************************************
//teste variaveis
echo "consultar: ".$_GET['consultar'];
echo "razao: ".$_GET['cli_razao'];
exit();if (isset($_GET['consultar'])) //faz com que o que está dentro do if, só seja executado se o usuário clicar em 'Consultar'
{
$razao = trim($_GET['cli_razao']);
if ($razao == ""){
echo "<p align=\"center\"><font face=arial size=2 color=#ff0000>Sem argumentos para a consulta!</font>";
}
else {
//Consulta ao Mysql
$qry = mysql_query("SELECT cli_id as 'ID', cli_razao as 'RAZÃO SOCIAL', cli_fantasia as 'NOME FANTASIA', concat(cli_cpf, cli_cnpj) as 'CPF / CNPJ', concat(cli_end, ',', cli_end_num) as 'ENDEREÇO', cli_bairro as 'BAIRRO', cli_cep as 'CEP', cli_cidade as 'CIDADE', cli_uf as 'ESTADO' FROM cad_cliente WHERE cli_razao LIKE '%".$razao."%' ORDER BY cli_id");
//Pegando os nomes dos campos
$num_fields = mysql_num_fields($qry);//Obtém o número de campos do resultado
// consulta quantas linhas foram encontradas
$cont = mysql_num_rows($qry);
if ($num_fields != 0) {
for($i = 0;$i<$num_fields; $i++){//Pega o nome dos campos
$fields[] = mysql_field_name($qry,$i);
}$table = '<table border="1" bordercolor=#cecece cellspacing="0" cellpadding="2" bgcolor="#f9f9f9"><tr>';
for($i = 0;$i < $num_fields; $i++){
$table .= '<th><font size=1 face=arial>'.$fields[$i].'</th>';
} $table .= '<tr>';
for($i = 0;$i < $num_fields; $i++){
$table .= '<td><font size=1 face=arial>'.$r[$fields[$i]].'</td>';
}
$table .= '</tr>';
}//Imprimindo a tabela
echo "<p align=\"center\"><font face=arial size=2>Resultado da busca para: '".$razao."'</font><br>";
echo "<p align=\"center\"><br>".$table."<br><font face=arial size=1>Total de cliente encontrados: " .$cont."</font>"; echo "Nenhum cliente foi encontrado com a palavra ".$razao."";// ESTA LINHA NÃO ESTÁ FUNCIONANDO
}
}
} //Finaliza if isset
?>
<p align="center"><a href="javascript:history.go(-1)"><img src="../../imagens/voltar.jpg" alt="Voltar" border="0" align="center"></a>
<?php
}
?>>
>
>
Aqui estão as telas: https://picasaweb.google.com/renatargr/RenataRamos?authkey=Gv1sRgCLj35-uthM-BUQ#
Site Bonito.
Tenta colocar um header no final do seu codigo de consulta.
header("location: admin.php?selecao=cadastros"); //Substitui pela sua pagina
Então... Acho que isso que preciso, mas o que substituo?? Não sei fazer isso! O que coloco no lugar de 'selecao=cadastros' ?
Tenta assim:
header("location: sql_consulta_campo.php?id=$table");
Se não der certo, tenta tirar o evento onclick do seu botao de enviar.
Não deu certo, Lucas!
Com o evento onclick dá redundancia, e sem ele fica na mesma.
>
Não deu certo, Lucas!
Com o evento onclick dá redundancia, e sem ele fica na mesma.
Você tem que procurar aonde está o seu erro, provavelmente está em alguma parte que você faz referência a nova janela que se abre, porque voce disse que o link voltar aparece mais o resultado da busca nao. Tenta procurar o erro nos links e redirecionamentos do seu codigo. Eu olhando ele assim não entendo muito devido ao javascript que voce colocou.
Oi, Goruks!
Já tirei o que tinha sobrando. Valeu!
Fiz o teste com as variáveis:
echo "consultar: ".$_GET['consultar'];
echo "razao: ".$_GET['cli_razao'];
exit();
Apareceram no modal aó assim:
consultar: razao:
Alguma sugestão???
Obrigada!
Na página _blank que abre com o resultado da consulta "re" aparece este link:
http://www.regratecnologia.com.br/siesa/comercial/relatorio/sql_consulta_campo.php?cli_razao=re&consultar=
Tentei colocá-lo na modal assim:
onClick="window.showModalDialog('sql_consulta_campo.php?cli_razao=$razao&consultar=','Relatório', 'width=600,height=600,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no');"/>
Onde $razao é a variável que recebe o campo que foi digitada a consulta "re".
Mas não deu certo!
A modal mostra a tabela, mas sem o resultado.
Preciso de ajuda!
a variavel cli_razao tem que ser passada par a pagina onde você executa o SQL:
WHERE cli_razao LIKE '%".$razao."%'
isso aqui esta no html ou php? se for no html nao vai passar a variavel
onClick="window.showModalDialog('sql_consulta_campo.php?cli_razao=$razao&consultar=','Relatório', 'width=600,height=600,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no');"/>
faça seguinte:
1 - na pagina onde tem link para abrir a janela arrume a variavel php e tenha certeza que esta variavel tem o conteúdo que você quer procurar no sql
onClick="window.showModalDialog('sql_consulta_campo.php?cli_razao=<?php echo $razao; ?>','Relatório', 'width=600,height=600,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no');"/>
e na pagina onde executa o sql:
<?php
include "../../config.php"; //inclui o arquivo de conexão
session_start(); // começa a session
if(!isset($_SESSION["login"])){
echo "ACESSO NEGADO";
}else{
$razao = trim($_GET['cli_razao']);
if ($razao == ""){
echo "<p align=\"center\"><font face=arial size=2 color=#ff0000>Sem argumentos para a consulta!</font>";
}
else{
//Consulta ao Mysql
$qry = mysql_query("SELECT cli_id as 'ID', cli_razao as 'RAZÃO SOCIAL', cli_fantasia as 'NOME FANTASIA', concat(cli_cpf, cli_cnpj) as 'CPF / CNPJ', concat(cli_end, ',', cli_end_num) as 'ENDEREÇO', cli_bairro as 'BAIRRO', cli_cep as 'CEP', cli_cidade as 'CIDADE', cli_uf as 'ESTADO' FROM cad_cliente WHERE cli_razao LIKE '%".$razao."%' ORDER BY cli_id");
//Pegando os nomes dos campos
$num_fields = mysql_num_fields($qry);//Obtém o número de campos do resultado
// consulta quantas linhas foram encontradas
$cont = mysql_num_rows($qry);
if ($cont != 0) {
for($i = 0;$i<$num_fields; $i++){//Pega o nome dos campos
$fields[] = mysql_field_name($qry,$i);
}
//Montando o cabeçalho da tabela
$table = '<table border="1" bordercolor=#cecece cellspacing="0" cellpadding="2" bgcolor="#f9f9f9"><tr>';
for($i = 0;$i < $num_fields; $i++){
$table .= '<th><font size=1 face=arial>'.$fields[$i].'</th>';
}
//Montando o corpo da tabela
$table .= '<tbody>';
while($r = mysql_fetch_array($qry)){
$table .= '<tr>';
for($i = 0;$i < $num_fields; $i++){
$table .= '<td><font size=1 face=arial>'.$r[$fields[$i]].'</td>';
}
$table .= '</tr>';
}
//Finalizando a tabela
$table .= '</tbody></table></font>';
//Imprimindo a tabela
echo "<p align=\"center\"><font face=arial size=2>Resultado da busca para: '".$razao."'</font><br>";
echo "<p align=\"center\"><br>".$table."<br><font face=arial size=1>Total de cliente encontrados: " .$cont."</font>";
} echo "Nenhum cliente foi encontrado com a palavra ".$razao."";// ESTA LINHA NÃO ESTÁ FUNCIONANDO
}?>
<p align="center"><a href="javascript:history.go(-1)"><img src="../../imagens/voltar.jpg" alt="Voltar" border="0" align="center"></a>
<?php
} //session
?>Para que a consulta apareça em uma nova página é só colocar na tag <FORM> o atributo target='_new'
:lol:>
Para que a consulta apareça em uma nova página é só colocar na tag <FORM> o atributo target='_new'
:lol:
Seria o mesmo que _blank ?
Não é isso que preciso... Quero uma 'modal'.
Pega o plugin jquery modal e adapta a sua necessidade
[RESOLVIDO]
Se for abrir em nova janela, o arquivo que chama essa página precisa do seguinte script:
<script>
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
</script>
Tanto para abrir nova janela ou não, precisa também da variável que será executada. Então chama o arquivo e a funcao que deverá ser executada dentro dele (no caso, "registra").
<a href="#"><img src="../imagens/seta.gif" title="Registra" border="0" onClick="MM_openBrWindow('form_registra.php?funcao=registrar&id=<?php echo $res[id] ;?>','','width=550,height=400')"></a>
Depois o arquivo que recebe a variável, faz a identificação e executa apenas o que estiver entre { } da variável chamada: (cada variável deve ser separada por &)
<?php
include "../config.php";
include "../logs/logs.php";
session_start();
if(!isset($_SESSION["login"])){
echo "ACESSO NEGADO";
}else{
$login = $_SESSION["login"];
$sql = mysql_query("SELECT * FROM serpcraz_login WHERE login='$login'") or die("Nome ou senha não confere. MySQL erro:".mysql_error()); // vê se o username existe ou não
$result = mysql_fetch_array($sql);
$data = ($_POST['data']);
$horario = ($_POST['horario']);
$autorizacao = ($_POST['autorizacao']);
$profissional = ($_POST['profissional']);
$data_cadastro = date("d/m/Y");
// REGISTRA CONSULTA DE PACIENTE
if ($_GET['funcao'] == "registrar"){
$id_cli = $_GET ['id'];
$sql_registra = "INSERT INTO serpcraz_consulta (paciente, data, horario, autorizacao, data_cadastro, status, profissional)
VALUES ('$id_cli', str_to_date('$data', '%d/%m/%Y'), '$horario', '$autorizacao', str_to_date('$data_cadastro', '%d/%m/%Y'), 'AGENDADA', '$profissional')";
Mysql_query($sql_registra) or die ("<p align=\"center\"><font face=arial size=2 color=#ff0000>Não foi possível registrar o consulta!<br><br></font><br><a href=\"javascript:history.go(-1)\"><img src=\"../imagens/voltar.jpg\" alt=\"Voltar\" border=\"0\" align=\"center\"></a>");
$id = mysql_insert_id();
$mensagem= "Usuário ".$login." cadastrou consulta número '".$id."'.";
salvaLog($mensagem);
logger("Usuário ".$login." cadastrou consulta número '".$id."'.");
echo "<p align=\"center\"><font face=arial size=2>Consulta ".$id." cadastrada com sucesso!</font><script>window.close();</script>";
}
// ALTERA CONSULTA DE PACIENTE
if ($_GET['funcao'] == "editar"){
$id = $_GET ['id'];
$sql_up = ("UPDATE serpcraz_consulta SET data = str_to_date('$data', '%d/%m/%Y'), horario = '$horario', autorizacao = '$autorizacao', profissional = '$profissional' WHERE id = '$id'");
Mysql_query($sql_up) or die ("<p align=\"center\"><font face=arial size=2 color=#ff0000>Não foi possível encerrar o consulta!<br><br></font><br><a href=\"javascript:history.go(-1)\"><img src=\"../imagens/voltar.jpg\" alt=\"Voltar\" border=\"0\" align=\"center\"></a>");
$mensagem= "Usuário ".$login." alterou a consulta número '".$id."'.";
salvaLog($mensagem);
logger("Usuário ".$login." alterou a consulta número '".$id."'.");
echo "<div align=center><font face=arial size=2><br>Consulta alterada com sucesso!.<br><br>Redirecionando...</font>";
echo "<script language=\"JavaScript\">function redireciona() {
window.location=\"form_agendada.php\";}
window.setTimeout('redireciona()', 2000);
</script>";
exit;
}
// ENCERRAR CONSULTA
if ($_GET['funcao'] == "fechar"){
$id = $_GET ['id'];
$sql_encerra = ("UPDATE serpcraz_consulta SET status = 'ATENDIDA' WHERE id = '$id'");
Mysql_query($sql_encerra) or die ("<p align=\"center\"><font face=arial size=2 color=#ff0000>Não foi possível encerrar o consulta!<br><br></font><br><a href=\"javascript:history.go(-1)\"><img src=\"../imagens/voltar.jpg\" alt=\"Voltar\" border=\"0\" align=\"center\"></a>");
$mensagem= "Usuário ".$login." encerrou a consulta número '".$id."'.";
salvaLog($mensagem);
logger("Usuário ".$login." encerrou a consulta número '".$id."'.");
echo "<p align=\"center\"><font face=arial size=2>Consulta ".$id." encerrada com sucesso!</font><script>window.close();</script>";
}
}
?>
Espero ter ajudado a outros. Obrigada pela ajuda de todos! Valeu, Lucas!
Não é só mudar no action do form para o endereço da nova página não?