[Chameleon] Re: Problem with MapNotes

Jimmy Lam j.lam at i-real.nl
Mon Jun 19 10:55:25 EDT 2006


Well, I think I found something that should fix it.
Code lines #297-324 in properties.php from MapNotes:

for ( $i=1; $i<=$nCount; $i++ ){
    $aRec = dbase_get_record_with_names( $dbfFile, $i );
     if ( $aRec['id'] == $nId ){
    dbase_delete_record( $dbfFile, $i );
    dbase_pack( $dbfFile );
--
-
}

With this code, after an Id has been found, its row is deleted from the 
dbf immediately. So if it's not the last row in the dbf, the for loop 
will continue because $nCount is not updated. When $i gets to $nCount 
-1, it will give the bad record warning because there is now 1 less 
record to read. If you delete the record after going through all the 
records, this problem should not occur anymore.
So if you change the above code to:

for ( $i=1; $i<=$nCount; $i++ ){
    $aRec = dbase_get_record_with_names( $dbfFile, $i );
     if ( $aRec['id'] == $nId ){
    dbase_delete_record( $dbfFile, $i );
--
-
}
dbase_pack( $dbfFile );

that should fix the problem. I'll need to test it a bit more but I'm 
pretty positive this will fix it.

Regards,

Jimmy Lam
> Hi list,
>
> I was wondering if truly noone has encountered or could reproduce this 
> error. Well it says warning, technically. I've now tried it on some 
> public sites that have Chameleon samples online and those also have 
> the same error. At first I didn't see them on my server but after 
> checking the error log, they were definitely there. In php.ini, set 
> show_errors to On if you want to see errors on the page instead of in 
> the log. Unfortunately, I still haven't figured it out yet..
>
> Regards,
>
> Jimmy Lam
>> Hi list,
>>
>> While trying to build a widget based on MapNotes that adds points to 
>> an Oracle db, I encountered a problem with retrieving rows from a dbf 
>> file. The line of code in question is at #300 of properties.php of 
>> MapNotes: $aRec = dbase_get_record_with_names( $dbfFile, $i );. I get 
>> an error message under certain circumstances about trying to read a 
>> bad record. I can reproduce this error by following this scenario:
>> Add 2 points on a map using MapNotes (sample_enhanced works)
>> Edit the first point. On submitting, the error will occur.
>> My setup is MS4W 1.5.x with Chameleon 2.4 final. I tried using a 
>> vanilla MS4W 2.0 and Chameleon 2.4 but that has the same result. I 
>> had to edit properties.php to load php_dbase earlier in the file or 
>> I'd get an error about dbase_open being undefined after the 2nd point 
>> but this can't be the reason I think. One thing I noticed while 
>> looking in the dbf files is that sometimes 2 IDs are identical. Not 
>> sure if this has anything to do with it but I'll need to look into it 
>> a bit more. Could anyone else confirm they get the same error?




More information about the Chameleon mailing list