Foros del Web » Programando para Internet » PHP »

¿Por qué este código para insertar DB me funciona solo en localhost?

Estas en el tema de ¿Por qué este código para insertar DB me funciona solo en localhost? en el foro de PHP en Foros del Web. Este código solo me funciona en localhost. No sé si tenga algún problema para llamar a la API de Twitter. Si se conecta a la ...
  #1 (permalink)  
Antiguo 20/12/2012, 20:03
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
¿Por qué este código para insertar DB me funciona solo en localhost?

Este código solo me funciona en localhost. No sé si tenga algún problema para llamar a la API de Twitter.

Si se conecta a la base de datos pero no manda absolutamente nada en el hospedaje que contraté.

Código PHP:
Ver original
  1. <?php
  2.  
  3. $host = 'localhost';
  4. $database = 'u170904_mapas';
  5. $username = 'u170904_don';
  6. $password = 'Mapa2012a';
  7.  
  8.  
  9. $con = mysql_connect($host,$username,$password);
  10. if (!$con)
  11.   {
  12.   die('Could not connect: ' . mysql_error());
  13.   }
  14. mysql_select_db($database, $con);
  15. mysql_query("SET NAMES 'utf8'");
  16.     $data = "http://search.twitter.com/search.json?q=%23ViveBarrio&geocode=20.6946,-103.39755,40km&include_entities=true&rpp=500" ;
  17.     $feed = file_get_contents($data); //Getting the JSON data.
  18.     $valid_data = json_decode($feed); // Converting the JSON data to PHP format.
  19.     $valid_data = $valid_data->results; // Valid data now with just the tweet result.
  20.         foreach ($valid_data as $key=>$status) {
  21.             $screen_name = "ViveBarrio";
  22.         $usuario = mysql_real_escape_string(trim($status->from_user));
  23.         $nick = mysql_real_escape_string(trim($status->from_user_name));
  24.         $profile = mysql_real_escape_string(trim($status->profile_image_url));
  25.         $text = mysql_real_escape_string($status->text);
  26.         date_default_timezone_set('America/Mexico_City');
  27.         $time = date("m-d-Y \- g:ia",strtotime($status->created_at));
  28.         $geo1 = mysql_real_escape_string(trim($status->geo->coordinates['0']));
  29.         $geo2 = mysql_real_escape_string(trim($status->geo->coordinates['1']));
  30.         $imagen = $status->entities->media[0]->media_url;
  31.         if ($media != "thumb") {$media = mysql_real_escape_string($imagen);}
  32.         $id = $status->id;
  33.         $media = mysql_real_escape_string($imagen);
  34.         $caracter = $status->entities->media[0]->expanded_url;
  35.         $link = mysql_real_escape_string($caracter);
  36.         mysql_query("INSERT INTO twitter (`id`,`screen_name`,`time`,`usuario`,`nick`,`profile`,`text`,`geo1`,`geo2`,`media`,`link`,`hidden`) VALUES ('$id','$screen_name','$time','$usuario','$nick','$profile','$text','$geo1','$geo2','$media','$link','n')");
  37.         $count = $conn->exec($sql);
  38.         }
  39. if($count !== false) echo 'Number of rows added: '. $count;
  40.  
  41.     $con = mysql_connect($host,$database,$username,$password);
  42.     mysql_select_db("twitter", $con);
  43.     mysql_query("SET NAMES 'utf8'");
  44.     $data = "http://search.twitter.com/search.json?q=%23EnmiBarrio&geocode=20.6946,-103.39755,40km&include_entities=true&rpp=500" ;
  45.    $feed = file_get_contents($data); //Getting the JSON data.
  46.     $valid_data = json_decode($feed); // Converting the JSON data to PHP format.
  47.     $valid_data = $valid_data->results; // Valid data now with just the tweet result.
  48.         foreach ($valid_data as $key=>$status) {
  49.             $screen_name = "EnMiBarrio";
  50.         $usuario = mysql_real_escape_string(trim($status->from_user));
  51.         $nick = mysql_real_escape_string(trim($status->from_user_name));
  52.         $profile = mysql_real_escape_string(trim($status->profile_image_url));
  53.         $text = mysql_real_escape_string($status->text);
  54.         date_default_timezone_set('America/Mexico_City');
  55.         $time = date("m-d-Y \- g:ia",strtotime($status->created_at));
  56.         $geo1 = mysql_real_escape_string(trim($status->geo->coordinates['0']));
  57.         $geo2 = mysql_real_escape_string(trim($status->geo->coordinates['1']));
  58.         $imagen = $status->entities->media[0]->media_url;
  59.         if ($media != "thumb") {$media = mysql_real_escape_string($imagen);}
  60.         $id = $status->id;
  61.         $media = mysql_real_escape_string($imagen);
  62.         $caracter = $status->entities->media[0]->expanded_url;
  63.         $link = mysql_real_escape_string($caracter);
  64.         mysql_query("INSERT INTO twitter (`id`,`screen_name`,`time`,`usuario`,`nick`,`profile`,`text`,`geo1`,`geo2`,`media`,`link`,`hidden`) VALUES ('$id','$screen_name','$time','$usuario','$nick','$profile','$text','$geo1','$geo2','$media','$link','n')");
  65.         $count = $conn->exec($sql);
  66.     }
  67.  
  68. if($count !== false) echo 'Number of rows added: '. $count;
  69.  
  70.     $con = mysql_connect($host,$database,$username,$password);
  71.     mysql_select_db("twitter", $con);
  72.     mysql_query("SET NAMES 'utf8'");
  73.     $data = "http://search.twitter.com/search.json?q=%23ConsumeBarrio&geocode=20.6946,-103.39755,40km&include_entities=true&rpp=500" ;
  74.     $feed = file_get_contents($data); //Getting the JSON data.
  75.     $valid_data = json_decode($feed); // Converting the JSON data to PHP format.
  76.     $valid_data = $valid_data->results; // Valid data now with just the tweet result.
  77.         foreach ($valid_data as $key=>$status) {
  78.             $screen_name = "#ConsumeBarrio";
  79.         $usuario = mysql_real_escape_string(trim($status->from_user));
  80.         $nick = mysql_real_escape_string(trim($status->from_user_name));
  81.         $profile = mysql_real_escape_string(trim($status->profile_image_url));
  82.         $text = mysql_real_escape_string($status->text);
  83.         date_default_timezone_set('America/Mexico_City');
  84.         $time = date("m-d-Y \- g:ia",strtotime($status->created_at));
  85.         $geo1 = mysql_real_escape_string(trim($status->geo->coordinates['0']));
  86.         $geo2 = mysql_real_escape_string(trim($status->geo->coordinates['1']));
  87.         $imagen = $status->entities->media[0]->media_url;
  88.         if ($media != "thumb") {$media = mysql_real_escape_string($imagen);}
  89.         $id = $status->id;
  90.         $media = mysql_real_escape_string($imagen);
  91.         $caracter = $status->entities->media[0]->expanded_url;
  92.         $link = mysql_real_escape_string($caracter);
  93.         mysql_query("INSERT INTO twitter (`id`,`screen_name`,`time`,`usuario`,`nick`,`profile`,`text`,`geo1`,`geo2`,`media`,`link`,`hidden`) VALUES ('$id','$screen_name','$time','$usuario','$nick','$profile','$text','$geo1','$geo2','$media','$link','n')");
  94.         $count = $conn->exec($sql);
  95.     }
  96.  
  97. if($count !== false) echo 'Number of rows added: '. $count;
  98.  
  99.  
  100.  
  101.     $con = mysql_connect($host,$database,$username,$password);
  102.     mysql_select_db("twitter", $con);
  103.     mysql_query("SET NAMES 'utf8'");
  104.     $data = "http://search.twitter.com/search.json?q=%23VocesBarrio&geocode=20.6946,-103.39755,40km&include_entities=true&rpp=500" ;
  105.     $feed = file_get_contents($data); //Getting the JSON data.
  106.     $valid_data = json_decode($feed); // Converting the JSON data to PHP format.
  107.     $valid_data = $valid_data->results; // Valid data now with just the tweet result.
  108.         foreach ($valid_data as $key=>$status) {
  109.             $screen_name = "#VocesBarrio";
  110.         $usuario = mysql_real_escape_string(trim($status->from_user));
  111.         $nick = mysql_real_escape_string(trim($status->from_user_name));
  112.         $profile = mysql_real_escape_string(trim($status->profile_image_url));
  113.         $text = mysql_real_escape_string($status->text);
  114.         date_default_timezone_set('America/Mexico_City');
  115.         $time = date("m-d-Y \- g:ia",strtotime($status->created_at));
  116.         $geo1 = mysql_real_escape_string(trim($status->geo->coordinates['0']));
  117.         $geo2 = mysql_real_escape_string(trim($status->geo->coordinates['1']));
  118.         $imagen = $status->entities->media[0]->media_url;
  119.         if ($media != "thumb") {$media = mysql_real_escape_string($imagen);}
  120.         $id = $status->id;
  121.         $media = mysql_real_escape_string($imagen);
  122.         $caracter = $status->entities->media[0]->expanded_url;
  123.         $link = mysql_real_escape_string($caracter);
  124.         mysql_query("INSERT INTO twitter (`id`,`screen_name`,`time`,`usuario`,`nick`,`profile`,`text`,`geo1`,`geo2`,`media`,`link`,`hidden`) VALUES ('$id','$screen_name','$time','$usuario','$nick','$profile','$text','$geo1','$geo2','$media','$link','n')");
  125.         $count = $conn->exec($sql);
  126.     }
  127.  
  128. if($count !== false) echo 'Number of rows added: '. $count;
  129. ?>
  #2 (permalink)  
Antiguo 20/12/2012, 20:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Por qué este código para insertar DB me funciona solo en localhost?

Revisa si tienes activa la opción allow_url_fopen:
http://php.net/manual/es/filesystem....llow-url-fopen
De lo contrario no podrás usar file_get_contents con una URL.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 20/12/2012, 20:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Por qué este código para insertar DB me funciona solo en localhost?

¿Y si no lo tengo no hay otra forma de extraer el jSON?
  #4 (permalink)  
Antiguo 20/12/2012, 20:35
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Por qué este código para insertar DB me funciona solo en localhost?

Podrías intentar con cURL o un socket:
http://php.net/curl
http://php.net/fsockopen
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 20/12/2012, 20:48
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Por qué este código para insertar DB me funciona solo en localhost?

Ni el cURL me funciona y no sé por qué porque eso lo utilizo en otra sección de la página y sí me funciona:

Código PHP:
Ver original
  1. $curl = curl_init();
  2.     curl_setopt($ch, CURLOPT_URL, "http://search.twitter.com/search.json?q=%23ViveBarrio&geocode=20.6946,-103.39755,40km&include_entities=true&rpp=500");
  3.     curl_setopt($ch, CURLOPT_HEADER, 0);
  4.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  5.     $result = curl_exec($ch);
  6.     $return = json_decode( $result, true );
  7.     $result = $return->results; // Valid data now with just the tweet result.
  8.         foreach ($result as $key=>$status) {Aquí meto los resultados a unas variables para luego meterlos a una base de datos...
  #6 (permalink)  
Antiguo 20/12/2012, 21:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Por qué este código para insertar DB me funciona solo en localhost?

¿Has verificado que ese es realmente el problema? ¿Verificaste si obtienes datos? Revisa por partes, ¿el script no produce ningún error? ¿solo no inserta?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 21/12/2012, 01:26
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Por qué este código para insertar DB me funciona solo en localhost?

Cita:
Iniciado por David Ver Mensaje
¿Has verificado que ese es realmente el problema? ¿Verificaste si obtienes datos? Revisa por partes, ¿el script no produce ningún error? ¿solo no inserta?
Haciendo Var_Dump veo que con el curl si extrae la información, pero hay algún problema que hace que no se inserte la información. Algo está mal desde el foreach o un poco antes.
  #8 (permalink)  
Antiguo 21/12/2012, 03:35
Avatar de javiertroya  
Fecha de Ingreso: mayo-2009
Ubicación: Valencia
Mensajes: 15
Antigüedad: 15 años
Puntos: 2
Respuesta: ¿Por qué este código para insertar DB me funciona solo en localhost?

Hola, verifica el campo de la base de datos, muchas veces puede pasar que un campo tipo text o varchar estan recibiendo mas datos de los que pueden almacenar, es decir, si colocaste la longitud del campoa 140 caracteres (Twitter), y lo que estas insertando es más largo, entonces no se insertará la fila.

Saludos
  #9 (permalink)  
Antiguo 21/12/2012, 05:32
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Por qué este código para insertar DB me funciona solo en localhost?

json_encode/decode no funciona en versiones de PHP antiguas, verifica si están disponibles con function_exists
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Etiquetas: mysql, sql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:52.