Doubt about the case if switch

Asked

Viewed 71 times

3

Is this right or wrong? It only works for me $estado=1;:

<?php
// inicia sessão 
session_start();

// ligação à base de dados
include ('config.php');

// captura valores da compra
$estado = $_REQUEST['estado_compra'];
$id = $_REQUEST['id_compra'];
$acao = $_REQUEST['submit']; 
switch ($acao) {


case 'Alterar':
 if ($estado = 0) {
    $sql_alterar1 = "UPDATE compra_confirmada SET estado_compra = '$estado' WHERE id_compra = '$id'";
    $consulta1 = mysql_query($sql_alterar1); } 

 else  if ($estado = 1) {
      $sql_alterar2 = "UPDATE compra_confirmada SET estado_compra = '$estado'WHERE id_compra = '$id'";
      $consulta2 = mysql_query($sql_alterar2); }  

 else  if ($estado = 2 ) {
      $sql_alterar3 = "UPDATE compra_confirmada SET estado_compra = '$estado'WHERE id_compra = '$id'";
      $consulta3 = mysql_query($sql_alterar3); }  

    header("Location:".$_SERVER['HTTP_REFERER']);
    exit();
    break;
    }
?>
  • 1

    It wouldn’t be right to use ==? For example: if( $estado == 0 )

  • Some of these answers answered him?

2 answers

6


Change your code to:

// inicia sessão 
session_start();

// ligação à base de dados
include ('config.php');

// captura valores da compra
$estado = $_REQUEST['estado_compra'];
$id = $_REQUEST['id_compra'];
$acao = $_REQUEST['submit']; 

switch ($acao) {
    case 'Alterar':
        if ($estado == 0) {
            $sql_alterar1 = "UPDATE compra_confirmada SET estado_compra = '$estado' WHERE id_compra = '$id'";
            $consulta1 = mysql_query($sql_alterar1); 
        } 
        else  if ($estado == 1) {
            $sql_alterar2 = "UPDATE compra_confirmada SET estado_compra = '$estado'WHERE id_compra = '$id'";
            $consulta2 = mysql_query($sql_alterar2); 
        } 
        else  if ($estado == 2 ) {
            $sql_alterar3 = "UPDATE compra_confirmada SET estado_compra = '$estado'WHERE id_compra = '$id'";
            $consulta3 = mysql_query($sql_alterar3); 
        }  

    header("Location:".$_SERVER['HTTP_REFERER']);
    exit();
    break;
}

The operator igual of PHP is ==. You were using $estado = 1, what attempts to make value assignment.

Read more about PHP operators on:

http://php.net/manual/en/language.operators.comparison.php

1

Use two equals signals in comparisons, the way you did was performing an assignment and this is true soon would always enter the if:

$estado == 1;

This way is comparing whether the valores on both sides of == are the same.

If you want the comparison to be more accurate use:

$estado === 1;

This way is comparing whether the valores and the tipo on both sides of === are identical.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.