nireck
nireck

Reputation: 85

Validate with arrays

I'm trying to find a smarter way to validate my inputs with PHP. If the array finds an empty field, it has to add a new element to the array and display an error message.

So far, I haven't succeeded.

The code behind

$felter = array();

if(isset($_POST['submit'])) {

        $produktnavn = $_POST['produktnavn'];
        $kategori = $_POST['kategori'];

        if( !empty( $felter ) ) {

            foreach ($felter as $felt) {
                if ($felter == '') {
                    $fejl = true;
                }
            }            

        }

        else {

            $sql = "UPDATE produkt SET produkt_navn = '$produktnavn', fk_kategori_id = '$kategori' WHERE produkt_id=$id";
            mysqli_query($db, $sql);

            echo "Produktet blev opdateret";

        }

Input form

<input type="text" class="form-control" name="produktnavn" value="<?php echo $produktnavn; ?>">

Upvotes: 4

Views: 68

Answers (1)

Adam T
Adam T

Reputation: 675

The code starts with $felter = array(); which initializes an empty array.

Then, without changing the array itself, you're checking for non-emptiness of $felter

if( !empty( $felter ) ) {
            foreach ($felter as $felt) {
                if ($felter == '') {
                    $fejl = true;
                }
            }             
        }

You're trying to iterate over an array that has not gotten any elements pushed into it. And the logic statement if( !empty ($felter)) will also not work as expected either.

As a test, before the check for !empty, put something in the array with $felter[] = 'Test word'; and then, underneath it... (if you're looking for a non-empty array, the logical checker could be if(count($felter)) { before iterating over the array with foreach ($felter as $felt) { if ($felt == '')

$felter = array();
$felter[] = 'Test word';

if(isset($_POST['submit'])) {

    $produktnavn = $_POST['produktnavn'];
    $kategori = $_POST['kategori'];

    if( count( $felter ) ) {
            foreach ($felter as $felt) {
                if ($felt == '') {
                    $fejl = true;
                }
            }             
     }

Upvotes: 1

Related Questions