Skip to content

Instantly share code, notes, and snippets.

@jsfernando
Last active August 29, 2015 14:08
Show Gist options
  • Save jsfernando/0928a6cc17def0a14ecc to your computer and use it in GitHub Desktop.
Save jsfernando/0928a6cc17def0a14ecc to your computer and use it in GitHub Desktop.
Exemplo de Exclusão de Registros com Tabela FREE no Seblod
<?php
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
define('JPATH_BASE', '../../../');
require_once JPATH_BASE . DS . 'includes' . DS . 'defines.php';
require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php';
$app = JFactory::getApplication('site');
$app->initialise();
?>
<link href="/css/bootstrap-responsive.css" rel="stylesheet" type="text/css" />
<link href="/css/bootstrap.css" rel="stylesheet" type="text/css" />
<?php
$id = $_POST["xid"]; // a variavel xid vem com o id da tabela #__cck_core do Seblod
$x= explode('/', $id);
$db =& JFactory::getDBO();
// Nesta query faço a pesquisa com o id da #__cck_core para recuperar o id da tabela free #__sala_aula, onde gravo a reserva.
$query = "SELECT r.id, c.pk, c.cck, c.storage_table, c.id as idcck FROM #__sala_aula r
INNER JOIN #__cck_core c ON r.id = c.pk
WHERE r.id='$x[2]' and c.storage_table = '#__sala_aula' and c.pk='$x[2]'
";
// executo a query
$db->setQuery($query); $rsala_aula = $db->loadObject();
// armazeno em $id_cck o valor do idcck da tabela free #__sala_aula
$id_cck = $rsala_aula->idcck;
// Como tenho que excluir dois registros (1º da Tabela Seblod #__cck_core e 2º da Tabela FREE #__sala_aula)
// Vou abrir uma transação no banco de dados MySQL, pois se em alguma das 2(duas) Tabelas não conseguir excluir, posso voltar ao estado Original.
try
{
$db->transactionStart(); // Inicia a Transação
$query = $db->getQuery(true);
$sql1 = "Delete From #__cck_core Where id = '$id_cck' "; // Query de Exclusão do registro (campo id) da tabela seblod #__cck_core
$sql2 = "Delete From #__sala_aula Where id= '$x[2]' "; // Query de Exclusão do registro (campo id) da tabela free #__sala_aula
$db->setQuery($sql1);
$result1 = $db->execute(); // executa a primeira query $sql1
if($result1 == 1){ // se o resultado da exclusão (query) for igual "1" ... excluiu...
$query = $db->getQuery(true);
$db->setQuery($sql2);
$result2 = $db->execute(); // executa a segunda query $sql2
if($result2 == 1){ // se o resultado da exclusão (query) for igual "1" ... excluiu
$db->transactionCommit(); // efetua a transação com sucesso
// esse será o retorno na div #system da chamada do jQuery
echo "
<div class=\"alert alert-success\">
<button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>
<h4>Sucesso!!!</h4>
A Reserva de Sala de Aula foi excluida!
</div>
";
// caso a query $sql2 não funcione o roolback retornará a transação e mostrará o erro como retorno na div #system
} else {
$db->transactionRollback(); //If Error then rollback
echo "
<div class=\"alert alert-error\">
<button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>
<h4>Erro!!!</h4>
Ocorreu um Erro na Exclusão da Reserva na Tabela Sala Aula!!! <br/>
$e->getMessage()
</div>
";
}
// se o resultado $result1 da primeira exclusão da query $sql1 não for "1", não funcionou a exclusão
} else {
$db->transactionRollback(); //If Error then rollback => reverte a transação iniciada na linha 38
echo "
<div class=\"alert alert-error\">
<button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>
<h4>Erro!!!</h4>
Ocorreu um Erro na Exclusão da Reserva na Tabela cck_Sala_Aula!!!
$e->getMessage()
</div>
";
}
}
catch (Exception $e)
{
// catch any database errors.
$db->transactionRollback();
//JErrorPage::render($e);
echo "
<div class=\"alert alert-error\">
<button type=\"button\" class=\"close\" data-dismiss=\"alert\">×</button>
<h4>Erro!!!</h4>
Ocorreu um Erro na Exclusão da Disciplinas!!! <br/>
$e->getMessage()
</div>
";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment