Hi Petrogad,

I checked this: http://be.php.net/print_r

For the DOM, if I understand correctly, you are trying to tell me that the
info we get from Google, is a DOM, so it comes as nodes & appended Childs.

I just have to figure out which kind of DOM is it: map, list, element,... To
be able to treat the info.

I don't understand the difference between -> & => , are these 2 different
ways to assign values to a variable?

I understand a DOM has a name & a value, like a variable.

To try to understand how it works I analyze some examples:

In this example I understand it assigns a value to an Array called
$domTable, and then assigns this value to a variable called $tables, and
then echos the value.

$domTable = $dom->getElementsByTagName("table");

foreach ($domTable as $tables)
{
    echo DOMinnerHTML($tables);
}


Here it says something which I think it's getting warmer.
http://be.php.net/manual/en/class.domnodelist.php
You don't need to convert a DOMNodeList to an array in order iterate through
it using 'foreach'.  You can use foreach directly with the DOMNodeList.

$nodeList = $someDomDocument->getElementsbytagname('user');

foreach ($nodeList as $node) {
    echo $node->nodeValue;
}


>From this example, I understand it's a Map of Nodes. But this is not it.
http://be.php.net/manual/en/class.domnamednodemap.php
You can iterate over an instance of DOMNamedNodeMap:
<?php
// suppose $node is a valid DOMElement object
// $node->attributes will be NULL or a valid DOMNamedNodeMap object
foreach ($node->attributes as $attrName => $attrNode) {
}
http://be.php.net/manual/en/domnamednodemap.item.php
<?php
if($element->hasAttributes())
{
    $attributes = $element->attributes;
    if(!is_null($attributes))
    {
        foreach ($attributes as $index=>$attr)
        {
            echo $attr->name."=\"".$attr->value."\"";
        }
    }
}
?>


And here I see there is a nodeName[] within an Array, is this correct? And
this should be it, so the phoneNumbers are a Child within an Array.

http://be.php.net/dom

foreach($n->childNodes as $nc){
        if( $nc->hasChildNodes() ){
            if( $n->firstChild->nodeName==
$n->lastChild->nodeName&&$n->childNodes->length>1){
                $item = $n->firstChild;
                $return[$nc->nodeName][]=$this->xmlToArray($item);


Going back to the print_r($body):
[phoneNumbers] => Array
                                 (
                                     [0] => stdClass Object
                                         (
                                             [type] =>
                                             [number] => 03 232 02 10
                                         )
                                 )


CONCLUSION: it should be something like this:

        $search_results['results'][$i][$sr->number] = $r->telnumber;

        $search_results['results'][$i]['phoneNumbers'][$sr->number] =
$r->telnumber;


To get the child. I tried with quotations, and not working, neither.



Am I getting closer?

Thanks
Sebastian




On 04/04/09 17:21, "Petrogad" <[email protected]> wrote:

> 
> Sebastian-
> 
> Again I tell you:
> 
> print_r($body);
> 
> then use:
> http://php.net/dom to understand how to use the information that is
> retrieved.
> 
> 
> 
> On Apr 4, 6:43 am, sebastian de comocomo <[email protected]>
> wrote:
>> Hi Petrogad,
>> 
>> I do get results, I get the title, I even get the addressline which is also
>> an Array, but I don't manage to get the phoneNumbers.
>> 
>> Everything is in the same format, and I've tried all kind of combinations in
>> each of the "foreach"'s.( the $r and the $sr).
>> 
>> I even run tests to understand how the foreach function works
>> 
>> http://allmybookings.com/foreach.php
>> 
>> For the title:
>> 1st. I assign $r -> title, and then for each $r->title result I print as
>> $sr. I don't know why this change of variable, but the title works.
>> 
>> I don't understand what is the relation with the PHP DOM?
>> 
>> What am I doing wrong?
>> 
>> Here is the last code with new tests:
>> 
>> <?php
>> require_once 'JSON.php';
>> if(isset($_GET['q'])) {
>> $start = isset($_GET['start']) ? $_GET['start'] : 0;
>> $url =
>> 'http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q='.urlen...
>> _GET['q']).'&rsz=small&start='.$start;
>>     $ch = curl_init();
>>     curl_setopt($ch, CURLOPT_URL, $url);
>>     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
>>     $body = curl_exec($ch);
>>     curl_close($ch);
>>     $body = json_decode($body);
>>     $i    = 0;
>>     $search_results = array();
>>     foreach($body->responseData->results as $r) {
>>         $search_results['results'][$i]['title'] = $r->title;
>> //        $search_results['results'][$i]['phoneNumbers'] = $r->phoneNumbers;
>> //        $search_results['results'][$i]['type'] = $r->type;
>> //        $search_results['results'][$i]['number'] = $r->number;
>> 
>>         $search_results['phoneNumbers'][$i]['number'] = $r->number;
>>         $i++;
>>     }
>>      foreach($search_results['results'] as $sr) {
>>         echo $sr['title']."<br>";
>>         echo $sr['number'][0]."<br>";
>>         echo count($sr['phoneNumbers'][0])." <- 1 : gives 1 result. meaning
>> there is 1 phone number<br>"; // best:
>>         echo count($sr['phoneNumbers']['number'])." <- 2<br>"; // gives 0
>> results, but doesn't give an error
>>         echo count($sr['phoneNumbers']['number'][0])." <- 3<br>"; // gives 0
>> results, but doesn't give an error
>>         echo $sr['phoneNumbers']." <- 4<br>"; // doesn't give an error but
>> doesn't give a number.
>>         echo $sr['phoneNumbers']['number']." <- 5<br>"; // empty line
>>         echo $sr['phoneNumbers']['number'][0]." <- 6<br>"; // empty line
>>         echo $sr['phoneNumbers'][0]['number']." <- 7<br>"; // empty line
>>         echo $sr['phoneNumbers'][0]['number'][0]." <- 8<br>"; // empty line
>>         echo $sr['phoneNumbers']['number'][0]." <- 9<br>"; // empty line
>>         echo count($sr['phoneNumbers'][0]['number'])."<br>";
>> 
>> }
>> }
>> 
>> ?>
>> 
>> On 03/04/09 15:05, "Petrogad" <[email protected]> wrote:
>> 
>> 
>> 
>>> Sebastian, the answer is in front of you :)
>> 
>>> I'm not sure where you're getting results in:     foreach($body-
>>>> responseData->results as $r) {
>> 
>>> if the below is what you get, then re-adjust your querying.
>> 
>>> Also take  a look at this:
>>> http://php.net/dom
>> 
>>> Good Luck, all the answers are above.
>> 
>>> On Apr 3, 4:45 am, sebastian de comocomo <[email protected]>
>>> wrote:
>>>> Hi Petrogad,
>> 
>>>> Cool, I get this:
>> 
>>>> [phoneNumbers] => Array
>>>>                                 (
>>>>                                     [0] => stdClass Object
>>>>                                         (
>>>>                                             [type] =>
>>>>                                             [number] => 03 232 02 10
>>>>                                         )
>> 
>>>>                                 )
>> 
>>>> So, there is a phone number: 03 232 02 10.
>> 
>>>> I suppose the structure should be something like this:
>>>> ...
>>>> $search_results['results'][$i]['phoneNumbers'] = $r->phoneNumbers;
>> 
>>>> $search_results['results'][$i]['type'] = $r->type;
>> 
>>>> $search_results['results'][$i]['number'] = $r->number;
>>>> ...
>>>> echo $sr['phoneNumbers'][0]['number'];
>>>> ...
>>>> But this stops the code, in that line.
>> 
>>>> I also tried:
>>>> ...
>>>> $search_results['results'][$i]['phoneNumbers']['number'] = $r->newnumber;
>>>> ...
>>>> But this gives an empty record.
>> 
>>>> And this:
>>>> $search_results['results'][$i]['phoneNumbers'][$i]['number'] =
>>>> $r->newnumber;
>> 
>>>> Which gives an error -> empty page.
>> 
>>>> What is "stdClass Object"?
>> 
>>>> Thanks,
>>>> Sebastian
>> 
>>>> On 02/04/09 16:14, "Petrogad" <[email protected]> wrote:
>> 
>>>>> Sebastian-
>> 
>>>>> I would first print_r $body so you know what you're doing.  then
>>>>> proceed accordingly.
>> 
>>>>> On Apr 2, 6:40 am, Sebastian <[email protected]> wrote:
>>>>>> Hi,
>> 
>>>>>> could anyone help me out with this?
>> 
>>>>>> I've tried everything I can imagine.
>> 
>>>>>> I suppose this is correct:
>> 
>>>>>> echo count($sr['phoneNumbers'][0]);
>> 
>>>>>> To see if there are any phone numbers in the variable, isn't it?
>> 
>>>>>> If so, how do I get the number?
>> 
>>>>>> Thanks
>>>>>> Sebastian
>> 
>>>>>> On Mar 30, 2:34 pm, Sebastian <[email protected]> wrote:
>> 
>>>>>>> Hi,
>> 
>>>>>>> I've tried many different options to get thephoneNumbersfrom the
>>>>>>> Local Search API, but I didn't manage to do so.
>> 
>>>>>>> I count how many numbers are in thephoneNumbersvariable and I get 1
>>>>>>> or 2 depending on the record,
>> 
>>>>>>> count($sr['phoneNumbers'][0])
>> 
>>>>>>> I followed the reference guidelines, to try to do different options
>>>>>>> but I don't manage to do so. The guide says there are 3 variables to
>>>>>>> thephoneNumbers:
>> 
>>>>>>>                 $search_results['results'][$i]['phoneNumbers'] =
>>>>>>> $r->phoneNumbers;
>>>>>>>                 $search_results['results'][$i]['type'] = $r->type; // 1)
>>>>>>> main 2) fax
>>>>>>> 3) mobile
>>>>>>>                 $search_results['results'][$i]['number'] = $r->number;
>>>>>>> //
>>>>>>> the number
>>>>>>> itself
>> 
>>>>>>> I'd like to do so, in PHP using CURL.
>> 
>>>>>>> here are my tests:
>> 
>>>>>>> http://allmybookings.com/apilocal/search-results.php?q=restaurants+br...
>> 
>>>>>>> and here the code:
>> 
>>>>>>> <?php
>>>>>>> require_once 'JSON.php';
>>>>>>> if(isset($_GET['q'])) {
>>>>>>> $start = isset($_GET['start']) ? $_GET['start'] : 0;
>>>>>>> $url = 'http://ajax.googleapis.com/ajax/services/search/local?
>>>>>>> v=1.0&q='.urlencode($_GET['q']).'&rsz=small&start='.$start;
>>>>>>>         $ch = curl_init();
>>>>>>>         curl_setopt($ch, CURLOPT_URL, $url);
>>>>>>>         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
>>>>>>>         $body = curl_exec($ch);
>>>>>>>         curl_close($ch);
>>>>>>>         $body = json_decode($body);
>>>>>>>         $i      = 0;
>>>>>>>         $search_results = array();
>>>>>>>         foreach($body->responseData->results as $r) {
>>>>>>>                 $search_results['results'][$i]['title'] = $r->title;
>>>>>>>                 $search_results['results'][$i]['phoneNumbers'] =
>>>>>>> $r->phoneNumbers;
>>>>>>>                 $search_results['results'][$i]['type'] = $r->type;
>>>>>>>                 $search_results['results'][$i]['number'] = $r->number;
>>>>>>>                 $i++;
>>>>>>>         }
>>>>>>>          foreach($search_results['results'] as $sr) {
>>>>>>>                 echo $sr['title']."<br>";
>>>>>>>                 echo count($sr['phoneNumbers'][0])." <- 1 : gives 1
>>>>>>> result.
>>>>>>> meaning
>>>>>>> there is 1 phone number<br>"; // best:
>>>>>>>                 echo count($sr['phoneNumbers']['number'])." <- 2<br>";
>>>>>>> //
>>>>>>> gives 0
>>>>>>> results, but doesn't give an error
>>>>>>>                 echo count($sr['phoneNumbers']['number'][0])." <-
>>>>>>> 3<br>";
>>>>>>> //
>>>>>>> gives 0
>>>>>>> results, but doesn't give an error
>>>>>>>                 echo $sr['phoneNumbers']." <- 4<br>"; // doesn't give an
>>>>>>> error but
>>>>>>> doesn't give a number.
>>>>>>>                 echo $sr['phoneNumbers']['number']." <- 5<br>"; // empty
>>>>>>> line
>>>>>>>                 echo $sr['phoneNumbers']['number'][0]." <- 6<br>"; //
>>>>>>> empty
>>>>>>> line
>>>>>>> // this gives error     echo count($sr['phoneNumbers'][0]
>>>>>>> ['number'])."<br>";
>>>>>>> // this gives error     echo $sr['phoneNumbers'][0]."<br>";
>>>>>>> // this gives error             echo
>>>>>>> $sr['phoneNumbers'][0]['number']."<br>";}
>>>>>>> }
>> 
>>>>>>> ?>
>> 
>>>>>>> Has anyone manage to get this info?
>> 
>>>>>>> Thanks,
>>>>>>> Sebastian
> > 



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google AJAX APIs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/Google-AJAX-Search-API?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to