Executar ação ao selecionar item do combo.

20/07/2015

Olá!
estou fazendo um combo de cidades, eu queria quando selecionar uma cidade, ela me traz o resultado do banco de dados daquela cidade
mais eu tentei de tudo n estou conseguindo será q dava pra vc me da uma ajuda .
agradeço!
Marcos Roberto

segue meu código.



<form action="listarpesquisa.php" method="post" enctype="multipart/form-data">
<select name="categorias">
<option value="0" selected="selected">Selecione uma delegacia</option>
<a href="listarpesquisa.php?id=<?php echo $busca ['id_cat']; ?>"</a>
<?php
$selCats = "SELECT * FROM cat_delegacia";
$qrCats = mysql_query($selCats);
while($linhaCat = mysql_fetch_array($qrCats)){
?>
<option value="<?php echo $linhaCat['id_delegacia'];?>"><?php echo $linhaCat['nome_delegacia']; ?></option>
<?php } ?>

</select>
<!--<input type="text" name="pesquisa" size="30"/>-->
<input type="hidden" name="acao" value="buscar"/>
<input type="submit" value="Buscar"/>
</form>


<?php if(isset($_POST['acao']) && $_POST['acao'] == 'buscar'){
$id_delegacia = $_POST['nome_delegacia'];
$pesquisa = strip_tags(trim($_POST['pesquisa']));


$linhaBusca = $_GET["id_delegacia "];
$busca = ("SELECT id, titulo, diretor, coordenadoria, endereco, conteudo, telefone FROM site_posts
WHERE id=id_cat ORDER BY id DESC ");

$qrBusca = mysql_query($busca);
if(mysql_num_rows($qrBusca) == '0'){
echo 'Não foram encontrados nenhum registro!';
}else{
while($linhaBusca = mysql_fetch_assoc($qrBusca)){
?>

<h1><?php echo $linhaBusca['titulo'];?></h1>
<p><?php echo $linhaBusca['conteudo'];?></p>
<p><?php echo $linhaBusca['diretor'];?></p>
<p><?php echo $linhaBusca['coordenadoria'];?>
</p><p><?php echo $linhaBusca['endereco'];?></p>

<?php

}

}
}
?>

PHP

Marcos Roberto

Melhor resposta

20/07/2015

Marcos para começar, por gentileza utilize a tag code quando for postar trechos de código fonte:
[img]http://arquivo.devmedia.com.br/forum/imagem/269142-20150720-202225.png[/img]

Quanto ao seu código, já postei diversas vezes aqui, não é recomendado utilizar a extensão mysql_ pois a mesma já está marcada como deprecate, recomendo a extensão PDO no meu blog possui muito material sobre isso devwilliam.com.br

O seu código estava meio bagunçado com variáveis perdidas, + ou - como eu faria:
<form action="listarpesquisa.php" method="post">
	<select name="delegacia">
		<option value="0" selected="selected">Selecione uma delegacia</option>
		<?php
		$sql = 'SELECT id_delegacia, nome_delegacia FROM cat_delegacia';
		$stm = $pdo->prepare($sql);
		$stm->execute();
		$dados = $stm->fetchAll(PDO::FETCH_OBJ);

		foreach($dados as $delegacia):
		?>
			<option value="<?php echo $delegacia->id_delegacia;?>"><?php echo $delegacia->nome_delegacia; ?></option>
		<?php endforeach; ?>
	</select>
	<input type="hidden" name="acao" value="buscar"/>
	<input type="submit" value="Buscar"/>
</form>


<?php if(isset($_POST['acao']) && $_POST['acao'] == 'buscar'):
	$id_delegacia = $_POST['delegacia'];

	$busca ='SELECT id, titulo, diretor, coordenadoria, endereco, conteudo, telefone FROM site_posts ';
	$busca .= 'FROM site_posts WHERE id=:parametro ORDER BY id DESC';
	$stm = $pdo->prepare($busca);
	$stm->bindValue(':parametro', $id_delegacia);
	$stm->execute();
	$posts = $stm->fetchAll(PDO::FETCH_OBJ);

	if(empty($posts)):
		echo 'Não foram encontrados nenhum registro!';
	else:
		foreach($posts as $post):
		?>
		<h1><?php echo $post->titulo;?></h1>
		<p><?php echo $post->conteudo;?></p>
		<p><?php echo $post->diretor;?></p>
		<p><?php echo $post->coordenadoria;?>
		</p><p><?php echo $post->endereco;?></p>
		<?php
	endif;
endif;
?>

William (devwilliam)

Responder Citar

Outras Respostas

20/07/2015

Fernando C

só complementando, algumas observações, "data venia":

1. essa linha:
<a href="listarpesquisa.php?id=<?php echo $busca ['id_cat']; ?>"</a>
é desnecessária.

2. também é desnecessário o botão oculto,
use o nome dele no outro botão visivel, normal:
<input type="submit" name="acao" value="Buscar"/>

aproveitando, eu retiraria essa parte:
&& $_POST['acao'] == 'buscar'

sugiro q deixe apenas assim:
if(isset($_POST['acao']))

pq esse botão sempre terá esse valor

3. na SQL: há uma repetição do trecho "FROM site_posts"; verifique.

4. se a coluna "id" for chave primária, não há sentido
a ordenação ("order by..."), pq só deverá haver retorno de um registro (ou nenhum).

e reforço a recomendação de usar PDO e também de evitar linhas desnecessárias, fica mais facil "debugar", ok?
Responder Citar

21/07/2015

Marcos Roberto

Valeu Willian e Fernando pela ajuda mais ainda n deu certo, está dando erro no final
endifi, ainda n consegui trazer os resultados do banco de dados oq pode ser esse erro?
<form action="listarpesquisa.php" method="post">
    <select name="delegacia">
        <option value="0" selected="selected">Selecione uma delegacia</option>
        <?php
        $sql = 'SELECT id_delegacia, nome_delegacia FROM cat_delegacia';
        $stm = $pdo->prepare($sql);
        $stm->execute();
        $dados = $stm->fetchAll(PDO::FETCH_OBJ);
 
        foreach($dados as $delegacia):
        ?>
            <option value="<?php echo $delegacia->id_delegacia;?>"><?php echo $delegacia->nome_delegacia; ?></option>
        <?php endforeach; ?>
    </select>
    <input type="submit" name="acao" value="Buscar"/>
</form>
 
 
<?php if(isset($_POST['acao'])):
    $id_delegacia = $_POST['delegacia'];
 
    $busca ='SELECT id, titulo, diretor, coordenadoria, endereco, conteudo, telefone FROM site_posts ';
    $busca .= 'FROM site_posts WHERE id=:parametro ORDER BY id DESC';
    $stm = $pdo->prepare($busca);
    $stm->bindValue(':parametro', $id_delegacia);
    $stm->execute();
    $posts = $stm->fetchAll(PDO::FETCH_OBJ);
 
    if(empty($posts)):
        echo 'Não foram encontrados nenhum registro!';
    else:
        foreach($posts as $post):
        ?>
        <h1><?php echo $post->titulo;?></h1>
        <p><?php echo $post->conteudo;?></p>
        <p><?php echo $post->diretor;?></p>
        <p><?php echo $post->coordenadoria;?>
        </p><p><?php echo $post->endereco;?></p>
        <?php
    endif;
endif;
?>
Responder Citar

21/07/2015

William (devwilliam)

Uma pergunta Marcos você instanciou uma conexão PDO, eu só postei como ficaria mas vc tem que configurar uma conexão?

Exemplo:
$pdo = new PDO('mysql:host=localhost;dbame=nome_banco', 'usuario_banco', 'senha_banco');
Responder Citar

21/07/2015

Marcos Roberto

Boa tarde Willian!
eu fiz a conexão em PDO mais msm assim está dando erro eu n estou conseguindo pegar o id para mostrar na pagina listarpesquisa.php
eu clico na cidade mais ela n traz os resultados do banco de dados, como eu posso fazer isso?




<?php
	try{
		$pdo = new PDO('mysql:host=localhost;dbname=site_teste','teste','belinha157@');
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
	}catch(PDOException $e){
		echo $e->getMessage();
		exit("Erro ao conectar");
	}
?>
Responder Citar

21/07/2015

William (devwilliam)

Marcos, preciso saber qual a mensagem de erro que está sendo exibida, caso não esteja habilitado a exibição de erros coloque o seguinte código no topo do seu script:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
Responder Citar

21/07/2015

Marcos Roberto

MWillian do jeito q está o código já era para trazer as informações do banco de dados ?, ou tenho q fazer mais alguma coisa.
o erro q está dando é esse
arse error: syntax error, unexpected 'endif' (T_ENDIF) in D:\Marcos\Marcos - Windows\wamp\www\Site_Sindicato\delegacia.php on line 56




aqui está meu código
              <?php
error_reporting(E_ALL);
ini_set('display_errors', 1);?>  
        
            <div id="delegacia">

     <form action="listarpesquisa.php" method="post">
    <select name="delegacia">
        <option value="0" selected="selected">Selecione uma delegacia</option>
        <?php
        $sql = 'SELECT id_delegacia, nome_delegacia FROM cat_delegacia';
        $stm = $pdo->prepare($sql);
        $stm->execute();
        $dados = $stm->fetchAll(PDO::FETCH_OBJ);
 
        foreach($dados as $delegacia):
        ?>
            <option value="<?php echo $delegacia->id_delegacia;?>"><?php echo $delegacia->nome_delegacia; ?></option>
        <?php endforeach; ?>
    </select>
    <input type="submit" name="acao" value="Buscar"/>
</form>
 
 
<?php if(isset($_POST['acao'])):
    $id_delegacia = $_POST['delegacia'];
 
    $busca ='SELECT id, titulo, diretor, coordenadoria, endereco, conteudo, telefone FROM site_posts ';
    $busca .= 'FROM site_posts WHERE id=:parametro ORDER BY id DESC';
    $stm = $pdo->prepare($busca);
    $stm->bindValue(':parametro', $id_delegacia);
    $stm->execute();
    $posts = $stm->fetchAll(PDO::FETCH_OBJ);
 
    if(empty($posts)):
        echo 'Não foram encontrados nenhum registro!';
    else:
        foreach($posts as $post):
        ?>
        <h1><?php echo $post->titulo;?></h1>
        <p><?php echo $post->conteudo;?></p>
        <p><?php echo $post->diretor;?></p>
        <p><?php echo $post->coordenadoria;?>
        </p><p><?php echo $post->endereco;?></p>
        <?php
    endif;
endif;
?>
Responder Citar

21/07/2015

William (devwilliam)

Ele acusa problemas no fechamento de um IF, confere se todas as condições IFs estão sendo fechadas?
Responder Citar

21/07/2015

Marcos Roberto

meu banco de dado
[img:descricao=tabela site_post]http://arquivo.devmedia.com.br/forum/imagem/362394-20150721-143606.jpg[/img]

[img:descricao=cat_delegacia]http://arquivo.devmedia.com.br/forum/imagem/362394-20150721-143646.jpg[/img]
Responder Citar

21/07/2015

William (devwilliam)

Cara o erro é na linha 56, mas acho que você não está postando o script inteiro aqui!
Responder Citar

21/07/2015

Marcos Roberto

Willian estou postando todo o meu script , eu n sei se falta mais alguma coisa para ele funciona

<?php require_once  'includes/header.php';?>

<?php include_once 'config.php';?>
<link rel="stylesheet" type="text/css" href="delegacia/delegacia.css"media="screen"/>
<main>
    
    
    
   <?php
error_reporting(E_ALL);
ini_set('display_errors', 1);?>
         
         
         
  
              <?php
error_reporting(E_ALL);
ini_set('display_errors', 1);?>  
        
            <div id="delegacia">

     <form action="listarpesquisa.php" method="post">
    <select name="delegacia">
        <option value="0" selected="selected">Selecione uma delegacia</option>
        <?php
        $sql = 'SELECT id_delegacia, nome_delegacia FROM cat_delegacia';
        $stm = $pdo->prepare($sql);
        $stm->execute();
        $dados = $stm->fetchAll(PDO::FETCH_OBJ);
 
        foreach($dados as $delegacia):
        ?>
            <option value="<?php echo $delegacia->id_delegacia;?>"><?php echo $delegacia->nome_delegacia; ?></option>
        <?php endforeach; ?>
    </select>
    <input type="submit" name="acao" value="Buscar"/>
</form>
 
 
<?php if(isset($_POST['acao'])):
    $id_delegacia = $_POST['delegacia'];
 
    $busca ='SELECT id, titulo, diretor, coordenadoria, endereco, conteudo, telefone FROM site_posts ';
    $busca .= 'FROM site_posts WHERE id=:parametro ORDER BY id DESC';
    $stm = $pdo->prepare($busca);
    $stm->bindValue(':parametro', $id_delegacia);
    $stm->execute();
    $posts = $stm->fetchAll(PDO::FETCH_OBJ);
 
    if(empty($posts)):
        echo 'Não foram encontrados nenhum registro!';
    else:
        foreach($posts as $post):
        ?>
        <h1><?php echo $post->titulo;?></h1>
        <p><?php echo $post->conteudo;?></p>
        <p><?php echo $post->diretor;?></p>
        <p><?php echo $post->coordenadoria;?></p>
        <p><?php echo $post->endereco;?></p>
        <?php
    endif;
endif;
?>
                
               
            </div><!--delegacia-->
        
    
    
</main>

<?php require_once 'includes/footer.php'; ?>
Responder Citar

21/07/2015

William (devwilliam)

Você colocou 2 vezes esse trecho, retire um deles:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);?>  


E poste novamente o script com a mensagem de erro separada, pois nele aponta a linha onde está dando problema.
Responder Citar

21/07/2015

Marcos Roberto

Willian está dando o msm erro, ja olhei os fechamento do IF n encontrei nada. Me fala uma coisa o código do jeito q está ja era para funciona, ou está faltando mais alguma coisa?

( ! ) Parse error: syntax error, unexpected 'endif' (T_ENDIF) in D:\Marcos\Marcos- Windows\wamp\www\Site_Sindicato\delegacia.php on line 55
Responder Citar

22/07/2015

Marcos Roberto

Boa noite Willian, estou tentando fazer mais n estou conseguindo vc poderia me ajudar eu n sei se falta mais algum código. em pdo estou perdido
Responder Citar

22/07/2015

William (devwilliam)

Marcos, só por desencargo enviei esse script para o meu email wllfl@ig.com.br, encontrando a solução postamos aqui!
Responder Citar

22/07/2015

Marcos Roberto

Boa noite Willian!

Mandei no seu e-mail.


Grato.
Responder Citar