Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

donkeykong__

[Resolvido] Clique dinâmico

Recommended Posts

Seguinte, vou postar o código porque não sei como explicar direito rs :

 

               <?php
                   include("scripts/config.php");
                   $p_tradicionais = mysql_query("SELECT * FROM pizzas_tradicionais ORDER BY id_produto");
                   while($var = mysql_fetch_array($p_tradicionais)){ 
                       $id     = $var['id_produto'];
                       $nome   = $var['nome'];
                       $des    = $var['descricao'];	
                       $imagem = "../pizzas/".$id.".gif";
                       if(!is_file($imagem)) $imagem = "../pizzas/".$id.".jpg";
                       if(!is_file($imagem)) $imagem = "../pizzas/".$id.".png";
                       if(!is_file($imagem)) $imagem = "../pizzas/naodisponivel.gif";

               ?>
                   <li class="img">
                       <a href=""><img src="<?php echo $imagem; ?>"></a>
                       <span class="nome"><?php echo $id." - ".$nome; ?></span>	
                   </li>
               <?php } ?>

 

Preciso que quando clicar no link ele me mostre o valor das outras variaveis dentro de uma outra div. O problema é, tem que ser na mesma página, sem da refresh e nem mostrar o id na url, porque já passo o id do cliente que estou cadastrando o pedido. Não é pra fazer, peço apenas uma orientação de vocês do fórum.

 

 

Feliz Natal pra todos!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

a principio, não é necessário ajax.

Apenas javascript puro, sem requisições (as)?sincronas ao servidor resolvem.

 

http://wbruno.com.br/blog/2011/03/12/principio-de-menu-em-abas/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, surgirão novas opções rsrs enquanto esperava desenvolvi ou melhor adaptei o código do David CHC pro que eu estou querendo usando jquery + php ;). Depois de algumas alterações o código funcionou, exceto por esse detalhe:

 

pagina index.php

<script type="text/javascript" src="scripts/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	$("a.teste").click(function(){
		$("#descricao").html('<p>Carregando...</p>');
		$.post("cidades.php",
		{[b]id_produto[/b]:$(this).val()},
			function(valor){
				$("#descricao").html(valor);
			})

		})
	})
</script>
</head>
<body>
<form action="" method="post">

<?php
	$sql = "SELECT * FROM pizzas_tradicionais ORDER BY id_produto ASC";
	$qr = mysql_query($sql) or die(mysql_error());
	while($ln = mysql_fetch_array($qr)){
		$nome = $ln['nome'];
		echo '<a href="#" class="teste">'.$nome.'</a><br />';
	}
?>
</form>

<!-- Aqui é onde os dados são carregados após o click -->
<div id="descricao">Clique em uma imagem para ver nome, descriçâo e preço.</div>

 

página processa.php

<?php
include("scripts/config.php");

$id = $_POST['nome'];
$sql2 = mysql_query("SELECT * FROM pizzas_tradicionais WHERE id_produto = '$id'") or die(mysql_error());
$linha = mysql_num_rows($sql2);

if($linha < 1){
echo "Não retornou resultados.";
}else{

while($p = mysql_fetch_array($sql2)){
$descricao = $p['descricao'];
echo $descricao;
}}
?>

 

A questão é esse código não está reconhecendo a variável -- $id = $_POST['nome']; -- logo não da pra puxar os detalhes do produto pelo id!

 

Onde estou fazendo errando?

 

Obrigado pela ajuda!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
$id = $_POST['id_produto'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

o this.val não faz sentido nesse contexto, pois você está trabalhando com a tag <a>, e não com um <input />

 

faça o seguinte:

 

{id_produto:$(this).attr('href')},

e ai:

 

 

                while($ln = mysql_fetch_array($qr)){
                       echo '<a href="'.$ln['id_produto'].'" class="teste">'.$ln['nome'].'</a><br />';
               }

 

aprenda a debugar ajax:

http://wbruno.com.br/blog/2011/04/14/como-debugar-ajax-firebug/

 

 

Porém, volto a dizer que não era necessário usar ajax, e você está disperdiçando recursos do servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po...vlw willian vou ler o artigo que tu postou, troquei as linhas mas o 'attr' não funcionou, tentei o each tbm, e nada o escript para no if =/. Não mando muito bem em jquery e javascript ainda mas vou continuar tentando...acho estranho não funcionar, apenas troquei os selects pela tag 'a', imaginei que daria esses erros heheh mas ta ai, gosto de de desafios e vou continuar tentando e se você quiser me ajudar com seu conhecimento fico grato Willian =) VLW!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

para debug, faça o seguinte:

 

        $(document).ready(function(){
               $("a.teste").click(function(){
                   alert( $( this ).attr('href') );

você fez a alteração que pedi no php, também ne?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza! fiz isso e abriu um alert com uma "#" somente. Alterei a parte do php exceto pelo href="" pq tem q ficar na mesma página. Será quee é isso?

 

-- Se eu coloco assim:

 

echo '<a href="'.$ln['id_produto'].'" class="teste">'.$ln['nome'].'</a><br />';

 

o alert mostra o id... achamos a fonte do mal heheheh

Compartilhar este post


Link para o post
Compartilhar em outros sites

é sim.

 

deixe o php assim:

echo '<a href="'.$ln['id_produto'].'" class="teste">'.$ln['nome'].'</a><br />';

 

e o js assim:

$("a.teste").click(function( e ){
   e.preventDefault();//vai forcar para que fique na mesma pagina

   alert( $( this ).attr('href') );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conhecimento é tudo kkkk to num nível básico de javascript ainda não conseguiria resolver esse problema sozinho.

Pow vlw Willian, agora ta pegando o id certim. VLW pode fechar o tópico!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.