Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
>
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() ?>
}
}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
>
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?
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;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.
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.