Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread Ashley Sheridan
On Mon, 2009-08-10 at 15:40 -0300, Martin Scotta wrote:
> This "intelligence" is given by the laziness of the && operator.
> 
> $res = a() && b(); # if a() is false then b() does not evaluate
> $res = a() & b(); # b() evaluates no matter a()'s result
> 
> so, order matters.
> 
> On Mon, Aug 10, 2009 at 3:29 PM, Andrew Ballard  wrote:
> 
> > On Mon, Aug 10, 2009 at 1:50 PM, Ralph Deffke
> > wrote:
> > > this is not "intelligence" its just pure math. the '&&' says if BOTH
> > > expressions are true then the whole expression is true.
> > >
> > > so if the first one is false, the whole is false, why checking the next
> > one
> > > in the underlaying C it would be something like this
> > > {
> > > if ( expression == false ) return false;
> > > if ( expression == false) return false;
> > > return true;
> > > }
> > >
> > > ralph
> > > ralph_def...@yahoo.de
> >
> > That's logically correct, and while PHP does implement this
> > "short-circuit" logic, not all languages do. In that regard, I
> > appreciate what John meant by saying it makes it look "more
> > intelligent." Some languages evaluate each of the conditions to their
> > respective boolean results before evaluating the logical operators.
> >
> > Andrew
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
> 
> 
You get the same thing in bash. You call a bunch of commands to run in
series, but the next one only runs if it's predecessor was successful.
It's frequent to see this sort of command chain:

./configure && make && make install

Thanks,
Ash
http://www.ashleysheridan.co.uk


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread Adam Randall
That should be !== not !===

Adam.

On Mon, Aug 10, 2009 at 12:17 PM, Ralph Deffke wrote:
> for the same story there are the

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



AW: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread Ralph Deffke
the single & is a logical AND so a() NOR b() is evaluatet ! its usually used on 
binary integer.
e.g. 0x0001 & 0x0001 = 0x0001 equlals TRUE while 0x0002 & 0x0001 equals FALSE 

so something like $a & $b guides to some very interisting results depending of 
their values
but nothing u expect.

while && tells 'evaluate' the expressions on both sites and combine its results 
in an AND operation.

thats why compilers and interpreters do have a definition what value TRUE has.
its very likely that TRUE is 1 and false is 0

lets say 
$a = 1
$b = 1

then 
$a & $b is 1 or true and it would give the same like
$a && $b in that case

at that point its also to mention that an empty string in PHP is NOT == FALSE

this gives the following result on an empty string:
$a = "";
isset( $a ) == TRUE

while
$a = null;
isset( $a ) == FALSE;

for the same story there are the
==
===
and
!=
!===
operators






Von: Martin Scotta 
An: Andrew Ballard 
CC: Ralph Deffke ; php-gene...@lists..php.net
Gesendet: Montag, den 10. August 2009, 20:40:19 Uhr
Betreff: Re: [PHP] reason for a "Notice:.." on one site but not another? (Same  
code.)

This "intelligence" is given by the laziness of the && operator.

$res = a() && b(); # if a() is false then b() does not evaluate
$res = a() & b(); # b() evaluates no matter a()'s result

so, order matters.


On Mon, Aug 10, 2009 at 3:29 PM, Andrew Ballard  wrote:

On Mon, Aug 10, 2009 at 1:50 PM, Ralph Deffke wrote:
>>> this is not "intelligence" its just pure math. the '&&' says if BOTH
>>> expressions are true then the whole expression is true.
>>>
>>> so if the first one is false, the whole is false, why checking the next one
>>> in the underlaying C it would be something like this
>>> {
>>> if ( expression == false ) return false;
>>> if ( expression == false) return false;
>>> return true;
>>> }
>>>
>>> ralph
>>> ralph_def...@yahoo.de
>
>That's logically correct, and while PHP does implement this
>>"short-circuit" logic, not all languages do. In that regard, I
>>appreciate what John meant by saying it makes it look "more
>>intelligent." Some languages evaluate each of the conditions to their
>>respective boolean results before evaluating the logical operators.
>
>>Andrew
>
>
>>--
>>PHP General Mailing List (http://www.php.net/)
>>To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Martin Scotta



  

Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread Martin Scotta
This "intelligence" is given by the laziness of the && operator.

$res = a() && b(); # if a() is false then b() does not evaluate
$res = a() & b(); # b() evaluates no matter a()'s result

so, order matters.

On Mon, Aug 10, 2009 at 3:29 PM, Andrew Ballard  wrote:

> On Mon, Aug 10, 2009 at 1:50 PM, Ralph Deffke
> wrote:
> > this is not "intelligence" its just pure math. the '&&' says if BOTH
> > expressions are true then the whole expression is true.
> >
> > so if the first one is false, the whole is false, why checking the next
> one
> > in the underlaying C it would be something like this
> > {
> > if ( expression == false ) return false;
> > if ( expression == false) return false;
> > return true;
> > }
> >
> > ralph
> > ralph_def...@yahoo.de
>
> That's logically correct, and while PHP does implement this
> "short-circuit" logic, not all languages do. In that regard, I
> appreciate what John meant by saying it makes it look "more
> intelligent." Some languages evaluate each of the conditions to their
> respective boolean results before evaluating the logical operators.
>
> Andrew
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Martin Scotta


Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread Andrew Ballard
On Mon, Aug 10, 2009 at 1:50 PM, Ralph Deffke wrote:
> this is not "intelligence" its just pure math. the '&&' says if BOTH
> expressions are true then the whole expression is true.
>
> so if the first one is false, the whole is false, why checking the next one
> in the underlaying C it would be something like this
> {
> if ( expression == false ) return false;
> if ( expression == false) return false;
> return true;
> }
>
> ralph
> ralph_def...@yahoo.de

That's logically correct, and while PHP does implement this
"short-circuit" logic, not all languages do. In that regard, I
appreciate what John meant by saying it makes it look "more
intelligent." Some languages evaluate each of the conditions to their
respective boolean results before evaluating the logical operators.

Andrew

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread John Butler



If you switch it around you'll get a notice because the IF evaluates
from left to right.  So you just want to make sure you check isset()
first.

This would throw a notice:

if($_POST['UserWishesDateRange']  == 'T' &&
isset($_POST['UserWishesDateRange'])) {


Aha!  That must be what I tried and was still getting the notice!
Interesting that it works (without notice) if we check against the
isset () one first.   It makes if() look more intelligent that I  
would

think... as if it saying, "good now that we've established that the
var isset, now is it also equal to '___'., as opposed to just, "is  
var

set, and is var equal to "___'.




this is not "intelligence" its just pure math. the '&&' says if BOTH
expressions are true then the whole expression is true.

so if the first one is false, the whole is false, why checking the  
next one

in the underlaying C it would be something like this
{
if ( expression == false ) return false;
if ( expression == false) return false;
return true;
}


I would have thought both would have to be true on their own (without  
notice) in order for the the combined expression to be true (without  
notice).  But Shawn pointed out that the order matters; if we check  
for the var's value before checking if it isset then we get a notice,  
but if the order is reversed, then we get no notice.

Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread Eddie Drapkin
On Mon, Aug 10, 2009 at 1:07 PM, Martin Scotta wrote:
> Why do you all always use isset?
> Why do you don't use array_key_exists instead? is it a more semantic
> solution?
>
> 
> $key = 'UserWishesDateRange'; # just to make statement shorter
> if( array_key_exists($key, $_POST ) && 'T' == $_POST[$key] )
> {
>    echo ' the key exists... and it is a "T" '';
> }
>
> *isset*: Determine if a variable is set and is not NULL*
> array_key_exists: *Checks if the given key or index exists in the array
>
>
> On Mon, Aug 10, 2009 at 1:42 PM, John Butler
> wrote:
>
>>
  If you switch it around you'll get a notice because the IF evaluates
>>> from left to right.  So you just want to make sure you check isset()
>>> first.
>>>
>>> This would throw a notice:
>>>
>>> if($_POST['UserWishesDateRange']  == 'T' &&
>>> isset($_POST['UserWishesDateRange'])) {
>>>
>>
>> Aha!  That must be what I tried and was still getting the notice!
>>  Interesting that it works (without notice) if we check against the isset ()
>> one first.   It makes if() look more intelligent that I would think... as if
>> it saying, "good now that we've established that the var isset, now is it
>> also equal to '___'., as opposed to just, "is var set, and is var equal to
>> "___'.
>
>
>
>
> --
> Martin Scotta
>

Two reasons:
1. isset() is orders of magnitude faster
2. The theory is, if a variable is null you don't care about it

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread Ralph Deffke
this is not "intelligence" its just pure math. the '&&' says if BOTH
expressions are true then the whole expression is true.

so if the first one is false, the whole is false, why checking the next one
in the underlaying C it would be something like this
{
if ( expression == false ) return false;
if ( expression == false) return false;
return true;
}

ralph
ralph_def...@yahoo.de

"John Butler"  wrote in message
news:9ada6df4-649c-4790-b51b-cc9cc0505...@gmail.com...
> >>
> > If you switch it around you'll get a notice because the IF evaluates
> > from left to right.  So you just want to make sure you check isset()
> > first.
> >
> > This would throw a notice:
> >
> > if($_POST['UserWishesDateRange']  == 'T' &&
> > isset($_POST['UserWishesDateRange'])) {
>
> Aha!  That must be what I tried and was still getting the notice!
> Interesting that it works (without notice) if we check against the
> isset () one first.   It makes if() look more intelligent that I would
> think... as if it saying, "good now that we've established that the
> var isset, now is it also equal to '___'., as opposed to just, "is var
> set, and is var equal to "___'.



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread Martin Scotta
Why do you all always use isset?
Why do you don't use array_key_exists instead? is it a more semantic
solution?

wrote:

>
>>>  If you switch it around you'll get a notice because the IF evaluates
>> from left to right.  So you just want to make sure you check isset()
>> first.
>>
>> This would throw a notice:
>>
>> if($_POST['UserWishesDateRange']  == 'T' &&
>> isset($_POST['UserWishesDateRange'])) {
>>
>
> Aha!  That must be what I tried and was still getting the notice!
>  Interesting that it works (without notice) if we check against the isset ()
> one first.   It makes if() look more intelligent that I would think... as if
> it saying, "good now that we've established that the var isset, now is it
> also equal to '___'., as opposed to just, "is var set, and is var equal to
> "___'.




-- 
Martin Scotta


Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread John Butler



If you switch it around you'll get a notice because the IF evaluates
from left to right.  So you just want to make sure you check isset()  
first.


This would throw a notice:

if($_POST['UserWishesDateRange']  == 'T' &&
isset($_POST['UserWishesDateRange'])) {


Aha!  That must be what I tried and was still getting the notice!   
Interesting that it works (without notice) if we check against the  
isset () one first.   It makes if() look more intelligent that I would  
think... as if it saying, "good now that we've established that the  
var isset, now is it also equal to '___'., as opposed to just, "is var  
set, and is var equal to "___'.

Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-10 Thread Shawn McKenzie
John Butler wrote:
>> if(isset($_POST['UserWishesDateRange']) && $_POST['UserWishesDateRange']
>> == 'T') {
> 
> 
> Thought I tried that.  Apparently not exactly; it works now!  Thanks.  I
> know it is clunky but I wanted to see how compact it could be done.

If you switch it around you'll get a notice because the IF evaluates
from left to right.  So you just want to make sure you check isset() first.

This would throw a notice:

if($_POST['UserWishesDateRange']  == 'T' &&
isset($_POST['UserWishesDateRange'])) {


-- 
Thanks!
-Shawn
http://www.spidean.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-09 Thread John Butler
if(isset($_POST['UserWishesDateRange']) &&  
$_POST['UserWishesDateRange']

== 'T') {



Thought I tried that.  Apparently not exactly; it works now!  Thanks.   
I know it is clunky but I wanted to see how compact it could be done.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-09 Thread Shawn McKenzie
John Butler wrote:
>> http://us3.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
>>
> 
> Thank you guys for the isset() heads up.  And Ben, for this good
> explanation of error reporting!
> 
>> As others have pointed out, it's a good idea to call isset() on a
>> POST-variable before trying to get at its value. This will avoid a
>> notice being thrown.
> 
> OK, and I can work around all this anyway, but I would love to get it
> all in one line of code, that essentially says: (pseudocode)
> if  ($IamNotEmpty && $IamEqualto='T') {
> (where those are both the same var)

if(isset($_POST['UserWishesDateRange']) && $_POST['UserWishesDateRange']
== 'T') {

-- or  --

$uwdr = $_POST['UserWishesDateRange'];

if(isset($uwdr) && $uwdr == 'T') {

-- 
Thanks!
-Shawn
http://www.spidean.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-09 Thread John Butler

http://us3.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting


Thank you guys for the isset() heads up.  And Ben, for this good  
explanation of error reporting!



As others have pointed out, it's a good idea to call isset() on a
POST-variable before trying to get at its value. This will avoid a
notice being thrown.


OK, and I can work around all this anyway, but I would love to get it  
all in one line of code, that essentially says: (pseudocode)

if  ($IamNotEmpty && $IamEqualto='T') {
(where those are both the same var)



http://us2.php.net/manual/en/function.filter-input.php
The filter_* functions are only available in core since 5.2.0, though.


OK, ..good to plant seeds, but since that server is PHP 4.3, I'll save  
my brain now for until I can actually integrate that study.



John Butler (Govinda)
govinda.webdnat...@gmail.com





Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-09 Thread Phpster





On Aug 9, 2009, at 7:43 PM, John Butler   
wrote:



Hi sunday  coders,

I've been using this kind of logic on one PHP site I work on to  
display one thing or another depending on whether the form was  
submitted or not:




and it works great on that site.

But on another site it still works, but gives this error:
Notice: Undefined index: in /home/vs/site/phvs/bl/7solarsecrets/ 
admin/trackingcode.html on line 79


I assume that is because the error display settings are set to a  
more rigorous level in this latter site.

Is this correct?

(Both sites reside on servers where I am not the admin.)


John Butler (Govinda)
govinda.webdnat...@gmail.com




--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



You could also simply define / initialize the variable.

$UserWishesDateRange='';

if($_POST['UserWishesDateRange']) {  //--line 79
   echo'submitted';
   } else {
   echo'NOT submitted';
   }






Bastien

Sent from my iPod

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-09 Thread Bastien Koert
Bastien

Sent from my iPod

-- 

Bastien

Cat, the other other white meat

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-09 Thread Ben Dunlap
> But on another site it still works, but gives this error:
> Notice: Undefined index: UserWishesDateRange in
> /home/vs/site/phvs/bl/7solarsecrets/admin/trackingcode.html on line 79
>
> I assume that is because the error display settings are set to a more
> rigorous level in this latter site.
> Is this correct?

It's either the 'error_reporting' configuration directive that's
different between the two servers, or 'display_errors', or both.

On one server the E_NOTICE bit-field is set in 'error_reporting', and
it sounds like 'display_errors' is also set (unless you're seeing that
notice in a log file).

On the other server, one or the other of those things is not set (or
both of them aren't).

You can use call ini_get('error_reporting') and
ini_get('display_errors'), to see what they're set to on each server.
Or just create a small page that only calls phpinfo(), to see all
configuration directives.

Here's the write-up of the directives (one is right below the other):

http://us3.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

As others have pointed out, it's a good idea to call isset() on a
POST-variable before trying to get at its value. This will avoid a
notice being thrown.

Lately I've stopped touching $_POST directly and started using
filter_input() instead; this also avoids the problem and provides
several other benefits:

http://us2.php.net/manual/en/function.filter-input.php

The filter_* functions are only available in core since 5.2.0, though.

Ben

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-09 Thread James Colannino
John Butler wrote:

> if($_POST['UserWishesDateRange']) {  //--line 79
> echo'submitted';
> } else {
> echo'NOT submitted';
> }

Try this instead:

if (isset('UserWishesDateRange'])) {
   // [...stuff goes here...]
}

James
-- 
"Black holes are where God divided by zero." --Steven Wright

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-09 Thread Mari Masuda


On Aug 9, 2009, at 16:43, John Butler wrote:


Hi sunday  coders,

I've been using this kind of logic on one PHP site I work on to  
display one thing or another depending on whether the form was  
submitted or not:


if($_POST['UserWishesDateRange']) {  //--line 79
echo'submitted';
} else {
echo'NOT submitted';
}

and it works great on that site.

But on another site it still works, but gives this error:
Notice: Undefined index: UserWishesDateRange in /home/vs/site/phvs/ 
bl/7solarsecrets/admin/trackingcode.html on line 79


I assume that is because the error display settings are set to a  
more rigorous level in this latter site.

Is this correct?

(Both sites reside on servers where I am not the admin.)


John Butler (Govinda)
govinda.webdnat...@gmail.com



You could do something like:

if(isset($_POST['UserWishesDateRange'])) {  //--line 79  or you could  
use something like !empty($_POST['UserWishesDateRange'])

echo 'submitted';
} else {
echo 'NOT submitted';
}

This will check if $_POST['UserWishesDateRange'] is set to  
something.  You are getting the error message because $_POST 
['UserWishesDateRange'] is not set if the form is not submitted.  The  
server where you don't get the error message probably just has error  
reporting turned off.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] reason for a "Notice:.." on one site but not another? (Same code.)

2009-08-09 Thread John Butler

Hi sunday  coders,

I've been using this kind of logic on one PHP site I work on to  
display one thing or another depending on whether the form was  
submitted or not:


if($_POST['UserWishesDateRange']) {  //--line 79
echo'submitted';
} else {
echo'NOT submitted';
}

and it works great on that site.

But on another site it still works, but gives this error:
Notice: Undefined index: UserWishesDateRange in /home/vs/site/phvs/bl/ 
7solarsecrets/admin/trackingcode.html on line 79


I assume that is because the error display settings are set to a more  
rigorous level in this latter site.

Is this correct?

(Both sites reside on servers where I am not the admin.)


John Butler (Govinda)
govinda.webdnat...@gmail.com




--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php