Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Krijg 1 terug terwijl ik array moet krijgen.

Pagina: 1
Acties:

  • Mar2zz
  • Registratie: September 2007
  • Laatst online: 20-08 07:53
Ik krijg een, wat in mijn ogen simpele moet zijn, functie in Drupal niet aan de praat in een zelfgeschreven module. Het module maakt een form waarmee de distance api van google word geraadpleegd. Ik hoor een array terug te krijgen en als ik de functies uitvoer vanuit de devel module dan werkt het prima. vanuit de module gaat het mis.

De code waar het mis gaat:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
/**
* Submit form
*/
function mymodule_form_submit($form, &$form_state) {
    $url = 'http://maps.googleapis.com/maps/api/distancematrix/json?origins=9725HB|Netherlands&destinations=1024LR|nl&mode=car&language=nl-NL&sensor=false'
    $results = mymodule_query_api($url);
    if ($results['status'] == 'OK') {
          $message = '<label>Van</label><span>' . $results['status'][0] . '<span>';
          drupal_set_message($message);
    }
    else {
          drupal_set_message('faalaap');
    }
}


/**
* Request json from google distancematrix
*/
function mymodule_query_api($url) {
  drupal_set_message($url); // Hier zie ik dat de url goed is doorgekomen en als ik die pas online bekijk dan krijg ik ook json van google

  $data = drupal_http_request(urlencode($url)); // hier gaat het fout. $data geeft altijd 1.
  $results = drupal_json_decode($data->data);
  return $results;
} ?>


Ik dacht dat ik geen connectie maakte ofzo maar het is en blijft 1 geven. Vanuit het php-block van develmodule gaat dit stukje code gewoon prima de informatie ophalen en parsen en in een array terugdoen. Of zie ik toch iets over het hoofd... ik ben er scheel van.

  • Xatom
  • Registratie: Augustus 2011
  • Laatst online: 18:00

Xatom

Op lijn 6 ben je een semicolon vergeten op het eind.

Verder moet je niet je hele URL in de urlencode function gooien, dan krijg je dit:
code:
1
http%3A%2F%2Fmaps.googleapis.com%2Fmaps%2Fapi%2Fdistancematrix%2Fjson%3Forigins%3D9725HB%7CNetherlands%26destinations%3D1024LR%7Cnl%26mode%3Dcar%26language%3Dnl-NL%26sensor%3Dfalse

  • Mar2zz
  • Registratie: September 2007
  • Laatst online: 20-08 07:53
Oh ja dit is wat oudere code, ik heb alle url constructie dingen weggehaald.
Dit is de url constructie, maar dat werkt wel goed want die word ook netjes geprint.
PHP:
1
2
3
4
5
6
<?php  $url = 'https://maps.googleapis.com/maps/api/distancematrix/json';
  $url .= '?origins=' . $form_state['values']['mymodule_from'] . '|' . left(variable_get('mymodule_admin_country'),2);
  $url .= '&destinations=' . $form_state['values']['mymodule_from'] . '|' . left(variable_get('mymodule_admin_country'),2);
  $url .= '&mode=driving&sensor=false';
  $url .= '&key=MyKey'; // . variable_get('mymodule_admin_api');
  $url = str_replace(' ','',$url);?>


hmm json_decode geeft nu dit: Notice: Undefined property: stdClass::$data in mymodule_query_api() vaag...

[ Voor 28% gewijzigd door Mar2zz op 24-04-2014 00:15 ]


  • Xatom
  • Registratie: Augustus 2011
  • Laatst online: 18:00

Xatom

Heb je nu wel urlencode weggehaald op regel 24? Dit moet zijn:
PHP:
1
$data = drupal_http_request($url);


Als je zeker weet dat je URL gewoon klopt is dat het enige probleem wat ik zie.

  • Mar2zz
  • Registratie: September 2007
  • Laatst online: 20-08 07:53
Ja ik had m weggehaald, maar dat was niet voldoende, heb nu ook de cache geleegd en het werkt weer...
Thx dat je zo laat nog reageert. Ik zou hiermee niet bezig moeten zijn op dit tijdstip zie de kleinste dingen over hoofd.

  • thaan
  • Registratie: Oktober 2004
  • Laatst online: 12:15
Mar2zz schreef op donderdag 24 april 2014 @ 00:20:
Ja ik had m weggehaald, maar dat was niet voldoende, heb nu ook de cache geleegd en het werkt weer...
Thx dat je zo laat nog reageert. Ik zou hiermee niet bezig moeten zijn op dit tijdstip zie de kleinste dingen over hoofd.
The maker's schedule ;)

  • Mar2zz
  • Registratie: September 2007
  • Laatst online: 20-08 07:53
Lol dit is zo waar... :)
This is why programmers are so annoyed when you distract them.

Because of this huge mental investment, we simply can’t start working until we can expect a couple of hours without being distracted. It’s just not worth constructing the whole model in your head and then having it torn down half an hour later.

  • Xatom
  • Registratie: Augustus 2011
  • Laatst online: 18:00

Xatom

Oh, de cache. 8)7

Ik raad je aan om er een gewoonte van te maken om de cache even uit te schakelen als je bezig gaat met het bewerken van je scripts. :P
Pagina: 1