kool_samule Posted January 12, 2010 Share Posted January 12, 2010 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! Quote Link to comment https://forums.phpfreaks.com/topic/188197-php-notice-undefined-offset/ Share on other sites More sharing options...
Zane Posted January 12, 2010 Share Posted January 12, 2010 I'm just gonna take a shot in the dark on this one, but change $i to 0 $allowed_tables = Array('tbl_table1','tbl_table2','tbl_table3'); // to prevent SQL injection $i = 0; Quote Link to comment https://forums.phpfreaks.com/topic/188197-php-notice-undefined-offset/#findComment-993547 Share on other sites More sharing options...
kool_samule Posted January 12, 2010 Author Share Posted January 12, 2010 Nice shot! Seems to have worked! Bingo, cheers for now dude! Quote Link to comment https://forums.phpfreaks.com/topic/188197-php-notice-undefined-offset/#findComment-993548 Share on other sites More sharing options...
Zane Posted January 12, 2010 Share Posted January 12, 2010 Undefined offset usually means about the same thing as undefined index. And an index is a key in an array. I noticed in your code you were setting $i to 1... and then adding 1 to it again before you ever even used it. Which would make the last ... loop's $i value... undefined. You also could have fixed the problem by putting the $i++ at the end of the loop.. and keeping $i = 1 Quote Link to comment https://forums.phpfreaks.com/topic/188197-php-notice-undefined-offset/#findComment-993552 Share on other sites More sharing options...
kool_samule Posted January 12, 2010 Author Share Posted January 12, 2010 Cool, thanks for the info . . .I'll try and keep it in the memory bank. Quote Link to comment https://forums.phpfreaks.com/topic/188197-php-notice-undefined-offset/#findComment-993558 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.