Doubt regarding switch case if

3

Is this right or wrong? It only works for $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;
    }
?>
    
asked by anonymous 30.05.2015 / 21:01

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 igual of PHP operator is == . You were using $estado = 1 , which attempts to assign value.

Read more about PHP operators at:

link

    
30.05.2015 / 21:10
1

Use two equal signs in comparisons, the way you were doing an assignment and this is true you would always enter if :

$estado == 1;

In this way, this compares if the valores of both sides of == are equal.

If you want the comparison to be finer use:

$estado === 1;

In this way, this compares if the valores and tipo on both sides of === are identical.

    
31.05.2015 / 03:22