Ir para o conteúdo
Planphp

Consulta a Base de Dados

Mensagens Recomendadas

Planphp

Viva,

Estou com um problema no codigo que abaixo irei apresentar, sou iniciante na programação php, e estou a tentar efectuar uma consulta á base de dados atraves de um formulario, que irá enviar para consulta á base de dados, para mostrar o resultado em outra página com o filtro efectuado atraves do formulario.

Formulario.php

<form id="form2" name="form2" method="_POST" action="pesquisa.php">
<table width="79%" border="0" align="left" cellpadding="0" cellspacing="0">
<tr>
<th width="37%" align="left" valign="middle" bgcolor="#FFFFFF" class="Titlopreto1" scope="col"> <span class="links_menu_principal">
<label for="lista_categorias"><strong>Oferta:</strong></label>
</span></th>
<th width="63%" align="left" bgcolor="#FFFFFF" class="textobranco2" scope="col"><span class="links_menu_principal">Localidade:</span></th>
</tr>
<tr>
<td align="left" valign="middle" bgcolor="#FFFFFF"><span class="links_menu_principal">
<select name="lista_categorias" size="1" class="caixa" id="lista_categorias">
<option value="1">Hotel</option>
<option value="2" selected="selected">Anticorrosão</option>
<option value="3">Telemoveis</option>
</select>
</span></td>
<td bgcolor="#FFFFFF"><span class="links_menu_principal">
<select name="lista_localidades" size="1" class="caixa" id="lista_localidades">
<option value="1">Lisboa</option>
<option value="2">Porto</option>
<option value="3">Funchal</option>
</select>

pesquisar.php

<?php
require_once("includes/config.php");

$lista_categorias = $_POST['categoria'];
$lista_localidades = $_POST['localidade'];
$resultado = mysql_query("SELECT * FROM promocoes_pag_principal_meio_1 (categoria, localidade) VALUES ('$lista_categorias', '$lista_localidades',");
while($linha = mysql_fetch_array($resultado)) {
echo "".$linha['promocoes_id']."";
echo "".$linha['titulo']."";
echo "".$linha['descricao_short']."";
echo ""." <img src='".$linha['imagem']. "' alt='' align='top' border='1' width='564' height='350'/></p>";
echo "".$linha['preco']."";
echo "".$linha['desconto']."";
echo "".$linha['estado']."";
echo "".$linha['descricao_long']."";
echo "".$linha['inclui']."";
echo "".$linha['data_inicio']."";
echo "".$linha['data_termino']."";
echo "".$linha['empresa']."";
echo "".$linha['categoria']."";
echo "".$linha['localidade']."";

}
?>

Alguem me pode dar uma ajuda, já que estou á 1 dia de volta do código e não consigo que o mesmo funcione :)

Cumprimentos

Editado por yoda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

Boa tarde,

Não aparece os registos selecionados no formulario na pagina de pesquisa.

Deveria aparecer os resultados relacionados com a pesquisa efectuada.

A página n aparece com nenhum erro, mas tambem não mostra os resultados, fica em branco.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Se fica em branco é porque ocorreu um erro mas o mesmo não pode ser apresentado no ecrã por definições do PHP.

Mete isto no inicio dos ficheiros :

# error reporting
error_reporting(E_ALL ^ E_NOTICE);


# error display
ini_set('display_errors', 1);

Depois diz que erro aparece.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\WampDeveloper\Websites\DefaultWebsite\webroot\consulting_plan\pesquisa.php on line 12

Editado por yoda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Isso significa que precisas indicar o ponteiro da ligação MySQL a essa função. Onde fazes a ligação ao mysql, atribui o resultado a uma variável e usa-a com essa função. Exemplo :

$pointer = mysql_connect('...', '...', '...');


# -.. e na função que dá erro

mysql_fetch_array($resultado, $pointer);

Editado por yoda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

<?php

$pointer = "includes/config.php";

$lista_categorias = $_POST['categoria'];
$lista_localidades = $_POST['localidade'];
$resultado = mysql_query("SELECT * FROM promocoes_pag_principal_meio_1 (categoria, localidade) VALUES ('$lista_categorias', '$lista_localidades',");
while($linha = mysql_fetch_array($resultado, $pointer)) {
echo "".$linha['promocoes_id']."";
echo "".$linha['titulo']."";
echo "".$linha['descricao_short']."";
echo ""." <img src='".$linha['imagem']. "' alt='' align='top' border='1' width='564' height='350'/></p>";
echo "".$linha['preco']."";
echo "".$linha['desconto']."";
echo "".$linha['estado']."";
echo "".$linha['descricao_long']."";
echo "".$linha['inclui']."";
echo "".$linha['data_inicio']."";
echo "".$linha['data_termino']."";
echo "".$linha['empresa']."";
echo "".$linha['categoria']."";
echo "".$linha['localidade']."";

}
?>

Da o mesmo erro:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\WampDeveloper\Websites\DefaultWebsite\webroot\consulting_plan\pesquisa.php on line 9

Editado por scorch
Adicionado Geshi. ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

Será que é possivel me ajudares na construção da query, uma vez que pretendo consultar a base de dados transportando os dados do formulario atraves dos POST, para que mostre os resultados encontrados no campo da BD categoria e localidade ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

<?php

require_once ("includes/config.php");

$lista_categorias = $_POST['categoria'];
$lista_localidades = $_POST['localidade'];
$resultado = mysql_query("SELECT * FROM promocoes_pag_principal_meio_1 order by promocoes_id");
while($linha = mysql_fetch_array($resultado)) {
echo "".$linha['titulo']."";

}
?> </td>
<td><?php

require_once ("includes/config.php");

$lista_categorias = $_POST['categoria'];
$lista_localidades = $_POST['localidade'];
$resultado = mysql_query("SELECT * FROM promocoes_pag_principal_meio_1 order by promocoes_id");
while($linha = mysql_fetch_array($resultado)) {

echo "".$linha['categoria']."";


}
?>

Com o código acima, mostra da pagina de resultados todos os registos, mas eu so quero que mostre os registos seleccionados e não estou a conseguir desde ontem :)

Editado por scorch
Adicionado Geshi.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

Tabela: promocoes_pag_principal_meio_1

Estrutura:

promocoes_id int(15) No

titulo varchar(125) No

descricao_short varchar(255) No

imagem varchar(255) No

preco varchar(35) No

desconto varchar(35) No

estado varchar(35) No

descricao_long varchar(255) No

inclui varchar(35) No

data_inicio date No

data_termino date No

empresa varchar(55) No

categoria varchar(55) No

localidade varchar(55) No

Editado por Planphp

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

Obrigado pela query.

A questão

e que eu não estou a conseguir agarrar nas variaveis que vem do formulario e que eu estou a indicar que será $lista_categorias e $lista_localidades depois fazer a consulta á base de dados e depois mostrar apenas as linhas que estão gravadas na base de dados que contenham as variaveis que vem no formulario.

Tipo seleccionar no formulario Hotel e Lisboa e depois estas variaveis serem inseridas no select e apresentados apenas os registos que sejam de categoria Hotel e que estajam localizados em lisboa, só que quando são apresentados os registos seja visivel todos os campos da linha da base de dados que contenham a variavel categoria e localidade que vem do formulario.

No meu pouco conhecimento de php eu penso que o seguinte codigo devia fazer o que quero:

require_once ("includes/config.php");

$lista_categorias = $_POST['categoria'];
$lista_localidades = $_POST['localidade'];

$resultado = mysql_query("SELECT * FROM promocoes_pag_principal_meio_1 WHERE categoria,localidade  LIKE "%$lista_categorias%" "%$lista_localidades%" ORDER BY promocoes_id");

while($linha = mysql_fetch_array($resultado)) {

echo "".$linha['promocoes_id']."";
echo "".$linha['titulo']."";
echo "".$linha['descricao_short']."";
echo ""." <img src='".$linha['imagem']. "' alt='' align='top' border='1' width='564' height='350'/></p>";
echo "".$linha['preco']."";
echo "".$linha['desconto']."";
echo "".$linha['estado']."";
echo "".$linha['descricao_long']."";
echo "".$linha['inclui']."";
echo "".$linha['data_inicio']."";
echo "".$linha['data_termino']."";
echo "".$linha['empresa']."";
echo "".$linha['categoria']."";
echo "".$linha['localidade']."";

}

Editado por yoda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

Agora ja aparecem resultados, mas aparecem todos os registos, por isso o erro esta no php, que não esta a funcionar.

Para que tenhas uma noção melhor de como tenho os registos na BD e a consulta que esta a ser feita.

Na tabela eu tenho dois registos, no primeiro tenho:

Categoria: Hotel

Localidade: Lisboa

no segundo:

Categoria: Telemoveis

Localidade: Porto

E está a aparecer os 2 registos, o que quer dizer que não esta a apresentar a selecção efectuada no formulario .

Se me poderes ajudar agradeço bastante pois não sei como contornar esta situação,

obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

Continua a mostrar os dois registos.

Se eu seleciono no formulario:

Categoria:Hotel

Localidade:Porto

não deveria aparecer:

Categoria: Telemoveis

Localidade: Sines

Será que tem a ver da forma como está estruturado o codigo PHP do WHILE para a frente?

A forma do echo será a correcta, pois eu estou a pedir que escreva os registos de todos os campo....

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

n esta a passar nada, pois estou a fazer:

$lista_categorias = $_POST['lista_categorias'];

$lista_localidades = $_POST['lista_localidades'];

print $lista_categorias;

print $lista_localidades;

e não aparece nada

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Planphp

Bem,

não está nada facil conseguir efectuar a pesquisa pelos campos seleccionados, é demais, eu consigo que no formulario efectue a conexao á base de dados e exibe os dados nos campos do formulario, depois quando envio para o script que deve mostrar os dados filtrados no formulario não aparece nada.

Abaixo vou mostrar o codigo e se alguem conseguir ver o erro solicito a ajuda pois eu não estouy a conseguir ver o problema.

Formulario:

<form action="pesquisa.php" enctype="multipart/form-data" method="_POST" >
<table width="79%" border="0" align="left" cellpadding="0" cellspacing="0">
<tr>
<th width="37%" align="left" valign="middle" bgcolor="#FFFFFF" class="Titlopreto1" scope="col"> <span class="links_menu_principal">
<label for="lista_categorias"><strong>Oferta:</strong></label>
</span></th>
<th width="63%" align="left" bgcolor="#FFFFFF" class="textobranco2" scope="col"><span class="links_menu_principal">Localidade:</span></th>
</tr>
<tr>
<td align="left" valign="middle" bgcolor="#FFFFFF"><span class="links_menu_principal">
<select name="categorias" size="1" class="caixa">
<option value="" selected="selected"><?php $procurar_categoria = mysql_query("Select * FROM categoria order by id DESC");
while ($linhac = mysql_fetch_array($procurar_categoria)){
echo '<option value="'.$linhac['id'].'">'.$linhac['categoria'].'
</option>';
}?>
</select>
</span></td>
<td bgcolor="#FFFFFF"><span class="links_menu_principal">
<select name="localidades" size="1" class="caixa" >
<option value="" selected"selected"><?php $procurar_localidade = mysql_query("Select * FROM localidade order by id DESC");
while ($linhal = mysql_fetch_array($procurar_localidade)){
echo '<option value="'.$linhal['id'].'">'.$linhal['local'].'
</option>';
}?></option>

</select>
</span></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"> </td>
<td bgcolor="#FFFFFF"> </td>
</tr>
<tr>
<td colspan="2" align="center" valign="middle" bgcolor="#FFFFFF"><input type="hidden" name="acao" class="caixa" value="enviar" />
<input type="submit" class="caixa" value="pesquisar" />

Pesquisa.php

// onde está o script para mostrar os resultados

<?php
$conexao = mysql_connect('localhost','root','xpto') or die (mysql_error());

if ($conexao){
mysql_select_db ("teste");

}
?>

<?

if(isset($_POST['acao'])&& $_POST['acao'] == 'enviar') {
$categoria = $_POST['categoria'];
$localidade = $_POST['localidade'];

$selecciona_promocao = mysql_query ("SELECT * FROM promocoes_pag_principal_meio_1 WHERE categoria = '$categoria' AND localidade = '$localidade'");
if(mysql_num_rows($selecciona_promocao) == 0){
echo 'Lamentamos mas a sua pesquisa não obteve resultados';
}else{
while($linha_promocao = mysql_fetch_array($selecciona_promocao)){
echo ''.$linha_promocao['preco'].'';
}
}
}
?>

Editado por scorch
Adicionado Geshi. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.