Ir para conteúdo

POWERED BY:

Arquivado

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

DeveloperJrC#

Função PHP Sendo Chamada Por JavaScript POO

Recommended Posts

Pessoal estou iniciando em PHP e preciso de uma ajuda, tenho um arquivo HTML:

 

<?php

include("daoAlunos.php");

$obj = new Alunos();

?>
<html>
	<head>
		<script type="text/javascript">
		function confirmDelete() {

			if (confirm("Voce tem certeza que deseja excluir esses dados!"))
			{
			}
		}
		</script>
	</head>
	<body>
		<input type='button' value='Excluir' onClick='confirmDelete()>
	</body>
</html>

E o arquivo daoAlunos:

 

<?php

include("connect.php");

class Alunos
{
	function deleteAlunos($id){

		$sql = "DELETE TB_ALUNO WHERE ID = $id";

		$rs = mysql_query($sql);
	}
}

?>

Em PHP eu chamaria assim:

 

$obj ->deleteAlunos($id)

Mas acontece que preciso fazer a chamada no JavaScript dentro da condição do IF

Compartilhar este post


Link para o post
Compartilhar em outros sites

oque você pode fazer, é ou redirecionar com um window.location.href para uma página php, que execute exatamente dessa forma que você mostrou.

 

ou então, disparar uma requsição ajax no servidor, com alvo num arquivo php, também exatamente desse jeito ai que você postou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oque você pode fazer, é ou redirecionar com um window.location.href para uma página php, que execute exatamente dessa forma que você mostrou.

 

ou então, disparar uma requsição ajax no servidor, com alvo num arquivo php, também exatamente desse jeito ai que você postou.

 

 

Nossa, obrigado pela resposta rapida !!!

 

então não consigo simplesmente chamar a função pelo javaScript ?

Tentei dessa forma mas acho que não é a correta:

 



function confirmDelete() {

	if (confirm("Você tem certeza?!"))
	{
		<?php $obj->deleteAlunos() ?>
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

não.. não tem como fazer dessa forma ai.

 

veja, o php roda antes do javascript.. pois primeiro o servidor processa todo o php, gera todo o HTML que tiver que gerar, e só depois disso que qq script javascript começa a rodar.

 

Só vejo essas 2 alternativas:

-> redirecionar para uma página php que execute

-> disparar uma requisição ajax

Compartilhar este post


Link para o post
Compartilhar em outros sites

não.. não tem como fazer dessa forma ai.

 

veja, o php roda antes do javascript.. pois primeiro o servidor processa todo o php, gera todo o HTML que tiver que gerar, e só depois disso que qq script javascript começa a rodar.

 

Só vejo essas 2 alternativas:

-> redirecionar para uma página php que execute

-> disparar uma requisição ajax

 

 

é percebi que ele roda todo o PHP primeiro.

Executei o codigo e estava deletando o registro sem nem antes clicar no botão.

Enfim como seria o disparo da requisição via ajax? muito complicado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

deletar.php

<?php
function getGet( $campo ){
	return isset( $_GET[ $campo ] ) ? $_GET[ $campo ] : '';
}



if( getGet('id_pessoa') )
{
	$id_pessoa = (int)getGet('id_pessoa');
	$sql = "DELETE FROM pessoa WHERE id = {$id_pessoa}";
	
	echo $sql;
}
ai você executa a query normalmente..

 

e aqui está a 'mágica'

<html>
<head>
<script type="text/javascript">
function id( el ){
	return document.getElementById( el );
}
function getHTTPObject(){
	if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	}else if(window.ActiveXObject){
		var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
		for(var i = 0; i < prefixes.length; i++){
			try{
				return new ActiveXObject(prefixes[i] + ".XMLHTTP");
			} catch (e) {}
		}
	}
}
/* http://www.javascriptkit.com/jsref/event.shtml */
function disablelink( e ){
	var evt = window.event || e
	if (evt.preventDefault) //supports preventDefault?
		evt.preventDefault()
	else //IE browser
		return false
}
window.onload = function()
{
	var as = id('lista').getElementsByTagName('a');
	for( i in as ){
		as[i].onclick = function( event ){
		
			var arq = this.href;
			var xmlHttp = getHTTPObject();
			xmlHttp.open( "GET", arq, true );
			xmlHttp.onreadystatechange = function(){
				if (xmlHttp.readyState == 4){
					id('result').innerHTML = xmlHttp.responseText;
				}      
			}
			xmlHttp.send( null );
			
			return disablelink( event );
		}
	}
}
</script>
</head>
<body>
	<h1>Listagem nomes</h1>
	<table id="lista">
		<thead>
			<tr>
				<th>Nome</th>
				<th>Excluir</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td>William</td>
				<td><a href="deletar.php?id_pessoa=1">[x]</a></td>
			</tr>
			<tr>
				<td>Bruno</td>
				<td><a href="deletar.php?id_pessoa=2">[x]</a></td>
			</tr>
		</tbody>
	</table>
	<div id="result"></div>
</body>
</html>
veja, oque você der 'echo', lá no deletar.php, vai aparecer na #result, sem refresh, logo depois que você clicar num dos links.

 

Agora começa a ficar interessante, pois se você deletou, então precisa atualizar a tabela..

ai faça outra requisição ajax, para refazer a tabela.

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.