I have a form where I display for the user some phases that a particular contract needs to respect, follow the image of said form:
Ihavealreadydonetheupdate
thatmakestheorderchangeandisworking,myquestionisthefollowing,followingtheexampleoftheimagethatIposted,howcanIchangetheorder3to1andthe1totheorder3inthesameinstant.
Thecodethatdoestheupdatewithoutthisimplementedroutineisthis:
if($_POST["Operacao"] == 'UpFaseObrigatoria') { $sql = "UPDATE 'intranet_cocari'.'gerFaseObrigatoria' SET 'Ordem' = ? WHERE 'gerFaseObrigatoria'.'IdContrato' = ? AND 'gerFaseObrigatoria'.'IdTipoFase' = ?"; if ($stmt = $conn->prepare($sql) ){ $stmt->bind_param( "iii", $_POST["Ordem"], $_POST["IdContrato"], $_POST["IdTipoFase"] ); if ($stmt->execute()){ $aretorno["msg"] = "Registro atualizado com sucesso."; $stmt->close(); } else { $aretorno["msg"] = "Ocorreu um erro na atualização dos dados: " . $stmt->error . ". Verifique."; $aretorno["status"] = "ERRO"; } } else { $aretorno["msg"] = "Ocorreu um erro na preparação dos dados: " . $stmt->error . ". Verifique."; $aretorno["status"] = "ERRO"; } }
I have already achieved a lot with the help of @Felipe Moraes, the code changed according to the suggestion looks like this:
UPDATE gerFaseObrigatoria AS FaseObrigatoria JOIN gerFaseObrigatoria AS gerFaseObrigatoriaUp ON ( FaseObrigatoria.Ordem = ? AND gerFaseObrigatoriaUp.Ordem = 1 ) OR ( FaseObrigatoria.Ordem = 1 AND gerFaseObrigatoriaUp.Ordem = ? ) SET FaseObrigatoria.Ordem = gerFaseObrigatoriaUp.Ordem, gerFaseObrigatoriaUp.Ordem = FaseObrigatoria.Ordem WHERE FaseObrigatoria.IdContrato = ? AND gerFaseObrigatoriaUp.IdContrato = ?
Copy and paste this code snippet into my BD
and the change was successful, but by applying to my page the script gives me the message that the change was made, but it is not being executed.
I think I'm making the error when replacing bind_param
, the code looks like this:
if ($_POST["Operacao"] == 'UpFaseObrigatoria') { $sql = "UPDATE gerFaseObrigatoria AS FaseObrigatoria JOIN gerFaseObrigatoria AS gerFaseObrigatoriaUp ON ( FaseObrigatoria.Ordem = ? AND gerFaseObrigatoriaUp.Ordem = 1 ) OR ( FaseObrigatoria.Ordem = 1 AND gerFaseObrigatoriaUp.Ordem = ? ) SET FaseObrigatoria.Ordem = gerFaseObrigatoriaUp.Ordem, gerFaseObrigatoriaUp.Ordem = FaseObrigatoria.Ordem WHERE FaseObrigatoria.IdContrato = ? AND gerFaseObrigatoriaUp.IdContrato = ? "; if($stmt = $conn->prepare($sql) ){ $stmt->bind_param( "iiii", $_POST["Ordem"], $_POST["Ordem"], $_POST["IdContrato"], $_POST["IdContrato"] ); if($stmt->execute()){ $aretorno["msg"] = "Registro atualizado com sucesso."; $stmt->close(); }else{ $aretorno["msg"] = "Ocorreu um erro na atualização dos dados: " . $stmt->error . ". Verifique."; $aretorno["status"] = "ERRO"; } }else{ $aretorno["msg"] = "Ocorreu um erro na preparação dos dados: " . $stmt->error . ". Verifique."; $aretorno["status"] = "ERRO"; } }