FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Undefined variable
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: Undefined variable [message #181246 is a reply to message #181239] Wed, 24 April 2013 20:02 Go to previous messageGo to previous message
Chuck Anderson is currently offline  Chuck Anderson
Messages: 63
Registered: September 2010
Karma:
Member
Question Boy wrote:
> On Apr 23, 11:27 pm, Question Boy <question....@hotmail.com> wrote:
>
>> On Apr 23, 11:08 pm, Richard Yates <rich...@yatesguitar.com> wrote:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>> On Tue, 23 Apr 2013 19:16:54 -0700 (PDT), Question Boy
>>>
>>> <question....@hotmail.com> wrote:
>>>
>>>> I have an simple MySQL/PHP app and it appears to be functional but the
>>>> webmaster has informed me that it is throwing lots of errors. So he
>>>> showed me the log file and I am trying to remedy the issues, but have
>>>> a question.
>>>>
>>>> For instance, I have a block of code, such as:
>>>>
>>>> if ($iBookedBy=="Other") {
>>>> echo '<option selected value="Other">Other</option>';
>>>> } else {
>>>> echo '<option value="Other">Other</option>';
>>>> }
>>>>
>>>> which the log file reports as:
>>>>
>>>> PHP Notice: Undefined variable: iBookedBy
>>>>
>>>> Now I thought of trying:
>>>>
>>>> if (isset($iBookedBy)==TRUE && $iBookedBy=="Other") {
>>>> echo '<option selected value="Other">Other</option>';
>>>> } else {
>>>> echo '<option value="Other">Other</option>';
>>>> }
>>>>
>>>> but am not sure if the server will break because the variable isn't
>>>> set or if it will still throw an error because of the second,
>>>> original, part of the if statement? Is this a good way to handle the
>>>> problem, or am I going about this the wrong way and there is a better
>>>> method?
>>>>
>>>> Thank you for your help.
>>>>
>>>> QuestionBoy
>>>>
>>> 1. Yes, it will prevent the error notice.
>>>
>>> 2. You do not need the ==TRUE. isset($iBookedBy) means the same
>>> isset($iBookedBy)==TRUE.
>>>
>>> 3. Your asking the question suggests that you are trying to write code
>>> and run it directly on a production server rather than testing on a
>>> local server. The webmaster will be happier, and you will be much more
>>> productive, if you set up a local server like WAMP.
>>>
>> Thank you for the reply.
>>
>> I was always under the impression that it was always beneficial to
>> explicitly put ==TRUE to avoid any arbitrary interpretations. I won't
>> waste my time anymore.
>>
>> My test server was not reporting any errors. I will look into which
>> setting has to be changed.
>>
>> Thank you once again.
>>
>
> Even setting my test server to debug mode, I don't seem to get the
> errors reported on the production server?
>

My guess is that you are running Php < 5.3 on your development machine,
and the production server is running 5.3+. That is why your test system
does not produce the errors and the production machine does. When I
upgraded to Php 5.3 some of my older scripts threw lots of these errors.
I found that the best way to correct them was to create a section near
the top of the script where I set all variables needed by the script to
their default values (usually either '', or 0). Add a comment and you're
also creating useful documentation.

There is also a dirty "fix" (it is not really a fix) that will remove
them immediately on the production machine. If you can not access
php.ini (on a shared server) or do not want to make a global change to
php.ini (the cause of those Notices should be found and corrected) put
the following in a .htaccess file and place it in any affected, upper
level directory.

# error_reporting = E_ALL & ~E_NOTICE (all error levels except Notices)
php_value error_reporting 30711

This will disable reporting of Notice level errors.

Here are some other combinations that can be useful for a quick and
dirty fix to the production site after upgrading to Php 5.3.

# php error level
# error_reporting = E_ALL & ~E_DEPRECATED
# php_value error_reporting 22527

# error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
# php_value error_reporting 22519

With the fire put out you can correct the cause of the error reports at
a more leisurely pace (after you upgrade to Php 5.3+ on your test system).

--
*****************************
Chuck Anderson • Boulder, CO
http://cycletourist.com
Turn Off, Tune Out, Drop In
*****************************
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Rejecting Certain Non-ASCII Characters
Next Topic: determine a mysqli_result object
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Wed Nov 27 05:30:26 GMT 2024

Total time taken to generate the page: 0.03679 seconds