How do you compare a string when it only has one space?

1

I would like to compare my variables, to validate a form:

if ($nome or $categoria or $rua or $numero or $bairro or $abre or $fecha or $email or $telefone == " ") {           
    echo"Tente novamente</b>, faltou preencher corretamente um ou mais campos do formulário.";
}

However, the echo within the code does not execute. I have found that one or more of these variables contains a space!

How can I correct this validation?

    
asked by anonymous 30.04.2018 / 13:38

2 answers

4

You are trying to compare all variables at the same time using only 1 == operator. It does not work. You would have to compare the variables one by one, like this:

if ($nome == " " or $categoria == " " or $rua == " " or $numero == " " or $bairro == " " or $abre == " " or $fecha == " " or $email == " " or $telefone == " "){
   echo "Tente novamente</b>, faltou preencher corretamente um ou mais campos do formulário.";
}

But you can use another way by creating an array with the variables and then checking one by one with a foreach to see if any of them is equal to a blank space:

$posts = array($nome, $categoria, $rua, $numero, $bairro, $abre, $fecha, $email, $telefone);
$valido = true;

foreach($posts as $item){
    if($item == " ") $valido = false;
}

if(!$valido){
   "Tente novamente</b>, faltou preencher corretamente um ou mais campos do formulário.";
}
    
30.04.2018 / 16:13
4

This is simple to solve, just leave the quotes without the space and put the variables inside the trim function:

if (!trim($nome) or !trim($categoria) or !trim($rua) or !trim($numero) or !trim($bairro) or !trim($abre) or !trim($fecha) or !trim($email) or !trim($telefone)) {
    echo"2 - Tente novamente</b>, faltou preencher corretamente um ou mais campos do formulário.";
}

A more complete way, this way it checks to see if it is null or empty:

function verificaCampos(array $campos){
    foreach($campos as $campo){
        if(empty(trim($campo)) or is_null(trim($campo))){
            return false;
        }
    }
    return true;
}

$nome = 'ok';
$categoria = 'ok';
$rua = 'ok';
$numero = 'ok';
$bairro = 'ok';
$abre = 'ok';
$fecha = 'ok';
$email = 'ok';
$telefone = 'ok';

$campos = [
    $nome, 
    $categoria, 
    $rua, 
    $numero, 
    $bairro, 
    $abre, 
    $fecha, 
    $email, 
    $telefone
];

if (!verificaCampos($campos)) {
    echo"Tente novamente</b>, faltou preencher corretamente um ou mais campos do formulário.";
}
    
30.04.2018 / 13:51