Problem with SQL execution through FORM

0

Code php:

if($_REQUEST['alterarStatus']){ $alterarStatus = trataaspas($_REQUEST['alterarStatus']);}

if($alterarStatus=="aprovado"){

$SQL = "update ps set StatusTransacao='Aprovado' where Referencia = '52'";  

}elseif($alterarStatus=="completo"){
}elseif($alterarStatus=="cancelado"){
}elseif($alterarStatus=="devolvido"){
}

JS Code:

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;
}
}
}

HTML Code:

<form name="formtransacoes" id="formtransacoes" action="" method="post">
<?
while($obj = mysqli_fetch_object($result)){
    $statustranssacao = $obj->StatusTransacao;
?>
    <tr>
    <td nowrap="nowrap" align="center">
    <?  if($obj->TransacaoID!=''){?>
    <select style="width:200px" onchange="alterarStatusFunction(this.options[this.selectedIndex].title);" name="alterarStatus">
        <option selected value="0">- Opções -</option>
        <option disabled="disabled">------------------------------------------</option>
        <? if($statustranssacao!='Aprovado' && $statustranssacao!='Completo'){?><option title="aprovado" value="<?=$obj->Referencia;?>">Marcar como APROVADO</option><? } ?>
        <? if($statustranssacao!='Completo' && $statustranssacao=='Aprovado'){?><option title="completo" value="<?=$obj->Referencia;?>">Marcar como COMPLETO</option><? } ?>
        <? if($statustranssacao!='Cancelado'){?><option title="cancelado" value="<?=$obj->Referencia;?>">Marcar como CANCELADO</option><? } ?>
        <? if($statustranssacao!='Devolvido'){?><option title="devolvido" value="<?=$obj->Referencia;?>">Marcar como DEVOLVIDO</option><? } ?>
    </select>
    <? }else{ ?>
    <span>Transação não iniciada!</span>
    <? } ?>
    </td>
    </tr>
<? } } ?>       
</form>
Well, I can not make this train work. The functions of JS work normally, the problem is to execute the query according to the selected option. Anyone have any tips?

    
asked by anonymous 16.09.2017 / 16:32

2 answers

0

The error is in your PHP code. Instead of putting this:

if($_REQUEST['alterarStatus']){ $alterarStatus = 
trataaspas($_REQUEST['alterarStatus']);}

if($alterarStatus=="aprovado"){

$SQL = "update ps set StatusTransacao='Aprovado' where Referencia = '52'";  

}elseif($alterarStatus=="completo"){
}elseif($alterarStatus=="cancelado"){
}elseif($alterarStatus=="devolvido"){
}

You should therefore:

if($_REQUEST['alterarStatus']){ $alterarStatus = trataaspas($_REQUEST['alterarStatus']);}

    if($alterarStatus=="aprovado"){

        $SQL = "update ps set StatusTransacao='Aprovado' where Referencia = '52'";  

    }elseif($alterarStatus=="completo"){
        $SQL = "update ps set StatusTransacao='completo' where Referencia = '52'";
    }elseif($alterarStatus=="cancelado"){
        $SQL = "update ps set StatusTransacao='cancelado' where Referencia = '52'";
    }elseif($alterarStatus=="devolvido"){
        $SQL = "update ps set StatusTransacao='devolvido' where Referencia = '52'";
    }
    
16.09.2017 / 17:03
0

It is not working because when you submit the form via JavaScript, you automatically reset the variable, and then when you try to read it through php, the page has already reloaded. Do the following test, in form, change the method to "get". These ifs:

if($alterarStatus=="aprovado"){
$SQL = "update ps set StatusTransacao='Aprovado' where Referencia = '52'";  
}elseif($alterarStatus=="completo"){
}elseif($alterarStatus=="cancelado"){
}elseif($alterarStatus=="devolvido"){
}

Switch to:

if(isset($_GET['alterarStatus'])){ //Verifica se existe, pra nao ficar dando erro
    $status = $_GET['alterarStatus']; //aqui pegamos o valor selecionado por get
}

if($status=="aprovado"){
echo $SQL = "update ps set StatusTransacao='Aprovado' where Referencia = '52'";  

}elseif($status=="completo"){
}elseif($status=="cancelado"){
}elseif($status=="devolvido"){
}
    
16.09.2017 / 21:02