• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ark15

Interagir php e JavaScript

5 mensagens neste tópico

Quero eliminar o registo com id = ao introduzido no form (Apagar). O form chama uma função de Javascript que confirma a eliminação do registo. Dentro do Script (js) tenho a instrução de PHP com mysql para eliminar a requerida linha da tabela. Não sei o que se passa porque a variável $id quando é necessária no código PHP não leva qualquer valor!   

Vai código a seguir:

<html>
<head>
</head>
<body>
<script type="text/javascript">

function confirma()
{
var resposta=confirm('Deseja eliminar este Livro?');


		if (resposta==true) 
			{

				 <?	
				 mysql_query("DELETE from livros WHERE id ='$id' ");
				?>

				alert("Dados apagados")
			} 
		else 
			{
			// se não confirmar faz
			//exit();
			}

}

</script>
<?php
include("ligacao.php");


if ($_POST['id'])
{	

$id = $_POST['id'];
$a = mysql_query("SELECT * from livros WHERE id ='$id' ");

$write = mysql_num_rows ($a);
    	
if (  $write == 1 )
	{
		echo mysql_result($a,0,nome);
		echo "<br>";
		echo mysql_result($a,0,ano);
		echo "<br>";	
		echo mysql_result($a,0,preco);
		echo "<br>";	
		echo mysql_result($a,0,editora);
		//botão para Eliminar

		?>
            <!--botão para Eliminar-->
		<input type="button"submit" value="Apagar Registo" onClick="javascript: confirma()" />
		<?
	}
elseif($write == 0)
	{
		echo "<script language=\"javascript\" type=\"text/javascript\"> alert(\"Livo não existente na base de dados. $variavel_1 \"); </script>";
		echo "";
	}
}
?>


<form id="insere" name="insere" method="post" action="?act=gravar" >
<table width="446" id="id">
  <tr>
    <th width="182" scope="row">ID</th>
    <td width="252"><input name="id" type="text" class="butao"    size="25" maxlength="20" />
    </td>
  </tr>

  <tr>
  

    <th scope="row"> </th>
    <td>
    <input type="submit" name="Submit" value="ok" />
   <input type="reset" name="limpar" value="Limpar">
    </td>
  </tr>
</table>
</form>


</body>
</html>

Alguem me pode ajudar?!

Obrigado desde já

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Javascript é uma linguagem que corre no cliente e o PHP corre no servidor. O que estás a fazer não tem sentido nenhum.

Para fazeres isso, ou fazes um refresh à página, com o id na querystring, ou usas "ajax".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens alguns erros de aprendizagem graves no teu código! Vamos lá distinguir umas coisas.

O PHP é uma linguagem server-side, isto é corre no servidor. Depois de executar tudo o que é PHP, é devolvido ao cliente sob forma de HTML. Vou tentar dar um exemplo:

<?php $texto = "carro"; ?>
<h1>A minha linda pagina</h1>
<p>O meu lindo <?php echo $texto ?></p>

Ao requisitar a página, todo o PHP é interpretado antes de o HTML ser enviado para o cliente. Ou seja, após interpretação do PHP, o que vai para o cliente:

<h1>A minha linda pagina</h1>
<p>O meu lindo carro</p>

Como podes verificar no teu código fonte da página. O que quero dizer com isto? A tua função confirma está mal desenhada:

    if (resposta==true)
    {

        <?   
        mysql_query("DELETE from livros WHERE id ='$id' ");
       ?>
       
       alert("Dados apagados")
    }

Isto está errado, porque antes da página sair, a instrução mysql_query é interpretada pelo PHP, e como a variável ID só é definida lá para baixo, está vazia, e é essa a causa do teu problema.

Solução:

em vez de mysql_query("delete...."), que é PHP, tens de ter javascript. Podes pôr, por exemplo, window.location='nomeDaPagina.php?eliminar=id'.

Depois, já sendo código PHP, colocas um if a perguntar de existe algum id dentro da variável eliminar ($_GET['eliminar']). Se sim, o utilizador pretende eliminar o registo com esse id, senão, pretende efectuar outras acções.

NOTA: o teu código é vulnerável a ataques de hacking. Aconselho-te apenas no fim de resolveres todos os problemas, dedicares-te à segurança do script. Podes ler um artigo escrito na wiki do PAP com várias formas de protecção.

Vi que o Battousai respondeu primeiro, e de forma correcta, mas não queria deitar este texto que me deu um trabalhão a escrever para o lixo! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa a demora a responder, quis responder com calma a tudo que me dizes-te, quero-te agradecer pelas dicas e correcções, e quanto a minha aprendizagem, tenho de estudar sozinho pois tenho uma professora que não percebe nada de PHP e só sabe pedir trabalhos, mas quando chega a hora de os alunos pedirem ajuda a professora ela só sabe dizer GOOGLE ou pede a outro aluno para ir lá ajudar, isso deve-se as minhas falhas graves de aprendizagem, mas estou a fazer por melhorar :D e quanto ao site estar Vulnerável tens razão, mas isto é o um esboço , depois de funcionar , vou melhorar o código para não ser Vulnerável.

Desculpa todo este esclarecimento , mas só te queria agradecer pela tua chamada de atenção, muito obrigado colega :P     

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora