Обсуждение: boolean error
I am getting this in the error log file:
ERROR: Bad boolean external representation
'<font >color=red><b>YES></b></font>'
The code that is generating the message is all within the php delimiters
(entire file) and appears several times as follows:
if($r1==0 || $r2==0) {
if($archived=='Y') {
$archived="<font color=red><b>YES</b></font>";
}
;;;
select wares.ware_id,wares.name,category.name,unit_size,
qty_per_shipping_unit,supplier.name,sku,
case when wares.archived='t' then '<font color=red><b>YES</b></font>'
else wares.archived end as archived,
trademark.name
from wares,category,wares_category,supplier_wares,supplier,trademark
where wares.ware_id=wares_category.ware_id and
category.category_id=wares_category.category_id and
wares.ware_id=supplier_wares.ware_id and
supplier_wares.supplier_id=supplier.supplier_id and
wares.trademark_id=trademark.trademark_id";
I do not understand what is wrong? (This apparently worked fine in the
original online web site.)
Does anyone understand this?
Philip Jourdan
It can't understand <font >color=red><b>YES></b></font> as a true or false representation for a boolean value. You need to use either (true or false), (yes or no), or (1 or 0) Roj Niyogi Founder pgHoster - PostgreSQL web hosting http://www.pghoster.com P. Jourdan wrote: > I am getting this in the error log file: > ERROR: Bad boolean external representation '<font > >color=red><b>YES></b></font>' > > The code that is generating the message is all within the php > delimiters (entire file) and appears several times as follows: > > if($r1==0 || $r2==0) { > if($archived=='Y') { > $archived="<font color=red><b>YES</b></font>"; > } > ;;; > > select wares.ware_id,wares.name,category.name,unit_size, > qty_per_shipping_unit,supplier.name,sku, > case when wares.archived='t' then '<font > color=red><b>YES</b></font>' else wares.archived end as archived, > trademark.name > from wares,category,wares_category,supplier_wares,supplier,trademark > where wares.ware_id=wares_category.ware_id and > category.category_id=wares_category.category_id and > wares.ware_id=supplier_wares.ware_id and > supplier_wares.supplier_id=supplier.supplier_id and > wares.trademark_id=trademark.trademark_id"; > I do not understand what is wrong? (This apparently worked fine in the > original online web site.) > Does anyone understand this? > Philip Jourdan > > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/users-lounge/docs/faq.html > >
on 5/2/02 10:31 AM, pippo@videotron.ca purportedly said:
> I am getting this in the error log file:
> ERROR: Bad boolean external representation
> '<font >color=red><b>YES></b></font>'
>
> The code that is generating the message is all within the php delimiters
> (entire file) and appears several times as follows:
>
> if($r1==0 || $r2==0) {
> if($archived=='Y') {
> $archived="<font color=red><b>YES</b></font>";
> }
> ;;;
>
> select wares.ware_id,wares.name,category.name,unit_size,
> qty_per_shipping_unit,supplier.name,sku,
> case when wares.archived='t' then '<font color=red><b>YES</b></font>'
> else wares.archived end as archived,
All return results of a case statement must be coercible to the same type.
Postgres can't coerce '<font color=red><b>YES</b></font>' into a boolean
value (i.e. wares.archived), hence the error. Since booleans can't be cast
to another type, simply return the expected value:
CASE wares.archived
WHEN 't' THEN '<font color=red><b>YES</b></font>'
WHEN 'f' THEN 'f'
ELSE
NULL
END AS archived
Keary Suska
Esoteritech, Inc.
"Leveraging Open Source for a better Internet"
Hi Philip,
>I am getting this in the error log file:
>ERROR: Bad boolean external representation
>'<font >color=red><b>YES></b></font>'
As someone else pointed out, in boolean, you can have Y/1 (true) or N/0
(false); only these values. So when you try to do a boolean check with
this, it doesn't work because this can't be expressed as 0/1 or Y/N, it's a
text string.
>The code that is generating the message is all within the php delimiters
>(entire file) and appears several times as follows:
>
>if($r1==0 || $r2==0) {
> if($archived=='Y') {
> $archived="<font color=red><b>YES</b></font>";
> }
There are a couple of ways to fix this.
Use a different variable name for displaying the "<font color=red>" - wild
suggestion - $display_archived - so then the variable $archived isn't
overwritten when it comes time for it to do your SQL query.
Or, just when you display the output of archived, have a little if statement:
if ($archived == 'y') {
echo "<font color=red>YES</font>";
} else {
echo "ARCHIVED IS NO";
}
Hope that helps a bit.
-----------------
Chris Smith
http://www.squiz.net/
At 04:20 PM 5/2/2002 -0500, Roj Niyogi wrote: >It can't understand > ><font >color=red><b>YES></b></font> > >as a true or false representation for a boolean value. You need to use >either (true or false), (yes or no), or (1 or 0) Right. Someone else had done the code and I am still trying to figure out just what purpose the formatting served as it does not show up on any page. I removed the formatting and left the "YES" and now it all works fine. "Who knows what lies in the hearts of men?... The Shadow does!" :)) Philip Jourdan
I think the formatting should be
<font color=red><b>YES</b></font>
not
<font >color=red><b>YES></b></font>
^ ^
ta
duncan
-----Original Message-----
From: P. Jourdan [mailto:pippo@videotron.ca]
Sent: Friday, May 03, 2002 2:51 PM
To: Surojit Niyogi
Cc: pgsql-php@postgresql.org
Subject: Re: [PHP] boolean error
At 04:20 PM 5/2/2002 -0500, Roj Niyogi wrote:
>It can't understand
>
><font >color=red><b>YES></b></font>
>
>as a true or false representation for a boolean value. You need to use
>either (true or false), (yes or no), or (1 or 0)
Right. Someone else had done the code and I am still trying to figure out
just what purpose the formatting served as it does not show up on any page.
I removed the formatting and left the "YES" and now it all works fine.
"Who knows what lies in the hearts of men?... The Shadow does!" :))
Philip Jourdan
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly