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

2009-08-11 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 aball...@gmail.com wrote:
 
  On Mon, Aug 10, 2009 at 1:50 PM, Ralph Deffkeralph_def...@yahoo.de
  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 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-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 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?

?php

$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
govinda.webdnat...@gmail.comwrote:


  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 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 govinda.webdnat...@gmail.com 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 Eddie Drapkin
On Mon, Aug 10, 2009 at 1:07 PM, Martin Scottamartinsco...@gmail.com wrote:
 Why do you all always use isset?
 Why do you don't use array_key_exists instead? is it a more semantic
 solution?

 ?php

 $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
 govinda.webdnat...@gmail.comwrote:


  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 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 Andrew Ballard
On Mon, Aug 10, 2009 at 1:50 PM, Ralph Deffkeralph_def...@yahoo.de 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 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 aball...@gmail.com wrote:

 On Mon, Aug 10, 2009 at 1:50 PM, Ralph Deffkeralph_def...@yahoo.de
 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


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 martinsco...@gmail.com
An: Andrew Ballard aball...@gmail.com
CC: Ralph Deffke ralph_def...@yahoo.de; 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 aball...@gmail..com wrote:

On Mon, Aug 10, 2009 at 1:50 PM, Ralph Deffkeralph_def...@yahoo.de 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 Adam Randall
That should be !== not !===

Adam.

On Mon, Aug 10, 2009 at 12:17 PM, Ralph Deffkeralph_def...@yahoo.de 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



[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



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



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 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 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 Phpster





On Aug 9, 2009, at 7:43 PM, John Butler govinda.webdnat...@gmail.com  
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 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 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
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