Re: [PHP-XML-DEV] php bug?

[email protected] (mcberta2) Thu, 30 Sep 2010 08:58:57 +0200
Newsgroups php.xml.dev
Message-ID <[email protected]>
On 28/09/2010 20.47, Rob Richards wrote:
> On 9/28/10 7:56 AM, mcberta2 wrote:
>> On 27/09/2010 13.29, Rob Richards wrote:
>>> On 9/27/10 4:06 AM, mcberta2 wrote:
>>>> On 9/26/2010 6:34 PM, Adam Trachtenberg wrote:
>>>>> On Sun, Sep 26, 2010 at 12:36 AM, mcberta2<[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hello everyone.
>>>>>> The following is an extract of a routine returning error messages
>>>>>> from a
>>>>>> xml file:
>>>>>>
>>>>>> function title($index)
>>>>>> {
>>>>>> $xml = simplexml_load_file("lingo.xml");
>>>>>> return $xml->message[$index];
>>>>>> }
>>>>>>
>>>>>> The problem is that if I call the routine with a value [ex.
>>>>>> title(6)] I
>>>>>> receive the message, whereas if I call the routine with a variable
>>>>>> [ex.
>>>>>> title($value) where $value=6] there is no way I can receive the
>>>>>> message.
>>>>>>
>>>>>> I tried in many different ways but it looks like it's a bug of
>>>>>> simple_xml.
>>>>>>
>>>>>
>>>>> This isn't too helpful, but I'm 99.94% it's something in your code.
>>>>>
>>>>> Simplify your code until you find the shortest piece that works and
>>>>> then add
>>>>> back lines until you find your error.
>>>>>
>>>>> -adam
>>>>>
>>>> Thank you for coming to help.
>>>> That's what I did.
>>>> The routine can't get shorter than that. I attach now the xml file
>>>> (shortest version). Just to be clear:
>>>>
>>>> <?xml version="1.0" encoding="utf-8"?>
>>>> <messages>
>>>> <message id="0">About us</message>
>>>> <message id="1">Nothing has been ordered!</message>
>>>> <message id="2">Continue shopping</message>
>>>> <message id="3">Shopping cart</message>
>>>> <message id="4">Contact us</message>
>>>> <message id="5">News</message>
>>>> <message id="6">Welcome</message>
>>>> </messages>
>>>>
>>>> Am I referencing the nodes incorrectly?
>>>> Thank you
>>>> Andrea
>>>>
>>>
>>> How about the full script as you don't include how/what you are passing
>>> to the title function.
>>>
>>> Rob
>>
>> Ok. I made a mistake.
>> I forgot to mention that the variable used for calling the function
>> title comes from an INPUT tag of a form. Ex:
>> <?php
>>
>> function title( $index )
>> {
>> $xml = simplexml_load_file( 'lingo.xml' ) ;
>> return $xml->message[$index] ;
>> }
>>
>> $param = $_POST['msgs'] ; //'msgs' coming from an INPUT tag of a form
>> $value = title( $param ) ;
>> echo( $value ) ;
>>
>> ?>
>>
>> While before the function returns the message stored in the xml file,
>> now it return no value.
>> Any idea why?
>>
> Cast it to a int otherwise $param is being set as a string which then
> causes simplexml to look for attributes by name on the first message
> element.
>
> Rob

Thanks a lot Rob.
I really overlooked that.
Thank you for coming to help.
Andrea