Jump to content


Photo

Alert Para Uma Ação Em Script Php


  • Faça o login para participar
23 replies to this topic

#1 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 28/03/2006, 15:52

Assim, pra não ficar confuso vou colocar bem certinho tudo o que preciso:

Tenho uma função no PHP que não faz nada a não ser consultar o BD e listar os registros em tabelas.

Isso não tem nada a ver com JavaScript?

Eu sei, calma! :D

O fragmento do script é esse:

function view()
{
	$query = mysql_query( "SELECT * FROM users" ) or die ( error( mysql_errno() . ": " . mysql_error() ) );
	
	while($v = mysql_fetch_array( $query ) )
	{
		$hContent = "
			<table width='100%' border='0' cellspacing='0' cellpadding='0'>
			<tr>
			<td>
			<div class='globalbox'>
			<table width='100%' border='0' cellspacing='0' cellpadding='0'>
			<tr>
			<td>
			<table width='100%' border='0' cellspacing='0' cellpadding='0'>
			<tr>
			<td>
			<div class='titlemenu'>Lista de Usuários Cadastrados</div>
			</td>
			</tr>
			<tr>
			<td>
			<table width='100%' border='0' cellspacing='0' cellpadding='0'>
			<tr align='center'>
			<td width='6%' class='global'><strong>#ID </strong></td>		
			<td width='19%' class='global'><strong>Nome de Usu&aacute;rio </strong></td>
			<td width='40%' class='global'><strong>Nome Completo </strong></td>
			<td width='19%' class='global'><strong>Data de Registro </strong></td>
			<td width='12%' class='global'><strong>Administrador? </strong></td>
			<td width='4%' rowspan='2'>
			<div align='center' style='padding-right: 3px;'>
			<a href='" . $_SERVER['REQUEST_URI'] . "&CODE=delete&ID=$v[ID]'>		  
			<img src='style/images/delete.gif' alt='Deletar Usu&aacute;rio' width='15' height='15'></a></div>
			</td>
			</tr>
			<tr align='center'>
			<td class='global'>$v[ID]</td>
			<td class='global'>$v[username]</td>
			<td class='global'>$v[name]</td>
			<td class='global'>$v[joined]</td>
			<td class='global'>$v[is_admin]</td>
			</tr>
			</table>
			</td>
			</tr>
			</table>
			
			</td>
			</tr>
			</table>
			</div>
			</td>
			</tr>
			</table><br>
			";
	
	print $hContent;
			
	}
}

Bom se perceberam o link que se forma na pequena imagem é formado por querys.

Ainda não envolve JavaScript.

Calma!

Daí que a ação do último item dessa url do link (que serve para deletar o usuário especificado) -- &ID=$v[ID] -- quem realiza é uma outra funçãozinha PHP ( delete() ).

Agora entra JavaScript!

Já procurei aqui no fórum e preciso de um Alert com os manjados botões SIM / NÃO porém que funcionei quando eu clicar no link que por sua vez chama a função delete()

Detalhe: Eu até consegui isso. Mas a página é carregada inteira e só depois aparece o ALERT.
Entenderam?

A minha idéia é o ALERT aparecer tendo como fundo a tela da listagem ainda. Só depois que eu clicasse em SIM (ou NÃO) aconteceria alguma coisa.
No caso de SIM executaria a função delete() que eu criei, caso contrário voltaria para a listagem.

Espero que possam me ajudar :assobio:

Abraços

#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/03/2006, 17:19

<script>
  function deletar(){
	 if (confirm("Tem certeza?"))
		alert("Aqui é porque confirmou.");
		//location.href='pagina_que_deleta.php';
	 else{
		alert("Aqui é porque recusou.");
	 }
  }
</script>
<a href="java script:deletar();">Deletar</a>

Ainda assim, não ficou muito claro mas dá uma olhada no que eu intendi.

Flws...
:DAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 28/03/2006, 17:50

Não é bem isso.
Acho que escrevi tanto que acabou enrolando.

Acho que errei o nome também.
Eu preciso é que ao clicar nessa imagem, apareça esse "confirm" (era esse o nome) e se eu clicar em OK ele "aciona" a função deletar() do PHP caso contrário ele permaneceria na página de listagem.

Sendo que, a caixinha do confirm deve aparecer sem sequer abrir uma página qualquer.

Abraços

Edição feita por: Jackpot, 28/03/2006, 17:54.


#4 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/03/2006, 18:00

Bom, parte está de acordo com o que você pediu.
Só ficaria pendente a parde de não abrir uma página, executar a função php na própria página não é isso?
Ai teria que pesquisar mais.. :(

Flws...
;) Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#5 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 28/03/2006, 18:25

Veja esse desenho tosco "Powered by Paint" que eu fiz :P
Autógrafos só depois do meio dia :lol:

Posted Image

Deu pra entender mais ou menos como que eu preciso?

Abraços

#6 .camila

.camila

    Turista

  • Usuários
  • 51 posts
  • Sexo:Não informado

Posted 28/03/2006, 19:07

Hm, olha eu me intrometendo no tópico alheio... rs

Enfim, também precisei fazer isso, e na época não encontrei ninguém para me orientar a respeito, então meio que "improvisei". Não sei se é muito seguro fazer dessa forma, mas dê uma olhada:


Link de excluir:

<a href="java script: deletar('<?=$v[ID]?>');">Excluir</a>

Javascript do Frenesi (adaptado):

<script>
  function deletar(id) 
  {
	   if (confirm("Tem certeza?"))
	   {
		   //alert("Aqui é porque confirmou.");
		   location.href = 'pagina_atual.php?DEL=ok&ID='+id+'';
	   }
  }
</script>

E na parte do php você coloca:

<?
if($_GET["DEL"]=="ok")
{
	// instruções para a deleção efetiva, buscando o ID do registro por $_GET["ID"]
}
?>


Bom, penso dá para melhorar, pois nem sempre utilizar $_GET para esse tipo de coisa é muito viável. Mas se tiver uma forma melhor de fazer, estarei por aqui esperando respostas também, hehehe (sim, curiosa full time :D)

[]'s

Edição feita por: camila.bianchi, 28/03/2006, 19:26.


#7 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/03/2006, 19:37

UAU! :o
Ótimo Camila, acho que agora você respondeu o tópico. Pela minha análise não tem porque dar erro, só precisa juntar o java com o script, foi falha minha, hehe.
Sobre o $_GET, não vejo outra saída não, acho que essa seria a solução.

Aguardemos então a resposta do Jackpot.

Flws...
^_^Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#8 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 29/03/2006, 12:26

Hum pra mim não é muito prático.
Pois a ação de deletar o usuário é feita pela função PHP delete(). É nela que vai o $_GET['ID']

Eu tava pensando eu por o código do confirm dentro da função delete() que eu tenho. Daí se for pressionado o SIM ele executa as query e deleta o usuário.
Caso contrário (pressionado NÃO) ele só cancela ação fazendo a caixinha desaparecer, retornando, assim, para apágina da listagem.

Acho que agora eu me fiz entender. Eu...espero...certo?

:D

Abraços

#9 .camila

.camila

    Turista

  • Usuários
  • 51 posts
  • Sexo:Não informado

Posted 29/03/2006, 12:48

Hmm, vamos pensar (ai, pior que estou achando que deve ter uma forma mais simples de fazer isso, hehe). Bom, você está chamando a mesma página através do link:

<a href='" . $_SERVER['REQUEST_URI'] . "&CODE=delete&ID=$v[ID]'>

Certo?

Ainda não consegui visualizar como você chama a sua função delete(), mas vou tentar explicar a opção que postei:

O link excluir chama um javascript, que por sua vez pede confirmação de exclusão. Se o usuário optar pelo sim, a mesma página é chamada e através do if($_GET["del"]) as instruções de deleção serão executadas. Caso opte por não deletar, simplesmente não acontece nada, a página nem sequer é chamada novamente.

Pela forma como você está tentando fazer eu não consegui visualizar como você chama a função delete(), e qual a melhor maneira de inserir o javascript nela, além do fato da mesma página ser chamada de qualquer forma, independente de haver confirmação de exclusão ou não.

Mas ainda assim, tem como você postar a parte em que está chamando a função delete() ?

[]'s

Edição feita por: camila.bianchi, 29/03/2006, 12:51.


#10 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 29/03/2006, 12:57

Eu faço normalmente.
O link que a imagem cria é assim, dentro de um loop:

<a href='" . $_SERVER['REQUEST_URI'] . "&CODE=delete&ID=$v[ID]'>
<img src='style/images/delete.gif' alt='Deletar Usuário' width='15' height='15'></a>


A função PHP para deletar, enquanto não se cria o JavaScript, é:

function delete()
{
$ID = $_GET['ID'];

print $ID;
}

Ou seja, eu só resgato o ID passo pela URL do link e imprimo pra ver se está certo.

A janela deve aparecer aqui entre o click e a página, entende?
Ao clicar no link ele abre a janelinha confiormando a exclusão.
O cara clica em SIM e ele aciona a função (que será criada depois), senão apenas desaparece, sem chamara a função.

Sacou?

Abraços

#11 .camila

.camila

    Turista

  • Usuários
  • 51 posts
  • Sexo:Não informado

Posted 29/03/2006, 13:28

Hehehe, "saquei" sim Bruno, pois foi exatamente dessa forma que tentei fazer há algum tempo atrás. Porém, vira uma "salada" de php+javascript e levando em consideração o que você quer...

A minha idéia é o ALERT aparecer tendo como fundo a tela da listagem ainda. Só depois que eu clicasse em SIM (ou NÃO) aconteceria alguma coisa.


... é mais prático chamar o php pelo javascript, do que chamar o javascript através do php. A não ser, é claro, que exista uma maneira de executar o php dentro do mesmo bloco de instruções javascript. Até hoje não consegui :wacko: (sim, ainda aprendendo).

Mas vamos tentando. Uma forma deve ter =)

[]'s

Edição feita por: camila.bianchi, 29/03/2006, 16:23.


#12 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 29/03/2006, 14:13

Faz assim se você entendeu minha idéia, o que coisa rara de alguém conseguir fazer :P Me passa o código que eu deveria utilizar e eu me encarrego de montar a salada com azeite e vinagre :lol:

Eu me viro, eu só não tenho o código.

Abraços

#13 .camila

.camila

    Turista

  • Usuários
  • 51 posts
  • Sexo:Não informado

Posted 29/03/2006, 16:01

...

Editado, pois o código não funciona, hehe (só para não manter referência incorreta).

Edição feita por: camila.bianchi, 30/03/2006, 16:55.


#14 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 29/03/2006, 18:28

Olha só:

Eu achei esse código enquanto fuçava no fonte do phpMyAdmin:

function confirmLink(theLink, theSqlQuery)
{
	// Confirmation is not required in the configuration file
	// or browser is Opera (crappy js implementation)
	if (confirmMsg == '' || typeof(window.opera) != 'undefined') {
		return true;
	}

	var is_confirmed = confirm(confirmMsg + ' :\n' + theSqlQuery);
	if (is_confirmed) {
		if ( typeof(theLink.href) != 'undefined' ) {
			theLink.href += '&is_js_confirmed=1';
		} else if ( typeof(theLink.form) != 'undefined' ) {
			theLink.form.action += '?is_js_confirmed=1';
		}
	}

	return is_confirmed;
} // end of the 'confirmLink()' function

Ele faz exatamente o que quero e sem a necessidade de fazer a "salada".
A função tem dois parâmetros uma com o link e a outra com a query SQL a ser executada.

Sua utilização é:

onclick="return confirmLink(this, 'DELETE FROM `users` WHERE `ID` = 1 LIMIT 1')"

Daí eu ponho essa função num arquivo JS e chamo ela onde quero, no caso na imagem.

Cabe certinho pra mim. Dá pra adaptar? sabe dar uma arrumadinha no código e tal.
E explicar hehe?

Abraços

#15 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 30/03/2006, 01:12

Bruno, você falou tanto que acabou não falando nada =P

Eu não entendi muito bem.. o que eu tinha entendido, era o que a Camila postou (primeiro script). .
Mas você falou que não seria muito prático, pq?
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq