Jump to content


Photo

Alert Para Uma Ação Em Script Php


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

#16 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

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

Posted 30/03/2006, 12:15

Não sei se essa fo a melhor palavra. Mas é que assim, qa função do PHP que deleta chama-se deleta()
Essa função recebe o ID que está como último argumento da URL (pode ver que tem admin.php?act=manager&section=users&opt=view&CODE=delete&ID=XXX, sendo que, até o o opt=view eu pego com o $_SERVER['REQUEST_URI'] o resto eu adiciono "na mão".

E como eu não mexo muito com JS eu não entendo bem o que foi feito ali, com aquela função (refiro-me à primeira) pois ela usou ?del=OK (não levou em conta os outros argumentos da URL).

Assim o ato de recebr o ID fica "perdido" no código, quando ELE deveria ficar dentro de delete()

Pensei que seria possívl criar a função delete em JS naqueles famosos arquivinhos separados e, dentro de minha função delete em PHP chamar essa em JS.

Entende.

É uma coisa que pra vocês pode ser tão simples mas pramim não.
E olha que já rendeu um pelo de um tópico :lol:

Abraços

#17 .camila

.camila

    Turista

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

Posted 30/03/2006, 17:51

Muita calma nessa hora, rs. Não há complexidade nenhuma no script que sugeri, pelo contrário, ele é bem mais simples que o último que postou. Considerando o que você escreveu acima...

pode ver que tem admin.php?act=manager&section=users&opt=view&CODE=delete&ID=XXX, sendo que, até o o opt=view eu pego com o $_SERVER['REQUEST_URI'] o resto eu adiciono "na mão"


... eu não tinha notado esses parâmetros, mas ainda assim não fica difícil montar a mesma url do exemplo, que com o auxílio do Frenesi, postei da primeira vez. A diferença é que o parâmetro passado seria a url que você comentou, e não somente o ID. Veja:

Link do java script:

<a href="java script: deletar('admin.php?act=manager&section=users&opt=view&CODE=delete&DEL=ok&ID=<?=$v[ID]?>');">Excluir</a>

JavaScript de confirmação:

<script>
  function deletar(url)
  {
	   if (confirm("Confirma exclusão de registro?"))
		   location.href = url;
  }
</script>

Coloquei a url inteira, pois não sei como está sua programação. Note que eu acrescentei mais um parâmetro DEL=ok, o qual só existirá se o usuário optar por deletar o registro (mas pode ser substituído por qualquer outro). O próximo passo será criar a checagem da existência do parâmetro DEL no php:

<?php

if($_GET["DEL"]=="ok")		// em substituição da linha function delete()
{

   print($_GET["ID"];
	
   // executar as instruções de deleção, pegando o ID do user por $_GET["ID"]
   // assim como quaisquer dos parâmetros que foram passados pelo javascript
}

?>

Ficou claro? O que você teria que fazer:

- modificar o link;
- criar o javascript entre as tags <head></head> (por convenção);
- e substituir a linha function delete() pelo if($_GET["DEL"]=="ok") .

Outra coisa que considero relevante, é que se o usuário optar pelo NÃO, a página nem sequer será chamada novamente, ou seja, não haverá acesso a banco nem processamento nenhum além da checagem do javascript.

Tenta implementar isso que sugeri, se não conseguir volta aqui, ou manda MP. A idéia é facilitar, e não complicar.

Qualquer coisa estamos ai.

[]'s

Edição feita por: camila.bianchi, 30/03/2006, 21:14.


#18 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

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

Posted 30/03/2006, 18:07

E dá pra tirar esse &DEL=ok da URL do JavaScript?

Porque daí eu ponho esse código num arquivo functions.js, chamos esse arquivo no meu <head> e dentro da função PHP delete() eu só deixo o referente ao banco de dados.

Tamo quase lá?

Abraços

#19 .camila

.camila

    Turista

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

Posted 30/03/2006, 19:14

E dá pra tirar esse &DEL=ok da URL do JavaScript?


Sim, pois esse parâmetro eu que coloquei, para satisfazer a condição que propus. Quanto a colocar o javascript em um arquivo separado, ótimo!

Se funcionar, posta a resolução ai.

[]'s

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


#20 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

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

Posted 31/03/2006, 12:37

Eu fiz assim:

functions.js

// Confirmação - Exclusão de Usuários

function deletar(url)
{
if ( confirm( "Confirma exclusão de registro?" ) )
location.href = url;
}


Início da admin.php

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src='jscripts/functions.js' type='text/javascript' language='javascript'></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>


Função PHP que lista os usuários

function view()
{
$url = $_SERVER['REQUEST_URI'];
$url = explode( "/", $url );

$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='java script: deletar($url[2]&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;

}
}


Função PHP que deleta os usuários: Por hora não tem nada, apenas um $_GET[ID} e um print básico, pra testar.

A URL para o link:

<a href='java script: deletar($url[2]&CODE=delete&ID=$v[ID]);'>

O $url[2] eu coloquei pra substitui o PHP no meio da função javascript

E, pelo menos no IE, aparece:

Linha: 1
Caractere: 39
Erro: Erro de Sinataxe
Código: 0
URL: http;//localhost/postal/admin.php?act=manager&section=users&opt=view


Ou seja, não funcionou, hehe.

Xiiii.....

Abraços

#21 .camila

.camila

    Turista

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

Posted 31/03/2006, 14:10

Ai ai ai, rs! Esse tópico está indo longe... :blink:

Bom, ao criar o link javascript, os parâmetros passados para a função devem estar entre aspas simples. Vi que você está criando uma variável para armazenar o código html e só depois imprimir (por que não fechar a tag php e escrever o html direto? bem mais fácil e fica mais organizado - só uma sugestão :) ), logo terá que concatenar corretamente, senão vai dar erro. O javascript fica assim:

<a href=\"java script: deletar('$url[2]&CODE=delete&ID=$v[ID]')\";'>Imagem</a>

Obs: notou que aqui no código do fórum a palavra javascript fica separada, né? Não esqueça de mudar quando colocar na sua página (eu sei que foi uma pergunta tola, mas pode acontecer de esquecer de mudar, hehe - sim, aconteceu aqui :P).

Tenta aí.

:snack:

[]'s

Edição feita por: camila.bianchi, 31/03/2006, 15:22.


#22 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

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

Posted 31/03/2006, 18:15

Vou te dar um beijo minha querida.

Finalmente depois de muuuuuuuito sacrifício funcionou.

Obrigado de montão.

Abraços

#23 .camila

.camila

    Turista

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

Posted 31/03/2006, 18:35

Ufaa, até que enfim! :wacko: rs

Precisando, e na medida do possível, estamos aí.

Abraços!

#24 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

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

Posted 31/03/2006, 20:08

E olha que nem ficou tão bagunçado quanto foi pressuposto nos primeiros posts do tópico.

Valeu mesmo.

Abraços




1 user(s) are reading this topic

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

IPB Skin By Virteq