Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

problema con valor de una variable.

Estas en el tema de problema con valor de una variable. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola , tengo una clase X que tien un metodo que hace lo siguiente. Código PHP: class  X { private  $db ; public function  __contruct ( ...
  #1 (permalink)  
Antiguo 25/08/2011, 07:22
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
problema con valor de una variable.

Hola , tengo una clase X que tien un metodo que hace lo siguiente.

Código PHP:


class X{

private 
$db;

public function 
__contruct($db){

$this->db=$db;

}

public function 
metodo(){

// consultas...


                   
while( $res $this->link->obtener_fila($result) )
                    {



                       
$stmt_select->bindParam(1,$res->idmissions);

                       
$result_AM $stmt_select->execute();

                       if( !
$result_AM )
                       {

                           throw new 
Exception("Error al con al ejecutar la consulta");

                       }

                       
$count_actions=0;

                       while( 
$row $stmt_select->fetchObject() )
                       {

                            
$current_tmp json_decode($row->objectjson);

                            
$current_tmp->amount   $row->amount;

                            
$current_tmp->idaction $row->idaction;

                            
$types json_decode($row->type);

                            
$current_tmp->type      $types->type;

                            
$current_tmp->context   $types->context;

                            
$actions[] = array('idaction'    => $row->idaction,
                                               
'actionIcon'  => $row->actionicon,
                                               
'description' => $row->description,
                                               
'amount'      => $current_tmp->amount,
                                               
'current'     => $current_tmp->current);

                            
$current[] = json_encode($current_tmp);

                            
$count_actions $count_actions $row->amount ;
                       }
                       
$rewardType explode'_' $res->recompense );

                       
$missions[]=array(
                                          
'idmission'   => $res->idmissions,
                                          
'description' => $res->description,
                                          
'name'        => $res->name,
                                          
'reward'          => $rewardType[0],
                                          
'rewardType'  => $rewardType[1],
                                          
'actions'       => $actions,
                                          
'dummy'       => $res->dummy,
                                         );

                       
$actions = array();


                       
$stmt->bindParam(1$this->idufb);  
                       
$stmt->bindParam(2$res->idmissions);
                       
$stmt->bindParam(3$count_actions);
                       
$stmt->bindParam(4json_encode($current));
                       
$result_insert $stmt->execute();  
                       if(!
$result_insert)
                       {
                           throw new 
Exception("Error en la insercion");
                       }

                       
$current = array();

                    }



}



si llamo el metodo asi todo funciona bien.


Código PHP:

$X
=   new x($db);
$X->metodo(); 
pero si llamo el metodo dentro de la clase estas variables de array que retorna llegan nulas

'description' => $res->description,
'name' => $res->name,

no se que esta pasando porque si imprimo el contenido de $res->name antes de guardarlo en el array me muestra el dato pero no queda en el array no se que pasa.


saludos
  #2 (permalink)  
Antiguo 25/08/2011, 12:36
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con valor de una variable.

¿Cómo haces cuando instancias en la clase?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 25/08/2011, 12:56
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

pues cuando lo utilizo por fuera asi como esta en el code, pero en un metodo detro de la misma clase lo llamo osea $this->metodo().

saludos
  #4 (permalink)  
Antiguo 25/08/2011, 13:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con valor de una variable.

Pues mira a mi no me da problemas, ejemplo
Código PHP:
Ver original
  1. <?php
  2. class Foo
  3. {
  4.     private $_foo;
  5.  
  6.     public function __construct($foo)
  7.     {
  8.         $this->_foo = $foo;
  9.     }
  10.  
  11.     public function bar()
  12.     {
  13.         return $this->candy();
  14.     }
  15.  
  16.     public function candy()
  17.     {
  18.         return $this->_foo;
  19.     }
  20. }
  21. $objFoo = new Foo('Foo Bar Candy');
  22. echo $objFoo->bar();
¿Te menciona algún error, o solo no muestra el resultado que esperas?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 25/08/2011, 13:27
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

hola no me da ningun log , es algo muy raro no se que esta pasando porque los datos no los estoy imprimiendo con echo sino con error_log y sale como si estubieran null pero son solo esas dos varibles porque las otras si las muestra bien,

Código PHP:
Ver original
  1. 'description' => $res->description,
  2. 'name' => $res->name,
  3. 'idmission' = $res->idmission,

esto me retorna asi

'description' =>null,
'name' =>null,
'idmission' = 1,

y las tres variebles bienen de una consulta osea deberia ser todas null o funcionar todas. pero l mas raro todavia es que esos datos los mando por amfphp a flash y hay si los toma. pero no si los imprimo en un log.


saludos
  #6 (permalink)  
Antiguo 25/08/2011, 13:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con valor de una variable.

Verifica donde las estás almacenando las variables, posiblemente no las estás llamando y otorgandole algún valor.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 25/08/2011, 13:42
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

pues es que lo raro es esto mira hago esto en el ciclo.

Código PHP:
Ver original
  1. while($row =  getRor()){
  2.  
  3.     error_log($row->campo);
  4.     $z  = $row->campo;
  5.  
  6.      error_log($z);
  7.  
  8. }
  9.  
  10. la salida es asi
  11.  
  12. 12345
  13.  
  14. null

osea si la almaceno e imprimo sale null.


saludos
  #8 (permalink)  
Antiguo 25/08/2011, 13:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con valor de una variable.

Haz un var_dump a $row.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 25/08/2011, 15:31
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

mira que le hice el var_dump y si salen los datos no se que porque no salen en los log. se embrujo php.


saludos
  #10 (permalink)  
Antiguo 26/08/2011, 13:56
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

ya me di cuenta el problema es el json_encode porque con el var_dump si salen bien , porque pasa ni idea , pero entonces quisiera saber de que otra forma podria pasar un objeto desde php a javascript.?

saludos
  #11 (permalink)  
Antiguo 26/08/2011, 13:58
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con valor de una variable.

Se supone que no tengas problemas pasar el valor con json, ¿cómo estás haciendo?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 26/08/2011, 13:59
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

Este es el trozo de codigo con el que estoy probando, cuando hago la llamada desde js la imprimo por echo y json, cuando es por la url con var_dump cuando lo hago con le var_dump si sale los datos que menciono arriba pero con echo no.

Código PHP:
Ver original
  1. if($this->isAjax())
  2.       {
  3.                
  4.         $mission  =  new Missions( $this->conn );
  5.         $missions->missions   =  $mission->verifyInvitedFriend();
  6.         $limit    = $mission->getMissionsOnTime();
  7.         $missions->newmission =  $mission->getMissionsNew($limit);
  8.        
  9.         echo json_encode($missions);  
  10.          
  11.       }else{
  12.          
  13.         $mission  =  new Missions( $this->conn );
  14.         $missions->missions   =  $mission->verifyInvitedFriend();
  15.         $limit    = $mission->getMissionsOnTime();
  16.         $missions->newmission =  $mission->getMissionsNew($limit);
  17.        
  18.         var_dump($missions);
  19.          
  20.       }


saludos
  #13 (permalink)  
Antiguo 26/08/2011, 14:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: problema con valor de una variable.

El var_dump que te muestra como tal, es probable que lo que quieres mostrar no pueda ser codificado y por ende te da NULL.

Saludos.
  #14 (permalink)  
Antiguo 26/08/2011, 14:16
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

Código:
object(stdClass)#19 (2) { ["missions"]=> array(1) { [0]=> array(7) { ["idmission"]=> string(1) "6" ["name"]=> string(18) "¡Comparte y Crece!" 
["reward"]=> string(3) "600" ["rewardType"]=> string(2) "xp" ["actions"]=> array(0) { } ["complete"]=> bool(true) ["missions"]=> array(0) { } } } 
["newmission"]=> array(1) { [0]=> array(7) { ["idmission"]=> string(1) "7" ["description"]=> string(37) " bienvenida." ["name"]=> string(19) "¡Sé un buen
 vecino!" ["reward"]=> string(3) "500" ["rewardType"]=> string(2) "xp" ["dummy"]=> string(75) "dummies" ["actions"]=> array(2) { [0]=> array(5) { 
["idaction"]=> string(1) "2" ["actionIcon"]=> string(75) "detail" ["description"]=> string(23) "Comprar ." ["amount"]=> string(1) "2" ["current"]=> int(0) } 
[1]=> array(5) { ["idaction"]=> string(2) "10" ["actionIcon"]=> string(76) "message" ["description"]=> string(15) "Deja 1 mensaje." ["amount"]=> string(1)
 "1" ["current"]=> int(0) } } } } }

y como tal esta es la variable que la muestra null

["name"]=> string(18) "¡Comparte y Crece!"



saludos
  #15 (permalink)  
Antiguo 26/08/2011, 14:18
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: problema con valor de una variable.

Es que no es lo mismo un var_dump a un objeto que un echo del resultado del json_encode, en el segundo la visibilidad importa, no tendrás las propiedades que comentas como private o protected ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #16 (permalink)  
Antiguo 26/08/2011, 14:36
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

no porque son datos que vienen de una BD , ademas los demas datos tambienv vienen de la BD y si los muestra , este es el resultado del echo json

Código PHP:
Ver original
  1. {"missions":[{"idmission":"6","name":null,"reward":"600","rewardType":"xp","actions":[],"complete":true,"missions":[]}],"newmission":
  2. [{"idmission":"7","description":null,"name":null,"reward":"500","rewardType":"xp","dummy":"http:\/\/static.google.com.co\/assets\/missions\/du
  3. mmies\/japonesa.swf","actions":[{"idaction":"2","actionIcon":"detail","description":"Comprar ","amount":"2","current":0},
  4. {"idaction":"10","actionIcon":"message","description":"Deja 1 mensaje.","amount":"1","current":0}]}]}


saludos

Última edición por GatorV; 28/08/2011 a las 17:43
  #17 (permalink)  
Antiguo 26/08/2011, 14:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: problema con valor de una variable.

Puedes postear la clase ?, esas propiedades son todas públicas ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #18 (permalink)  
Antiguo 26/08/2011, 14:52
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

Esta es , le quite las consultas para que no quedara tan larga,

Código PHP:


<?php
session_start
();

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
class Missions{
    
  
    private 
$conn;
    
    private 
$idufb;
    
    function 
__construct($link) {

       
$this->conn  $link;
       
       
$this->idufb $_SESSION['id'];
       
    }
 


    public function 
verifyInvitedFriend(){
        
       try{ 
        
        
$mission_complete = array();
        
$id_misions = array();  

        
        
$stmt $this->getObjectMission);
         

         if(
$stmt)
         {
              

              
$result_update_current $this->conn->prepare($this->update_action);
              
              
$j=0;
               
              while( 
$row $stmt->fetchObject() )
              {
                 
$id_misions[$j] = $row->idmissions
                 
                 
$tmp_actions json_decode($row->current);
                 
                 for( 
$i 0;$i count$tmp_actions ); $i++ )
                 {

                    
$tmp_action  json_decode($tmp_actions[$i]);
                

                   if( 
$tmp_action->idaction == && $tmp_action->current $tmp_action->amount )
                   {

                            
$id_misions[$j] = $row->idmissions
                             ++
$tmp_action->current

                             
$tmp_actions[$i] = json_encode($tmp_action);

                             
$result_update_current->bindParam(1,  json_encode($tmp_actions));
                             
$result_update_current->bindParam(2,  $this->idufb);
                             
$result_update_current->bindParam(3,  $row->idactivemissions);

                            
                             
//if(false)
                             
if(!$result_update_current->execute())
                             {
                                 throw new 
Exception("Problema en la consulta"); 
                             }  

                    }else{

                   

                    }

                 }

                 ++
$j;  
                   
              }
               
                
$ids_misions  implode(',',$id_misions);
                

                
                
$mission_complete  $this->getMission($ids_misions) ;
                

                
                return 
$mission_complete;
              
           }else{
              
              return 
$mission_complete
              
           }  
             
       }  catch (
Exception $e){

       }
    }

    private function 
getObjectMission($idaction){
        
    try{
      
            
$mission_complete->actions   = array();
       


              
$result $this->conn->prepare($query1);

              
$result->bindParam(1,$idaction);
              
$result->bindParam(2,$this->idufb);
    
              
$result->execute();

              
$row $result->fetchObject();

              if(
$row->num!=0)
              {  
                  
                 
                      
                      
$result2 $this->conn->prepare($query2);

                      
$result2->bindParam(1,$idaction);
                      
$result2->bindParam(2,$this->idufb);

                      
$result2->execute();

                      return 
$result2;
              
              }else{
                  
                      return 
false;
                  
              }
            
            
            
        }catch(
Exception $e){
            

            
        }
        
        
    }

    private function 
getMission$idmissions ){
    
      try{




            
$stmt_activemission   $this->conn->prepare$query_activemission );
            
            
$stmt_activemission->bindParam$this->idufb );
            
            
$result_activemission $stmt_activemission->execute();
            
            if( 
$result_activemission )
            {
                
              
              while( 
$row_activemission $stmt_activemission->fetchObject() )
              {

                 
                       
$complete =  false;
                        
                       
$stmt_select->bindParam$row_activemission->idmissions);

                       
$result_AM $stmt_select->execute();

                       
$actions_current json_decode$row_activemission->current );

                       
$i=0;
                       
                       
$rewardType explode'_' $row_activemission->recompense );
                       
                       while( 
$row $stmt_select->fetchObject() )
                       {
                                  
                           
                             if( 
$row_activemission->completed == )
                             {

                                 
$actions  = array();
                                 
$complete true
                                 
$NewMissions = array();

                                 break;

                             }else{

                                  
$NewMissions = array();

                                  
$current     json_decode($actions_current[$i]);

                                  
$actions[]   = array('idaction'    => $row->idaction,
                                                       
'description' => $row->description,
                                                       
'amount'      => $current->amount,
                                                       
'current'     => $current->current);

                             }


                             ++
$i;


                         }                   
     
                       
                     
$missions[]=array(
                                       
'idmission'   => $row_activemission->idmissions,
                                       
'name'        => $row_activemission->name,
                                       
'reward'      => $rewardType[0],
                                       
'rewardType'  => $rewardType[1],
                                       
'actions'     => $actions,
                                       
'complete'    => $complete,
                                       
'missions'    => $NewMissions
                                      
);
                       
                     
$actions = array();
 
              }
                
                
                
            }
            
            




      }catch(
Exception $e){



      }
      
     

      return 
$missions;    

    }

    public function  
getMissionsOnTime(){
    
     try{
        
          
$mission =  array();
          
           
$stmt   $this->conn->prepare($query);
           
           
$stmt->bindParam(1$this->idufb); 
           
           
$result $stmt->execute(); 
           
           if(
$result)
           {

             
$row $stmt->fetchObject();

             if( 
$row->num 4  )
             {
                   
                 return   
NUM_MISSIONS $row->num ;
                    
                   
             }else{
                 
                 return 
false;
                 
             }


           }



      }catch(
Exception $e){

       

      }

    }





}
?>

saludos
  #19 (permalink)  
Antiguo 26/08/2011, 17:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con valor de una variable.

En la clase estoy viendo que haces doble json_encode, deberías de solo hacer uno. Me refiero a
Código PHP:
Ver original
  1. $tmp_actions[$i] = json_encode($tmp_action);
  2. $result_update_current->bindParam(1,  json_encode($tmp_actions));
Debe ser
Código PHP:
Ver original
  1. $tmp_actions[$i] = $tmp_action;
  2. $tmp_actions = json_encode(tmp_actions);
  3. $result_update_current->bindParam(1,  $tmp_actions);
Si te fijas tuve que colocarlo afuera de bindParam porque te debe dar un error ya que bindParam se debe pasar solo variables ya que estas se van a pasar por referencia en el método. Si no vas a tener que usar bindValue.

Otra cosa es que en la clase no estás usando los catch, ¿para qué los tienes entonces? Tampoco haz indicado que te muestre lo errores ya que PDO por defecto no los enseña, tienes que mostrarlos. Debes hacer algo como
Código PHP:
Ver original
  1. try {
  2.     $dbh = new PDO($dsn, $user, $password);
  3.     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  4. } catch (PDOException $e) {
  5.     echo 'Connection failed: ' . $e->getMessage();
  6. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #20 (permalink)  
Antiguo 26/08/2011, 17:56
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

Muchas gracias por la respuesta los catch lo quite para no colocar todo el codigo pero si lo uso , si te fijas antes del los dos json_encode hay dos json_decode , pero no entendi lo de bindValue osea si coloco eso asi me devolveria un texto parseado json y no seria como una variable?

edito : es una logica medio mala la de los json_encode , pero lo podria cambiar , pero sera eso lo que genera el problema?


saludos


saludos

Última edición por RIVERMILLOS; 26/08/2011 a las 18:02
  #21 (permalink)  
Antiguo 26/08/2011, 18:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con valor de una variable.

Bueno, trata de colocar un solo json_encode y luego un json_decode solamente.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #22 (permalink)  
Antiguo 29/08/2011, 12:56
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

ya lo cambie a un solo json.. pero igual sigue el problema, creo que el json que uso para enviar los datos a javascript.

saludos
  #23 (permalink)  
Antiguo 30/08/2011, 09:31
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

ya me di cuenta cual es el problema , le quiete a la palabra este simbolo ¡ y ahora si funciona pero no se porque no sirve con el json que podria ser?


saludos
  #24 (permalink)  
Antiguo 31/08/2011, 13:50
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

haciendo pruebas tampoco me admite tildes , alguien sabe como podria solucionar esto?


saludos
  #25 (permalink)  
Antiguo 31/08/2011, 14:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con valor de una variable.

En todo eso, lo que muestras es problema de codificación. Trata de ver si la codificación que recibes es la misma que estás usando.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #26 (permalink)  
Antiguo 31/08/2011, 14:02
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 2 meses
Puntos: 15
Respuesta: problema con valor de una variable.

No me perdi con la codificacion, como compruebo eso , lo que estoy haciendo es que un objeto lo convierto a json y luego en js lo convierto a un objeto js , pero entonces los texto que traiga el objeto php qu tenga caracteres especiales me los convierte en null.


saludos
  #27 (permalink)  
Antiguo 31/08/2011, 16:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con valor de una variable.

Para que me entiendas mejor,

ANSI
Código PHP:
Ver original
  1. <?php
  2. $obj = new stdClass();
  3. $obj->missions = array(
  4.     array(
  5.         'idmission' => 6,
  6.         'name' => '¡Comparte y Crece!'
  7.     ),
  8.     array(
  9.         'idmission' => 7,
  10.         'name' => '¡Sé un buen vecino!'
  11.     )
  12. );
  13. echo json_encode($obj);
Imprime
Código HTML:
Ver original
  1. {"missions":[{"idmission":6,"name":null},{"idmission":7,"name":null}]}

UTF-8
Código PHP:
Ver original
  1. <?php
  2. $obj = new stdClass();
  3. $obj->missions = array(
  4.     array(
  5.         'idmission' => 6,
  6.         'name' => '¡Comparte y Crece!'
  7.     ),
  8.     array(
  9.         'idmission' => 7,
  10.         'name' => '¡Sé un buen vecino!'
  11.     )
  12. );
  13. echo json_encode($obj);

Imprime
Código HTML:
Ver original
  1. {"missions":[{"idmission":6,"name":"\u00a1Comparte y Crece!"},{"idmission":7,"name":"\u00a1S\u00e9 un buen vecino!"}]}

Vez como la codificación afecta la conversión a json. Si te fijas en el manual dice
Cita:
Iniciado por http://php.net/manual/en/function.json-encode.php
The value being encoded. Can be any type except a resource.

This function only works with UTF-8 encoded data.
Por lo que el problema es UTF-8, una forma de resolver el problema es usar utf8_encode y trabajar con la función o lo mejor es que los archivos sean utf-8 y todo lo demás
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: php, variables
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 09:31.