PHP Notice: Undefined offset?

Hi Chaps,

I’m having some trouble with a PHP Form page and an Update Script page.

I’ve tested this on my Apache server and it works fine, but fails on my ‘Live’ IIS server:
Form Code:

<input type='text' name='jobpriority[]' value="<?php echo $row_rsWorkload_All['jobpriority'];?>"/>
<?php echo $row['jobcount']; ?>
<?php echo $row_rsWorkload_All['jobpriority'];?>
<?php
	$table_name = $row_rsWorkload_All['fromtable'];
        $item_id = $row_rsWorkload_All['jobid']; 
?>

<input type="hidden" name="setpriority[]" value="<?php echo $table_name; ?>:<?php echo $item_id; ?>" />

The ‘hidden’ input did look like this:

<input type="hidden" name="setpriority[]" value="<?php echo $table_name; ?>:<?php echo $item_id; ?>:<?php $_POST ['jobpriority']; ?>" />

But I had to remove the

:<?php $_POST ['jobpriority']

bit to get the page to open on the IIS server.
Since removing the code, the page opens but when I ‘click send’ to pass the data to the script page, I get this error:

PHP Notice: Undefined offset: 22 in C:\Inetpub\XxxxxXxxxx\NewFiles\Xxxxx\Xxxxx\scripts\script.php on line 64

Script.PHP:

$allowed_tables = Array('tbl_table1','tbl_table2','tbl_table3'); // to prevent SQL injection
 $i = 1;
foreach($_POST['setpriority'] as $var) {
    $arr = explode(':', $var);
    if(in_array($arr[0], $allowed_tables)) {
        $table = $arr[0];
        $rowid = $arr[1];
        $priority = $_POST['jobpriority'][$i];
		$i++;
        if(is_numeric($rowid)) {
            // run your SQL query here to update $table where row matches $rowid
            $query = sprintf("
			UPDATE $table 
			SET jobpriority='$priority' 
			WHERE jobid=$rowid");
            $result = mysql_query($query, $conndb2) or die(mysql_error());
			$mess = $ref = $_SERVER['HTTP_REFERER']; header( 'refresh: 0; url='.$ref);
        }
    else {
  $mess = "<p>There was a problem</p>";
}
	}
}

I’m a bit stuck as I have around 10 pages that use the same sort of functionality, so if anyone can help with this, I’d be most grateful!

I don’t see 64 lines in that script.php, but if you cancelled have of the value of the hidden field, then this line


$rowid = $arr[1];

should give an error. The explode only gives one value, because you eliminated the ‘:’ and the second value.

Hi Guido,
Line 64 is:

$priority = $_POST[‘jobpriority’][$i];

I didn’t add all of the script.php file as it contains connection/cookie/etc…
How can I get round the problem?, I have two arrays, which I need to some how add together, so that the ‘jobpriority’ field, matches up with the table and jobid?

I guess this solved your problem?

Yeah, seems to have done the trick.
I’ll check/test the remaining files this afternoon and keeping my fingers crossed.