Ir para conteúdo

Arquivado

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

donny_

Php + Ajax

Recommended Posts

Olá galera, seguinte, to desenvolvendo um painel de controle aqui de um sistema, estou usando AJAX para abrir as paginas em uma div sem dar refresh, nessa div mostra os resultados de uma pesquisa no DB, o resultado mostra id, nome e coloquei um botaozinho pra deletar, so q agora não consigo deletar sem dar refresh, alguem poderia me dizer algum tuto ou como fazer isso? antes de mais nada, procurei bastante no google, so que nao consegui encontrar... segue abaixo alguns codigos:

 

index.php

//link para abrir a pagina list_filmes.php na div "conteudo_paginas"
<td align="right"><img src="images/icn_lista_clientes.png" />  </td>
<td><a href="#" onClick="java script: abre('list_filmes.php');">Listar Clientes</a></td>

//div que apresenta o conteudo das demais paginas do sistema
		<div id="conteudo_paginas">
		</div>

list_filmes.php

<p><table width="80%" border="0" cellpadding="0" cellspacing="0" align="center" id="table_listar_filmes">
			
				<tr>
					<td width="11px"><?php echo $reg_filmes['id']; ?></td>
				  <td width="80%"><b><?php echo $reg_filmes['nome']; ?></b></td>
					<td width="3%"><a href="ver.php?acao=ver">
					<img src="images/page_add.png" alt="Ver" title="Ver" border="0" /></a>
					</td>
					<td width="3%"><a href="editar_filme.php?acao=editar">
					<img src="images/page_edit.png" alt="Editar" title="Editar" border="0" /></a>
					</td>
					<td width="3%"><a href="controle/acao.php?acao=delRegistro">
					<img src="images/delete.png" alt="Excluir" title="Excluir" border="0" /></a>
					</td>
				</tr>
			</table></p>

se alguem puder me ajudar, fico muito agradecido.. vlw a todos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

hgb7, vlw pela dica, mais nesse tuto ensina a carregar os select sem refresh. mais mesmo assim vlw, vou dar uma analisada e ver se tem como implantar, mais se alguem tiver uma outra dica e puder postar.... vlwww gente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer saber como fazer uma requisição com o XMLHTTPRequest, passando um identificador de algum registro pela url ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo Marcio, dai eu passaria o paramento ?acao=delRegistro para a pagina acao.php, no qual faria a exclusão do registro sem dar refresh. Vlw Marcio....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso aí é Javascript, não PHP...

Procure refinar suas dúvidas e postar no lugar correto, assim além de ser entendido mais facilmente, vai obter ajuda mais rápido e mais adequada.

Não sei como está a função abre(), imagino que seja ela quem faz a requisição, mas tenta assim:

 

abre('list_filmes.php?id=' + valor  + '&outracoisa=' + outrovalor);

Movido: PHP=>Javascript

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio vlw pela ajuda heim, olha so como esta agora

 

//esse é o botao Excluir
<td width="3%"><a href="#" onClick="abre('list_filmes.php?acao=delRegistro');">
					<img src="images/delete.png" alt="Excluir" title="Excluir" border="0" /></a>

//codigo php
if(isset($_GET['acao'])) { echo "<script>alert('Existe o get');</script>"; }

colokei o codigo php na mesma pagina em que esta o botao Excluir, ou seja, na pagina "list_filmes.php", mais mesmo assim não funcionou, pq o alert não apareceu.. sabe onde é o problema?? vlw e obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não não, isso não vai dar certo.

A página já está carregada, e não será carregada novamente.

Você tem que fazer isso com javascript.

Pra funcionar assim, a página em que você está teria que sofrer um reload, com os parâmetros na URL. Está muito confuso do jeito que você está tentando fazer, acho que você deve repensar.

Só pra elucidar, você deve dar o alert usando javascript, após receber a resposta da requisição.

Qualquer coisa posta ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então Marcio, você nao teria algum exemplo ai? tpw, eu nao entendo nada de Java e nem de Ajax, é pq eu comecei a fazer esse sistema em Ajax e agora to sofrendo pra termina... Eu consegui fazer o delete sabe, fazendo assim no botao excluir:

 

list.filmes.php

<td width="3%"><a href="controle/acao.php?acao=delRegistro">
					<img src="images/delete.png" alt="Excluir" title="Excluir" border="0" /></a>
					</td>

dessa maneira ai em cima ele foi pra pagina acao.php e deletou certinho, e na pagina acao.php fiz assim:

 

acao.php

if($_GET['acao'] == "delRegistro") {
 echo '<script>alert("Filme excluido");</script>';
 echo '<script>document.back(-1);</script>';
}

ATT: esse primeiro echo é só um exemplo q eu fiz pra ver se tava passando o parametro "delRegistro" para a pagina acao.php, ai o problema é o seguinte, ele volta para a pagina principal "index.php" e não para a pagina q eu estava em que a pagina "list_filmes.php" estava aberta na div, por isso q eu to apanhando, conseguiu entender? obrigado Márcio, vlw mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver o código da função abre()

Compartilhar este post


Link para o post
Compartilhar em outros sites

java.js

function abre(arquivo){
			var xmlHttp;
			try {
				// Firefox, Opera 8.0+, Safari
				xmlHttp=new XMLHttpRequest();
			}
			catch (e) {
				// Internet Explorer
				try {
					xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch (e){
					try {
						xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
					} 
					catch (e) {
						alert("Seu navegador não suporta AJAX. Atualize-o em www.getfirefox.com");
						return false;
					}
				}
			}
			xmlHttp.onreadystatechange=function() {
				if(xmlHttp.readyState == 1) {
					document.getElementById("conteudo_paginas").innerHTML = "Carregando...";
				}
				if(xmlHttp.readyState == 4) {
					document.getElementById("conteudo_paginas").innerHTML = xmlHttp.responseText;
				}
			}
			xmlHttp.open("GET",arquivo,true);
			xmlHttp.send(null);
		}

Márcio, acima esta o codigo da função "abre". vlww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está esquisito isso, porque a função não dá pra ser reutilizada, já que não retorna um valor para que o programa decida o que fazer.

Vou te sugerir uma coisa bem POG, que pode afetar outras áreas onde (talvez) esta função seja reutilizada. Talvez você devesse copiala com outro nome, apenas pra adicionar uma linha... bom, mas vamos lá:

 

Modificando :

if(xmlHttp.readyState == 4) {
					document.getElementById("conteudo_paginas").innerHTML = xmlHttp.responseText;
				}
para:

if(xmlHttp.readyState == 4) {
					document.getElementById("conteudo_paginas").innerHTML = xmlHttp.responseText;
					alert(''); // ====> aqui você coloca o alert
				}
Veja se é isso o que você quer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo Márcio, copiei com outro nome pra ver, mais tpw, e pra passar o parametro pela url so fazer normal? pois vou passar por exemplo o paramento <a href="#" onClick="abrir('controle/acao.php?acao=deletar&id=50');">Excluir</a>

 

no caso de 50, seria o numero do id do filme, no caso eu colocaria a funcao em php indicando o numero do filme, depois

 

a pagina irá receber esse parametro $_GET['acao'], e identificar ele, se for igual a "deletar" irá ter a rotina do mysql para deletar o registro, e depois de deletar o registro eu faço um 'echo '<script>alert("Registro Excluido");';

 

Resumo: minha duvida é como passar o parametro ?acao=deletar pela url usando JS e Ajax, pois gostaria de deletar o registro sem dar refresh na pagina em que estou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, neste caso você estaria "mandando" por GET para o arquivo controle/acao.php as variáveis acao=deletar e id=50.

É claro que após o evento você tem que esconder o link que faz a requisição, porque o registro não existirá mais.

Usa o console do plugin FireBug no Firefox pra ver a "conversa" do Javascript. Ele te mostra as requisições e a resposta à requisição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo, mais acontece q ainda não consegui passar o parametro para q ele seja executado sem refresh, o q eu disse acima é minha intenção do que gostaria de fazer, mais ainda praticamente tenho nada em relação a isso, pode me ajudar a passar o parametro "acao" e "id" pela url usando Ajax? vlw e desculpe se talvez estou explicando minha duvida de modo errado, mais é q to ficando loko nessa parte de Ajax nem sei pq fui inventar isso, hehehe.... vlw Márcio..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Márcio, axo q consegui, fzd desse modo:

 

<td width="3%"><a href="java script:abre('acao.php?acao=ver&id=<?php echo $reg_filmes['id']; ?>');">
					<img src="images/page_edit.png" alt="Editar" title="Editar" border="0" /></a>
					</td>

abriu normal e passou o parametro "acao" e "id" para a pagina acao.php normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Márcio, pra finaliza mesmo este topico, poderia me responder uma coisa, tpw,

 

nesse codigo abaixo, estou pedindo pra abrir a pagina "acoes.php" com o parametro "deletar", na pagina "acoes.php" se eu fizer o seguinte comando: $acao = $_GET['acao']; echo $acao; <- fzd isto, ele vai imprimir na tela o valor da acao que vai ser "deletar", agora se eu fizer assim:

$acao = $_GET['acao']; echo '<script>alert("O nome da acao é mesmo deletar");</script>'; <- não vai ter resultado nenhum, ou seja, pq nao ta executando o alert? vlw brigado por tudo heim Márcio, principalmente pela paciência.

 

<td width="3%"><a href="java script:abre('acoes.php?acao=deletar');">
					<img src="images/delete.png" alt="Excluir" title="Excluir" border="0" /></a>
					</td>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Donny, isso agora é PHP.

Você precisa entender a questão do Javascript pra fazer o que quer, como o objeto XMLHTTPRequest funciona, seus métodos e propriedades, etc.

Só pra você entender, esse processo aí ocorre no browser, com a página carregada. O PHP é executado no servidor, um momento antes da página ser enviada para o browser. Depois que a página está no browser, não existe mais PHP, não adianta você dizer que "se a variável tal for igual a tal faça isso". Aí, é só javascript.

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.