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

[email protected] (Rob Richards) Tue, 28 Sep 2010 14:47:50 -0400
Newsgroups php.xml.dev
Message-ID <[email protected]>
  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