0

I have this PHP script:

for ($desc=1; $_POST['ddata'.$desc]; $desc++) { 
    if($_POST['ddata'.$desc]){
        if ($desc == 1){
            $ddata = $_POST['ddata'.$desc];
            $dlocatie = $_POST['dlocatie'.$desc];
        } else {
            $ddata = $ddata.' / '.$_POST['ddata'.$desc];
            $dlocatie = $dlocatie.' / '.$_POST['dlocatie'.$desc];
        }
    }
}

If I have 5 ddata fields, it gives this error: Undefined index: ddata6

How can I check if that fields exists so I can prevent this error?

Marcin Orlowski
  • 72,056
  • 11
  • 123
  • 141
Rawrrr1337
  • 251
  • 5
  • 13

7 Answers7

2

How can I check if that fields exists so I can prevent this error?

use isset() to check if item exists prior accessing it.

Marcin Orlowski
  • 72,056
  • 11
  • 123
  • 141
2

Instead of if($_POST['ddata'.$desc]), you can do:

if(isset($_POST['ddata'.$desc]))

Or:

if(array_key_exists('ddata'.$desc, $_POST))
BenM
  • 52,573
  • 26
  • 113
  • 168
0

You can go for

if(isset($_POST['thekey']))

or more traditionally:

if(array_key_exists('thekey', $_POST))
Pierre Arlaud
  • 4,040
  • 3
  • 28
  • 42
0

Try

 isset($_POST['ddata'.$desc])

Thanks

user7789076
  • 798
  • 2
  • 12
  • 25
0

Check for what fields exist BEFORE you do your loop, by using preg_grep to scan the array for your ddata... fields.

$ddata_fields = preg_grep('/^ddata\d+$/', array_keys($_POST));
foreach($ddata_fields as $field) {
    $ddata = $_POST[$field];
    etc...
}
Marc B
  • 356,200
  • 43
  • 426
  • 500
0

Just add a if(isset($_POST['ddata'.$desc])){} instead of if($_POST['ddata'.$desc]){}

0

Change the section beginning with...

if($_POST['ddata'.$desc]){

To....

for ($desc=1; $_POST['ddata'.$desc]; $desc++) { 
    if (isset($_POST['ddata'.$desc])) {
        $ddata = $_POST['ddata'.$desc'];
    } else {
        continue;
    }
    switch($desc) {
    case "1" :
        $ddata = $_POST['ddata'.$desc];
        $dlocatie = $_POST['dlocatie'.$desc];
    break;
    case "2" :
    case "3" :
    case "4" :
    case "5" :
        $ddata = $ddata.' / '.$_POST['ddata'.$desc];
        $dlocatie = $dlocatie.' / '.$_POST['dlocatie'.$desc];
    break;
    }
}
DevlshOne
  • 8,357
  • 1
  • 29
  • 37