SQL command does not work with select [closed]

0

Follow my complete code:

<?
    include("conectar.php");    

$query = "select * from pagseguro ORDER BY Referencia DESC";
$result = mysqli_query($db, $query) or die();

    if($_REQUEST['alterarStatus']){
        $status = trataaspas($_REQUEST['alterarStatus']);
        $status_explode = explode("|", $status);        
    }

if($status_explode[0]=="aprovado"){

    $SQL = "update pagseguro set StatusTransacao='Aprovado' where Referencia = '".$status_explode[1]."'";  

}elseif($status_explode[0]=="completo"){

    $SQL = "update pagseguro set StatusTransacao='Completo' where Referencia = '".$status_explode[1]."'";  

}elseif($status_explode[0]=="cancelado"){

    $SQL = "update pagseguro set StatusTransacao='Cancelado' where Referencia = '".$status_explode[1]."'";  

}elseif($status_explode[0]=="devolvido"){

    $SQL = "update pagseguro set StatusTransacao='Devolvido' where Referencia = '".$status_explode[1]."'";  

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" language="javascript">
function alterarStatusFunction(val){
if(val =="aprovado"){
if (confirm('Tem certeza que deseja alterar o status dessa transação para APROVADO?')) {
document.formtransacoes.submit();
} else {
return false;
}
}
else if(val =="completo"){
if (confirm('Tem certeza que deseja alterar o status dessa transação para COMPLETO?')) {
document.formtransacoes.submit();
} else {
return false;
}
}
else if(val =="cancelado"){
if (confirm('Tem certeza que deseja alterar o status dessa transação para CANCELADO?')) {
document.formtransacoes.submit();
} else {
return false;
}
}
else if(val =="devolvido"){
if (confirm('Tem certeza que deseja alterar o status dessa transação para DEVOLVIDO?')) {
document.formtransacoes.submit();
} else {
return false;
}
}
}
</script>
</head>
<body>

<table width="100%"  border="0" cellpadding="0" cellspacing="10">

<?  if(isset($total)){ if($total==0){?>
N/D
<? }else{ ?>

<tr><td>
<table width="100%" border="1" cellspacing="0" cellpadding="10" class="t-a">
<thead>
    <tr class="th-a"> 
    <th nowrap="nowrap" align="center" width="7%">Refer&ecirc;ncia</th>
    <th nowrap="nowrap" align="center">Opções</th>
    </tr>
</thead>

<tbody>
<form name="formtransacoes" id="formtransacoes" action="" method="post">
<?
while($obj = mysqli_fetch_object($result)){
    $statustranssacao = $obj->StatusTransacao;
?>
    <tr>
    <td nowrap="nowrap" align="center"><?=$obj->Referencia;?></td>
    <td nowrap="nowrap" align="center">
    <?  if($obj->TransacaoID!=''){?>
    <select style="width:200px" onchange="alterarStatusFunction(this.options[this.selectedIndex].title);" name="alterarStatus">
        <option selected title="0">- Opções -</option>
        <option disabled="disabled">------------------------------------------</option>
        <? if($statustranssacao!='Aprovado' && $statustranssacao!='Completo'){?><option title="aprovado" value="aprovado|<?=$obj->Referencia;?>">Marcar como APROVADO</option><? } ?>
        <? if($statustranssacao!='Completo' && $statustranssacao=='Aprovado'){?><option title="completo" value="completo|<?=$obj->Referencia;?>">Marcar como COMPLETO</option><? } ?>
        <? if($statustranssacao!='Cancelado'){?><option title="cancelado" value="cancelado|<?=$obj->Referencia;?>">Marcar como CANCELADO</option><? } ?>
        <? if($statustranssacao!='Devolvido'){?><option title="devolvido" value="devolvido|<?=$obj->Referencia;?>">Marcar como DEVOLVIDO</option><? } ?>
    </select>
    <? }else{ ?>
    <span>Transação não iniciada!</span>
    <? } ?>
    </td>
    </tr>
<? } } ?>       
</form>
</tbody>

<? } ?>

</table>
</td></tr>

</table>

</body>
</html>

Can anyone tell me why it does not work? It looks like it is not running the query to update the record of the selected item.

    
asked by anonymous 18.09.2017 / 15:55

1 answer

2

In the code there is a string of strings with update if they are not sent to the database they do nothing. Basically what was missing from your code was mysqi_query() .

You can simplify if with a status array.

Be careful about the logic and scope of the variables.

if($_REQUEST['alterarStatus']){
   $status = trataaspas($_REQUEST['alterarStatus']);
   $status_explode = explode("|", $status);

   $status = array('aprovado' => 'Aprovado', 'completo' => 'Completo', 'cancelado' => 'Cancelado', 'devolvido' => 'Devolvido');

   $statusTransacao = isset($status[$status_explode[0]]) ? $status[$status_explode[0]] : false;
   if($statusTransacao){
      $sql = sprintf("update pagseguro set StatusTransacao='%s' where Referencia = '%s'", $statusTransacao, $status_explode[1]);
      mysqli_query($db, $sql) or die(mysqli_error($db)); //linha que executa a sql ;)
   }
   //demais códigos...
    
18.09.2017 / 16:12