[ic] IC4.6 -- Others who bought -- Attempt to set
merchandising::times_ordered::whatever in read-only table
Ryan Hertz
rhertz@gyb.baits.com
Mon, 22 Jan 2001 22:27:13 -0700
Hi list,
I'm trying to get the "Others who bought this, also bought ..."
functionality to work. I'm using IC4.6, referencing the construct
demo. Using the admin UI, Merchandising > Generate "others who..."
(From the admin/build_related.html page):
[perl tables="__UI_META_TABLE__ orderline merchandising"]
my $db = $Db{orderline};
return "NO ORDERLINE table???!" if ! $db;
my $start = tag_data( qw/__UI_META_TABLE__ lookup_exclude
orderline/ );
my $query = "select code,order_number,sku from orderline ";
$query .= " where order_number > '$start'" if $start;
$query .= " order by code";
my $ary = $db->query( { sql => $query } );
for(@$ary) {
my ($line, $on, $sku) = @$_;
push @{$on{$on} ||= []}, $sku;
}
for(keys %on) {
my $ref = $on{$_};
@ary = @$ref;
for(@ary) {
my $sku = $_;
$sku{$sku} = {} unless $sku{$sku};
for (@ary) {
next if $_ eq $sku;
$sku{$sku}->{$_}++;
}
}
}
my $mdb = $Db{merchandising};
for(sort keys %sku) {
my $val = $Tag->uneval( { ref => $sku{$_} } );
$out .= "$_ ==> $val<br>\n";
$mdb->set_field($_, 'others_bought', $val );
}
return $out;
[/perl]
It displays to the browser the correct stuff, but the error.log
reports:
...
209.140.146.41 SACj44vI:209.140.146.41 - [23/January/2001:00:10:51 -0500]
iccvsrw /cgi-bin/iccvsrw/admin/build_related.html Attempt to set
merchandising::others_bought::os29000 in read-only table
209.140.146.41 SACj44vI:209.140.146.41 - [23/January/2001:00:10:51 -0500]
iccvsrw /cgi-bin/iccvsrw/admin/build_related.html Attempt to set
merchandising::times_ordered::os29000 in read-only table
...
I've tested this with my construct demo, my MV3->IC4.6 conversion
project, and the online demo (developer.akopia.com).
I've tried adding "Database merchandising WRITE_ALWAYS 1" to the
db conf, and adding [tag flag write]merchandising[/tag] before the [perl]
call in the Admin page. (It is missing) I tried running the code inside a
test page from my catalog page space (in case it was an admin pages
permission deal) -- no luck.
From Mike Heins
http://developer.akopia.com/archive/interchange-users/2000/msg07035.html,
>You need to do a [flag type=write table=whatever] before you do the [perl
>tables="whatever"]. Once the table is opened read-only, there is no going
>back. If you look for WRITE_CONTROL you can set it to always, but that is
>a bit dangerous.
I figured "no going back" meant that I could remove
merchandising.gdbm and restart -- that doesn't fix it either.
Any ideas? I'm sure that the Akopia boys would like to know that
their demo doesn't work. :-)
Thanks in advance,
-Ryan
Ryan Hertz tel 800-645-BAIT
Webmaster fax 520-645-2588
Advertising Director http://yamamoto.baits.com
Gary Yamamoto Custom Baits, Inc. http://www.insideline.net