Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] No me lee un objeto

Estas en el tema de No me lee un objeto en el foro de Javascript en Foros del Web. Hola a todos, estaba intentando pasar de una base de datos mysql a php y estos datos almacenarlos en un objeto de javascript para su ...
  #1 (permalink)  
Antiguo 14/12/2013, 13:35
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
No me lee un objeto

Hola a todos, estaba intentando pasar de una base de datos mysql a php y estos datos almacenarlos en un objeto de javascript para su posterior evaluacion y hasta ahí todo bien pero a la hora de comprobarlos con un evento onkeyup, no funciona. Aquí está la página:
Código HTML:
<?php 
	include("/conexiones/programa_satbalma.php");
	$i=0;	
	$sql="SELECT *
		  FROM prueba";
	$res=$db->query($sql);
	while($resultado=mysqli_fetch_row($res)) {
		$art="articulo_".$i;
		echo $art;
		echo "<script languaje='javascript'>";
		echo "var lista={".$art.":{cod:'".$resultado[0]."',nom:'".$resultado[1]."',pvp:'".$resultado[2]."'}};";
		echo "</script>";
		$i++;
	}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Documento sin título</title>
<script language="javascript">
function cod(codigo) {
	var i=0;
	for(i=0;i<20;i++) {
		var art="articulo_"+i;
		if(lista[art][cod]==codigo.value) {
			document.getElementById('nom').innerHTML=lista[art][nom];
			break;
		}
	}
}
</script>
</head>
<body>
<table>
	<tr>
    	<th width="100px">
        	Codigo
        </th>
        <th width="100px">
        	Nombre
        </th>
		<th width="100px">
        	PVP
        </th>
    </tr>
	<tr>
    	<td><input type="text" name="text" id="text" onkeyup="cod(this)"></td>
        <td id="nom"></td>
        <td id="pvp"></td>
    </tr>
</table>
</body>
</html> 
La base de datos solo contiene una tabla llamada prueba con los campos cod, nom y pvp que son los que quiero evaluar.
No se donde está el error. Si pudiesen resolverlo les estaría agradecido.
Atentamente,
Cristian Molina
  #2 (permalink)  
Antiguo 14/12/2013, 13:46
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: No me lee un objeto

Primero a funcion echo imprime a vuelo y tal como lo tinenes estas imprimiendo fuera de doc, utiliza mejor array y json
Código PHP:
<?php 
    
include("/conexiones/programa_satbalma.php");
    
$i=0;    
    
$sql="SELECT *
          FROM prueba"
;
    
$res=$db->query($sql);
    
$obj = array();
    while(
$resultado=mysqli_fetch_row($res)) {
        
$art="articulo_".$i;
        
$obj[$art]=array("cod"=>$resultado[0], "nom"=>$resultado[1], "pvp"=>$resultado[2]);
        
$i++;
    }
?>
<!DOCTYPE HTML>
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Documento sin título</title>
<script language="javascript">
var lista=<?=json_encode($obj);?>;
function cod(codigo) {
    var i=0;
    for(i=0;i<20;i++) {
        var art="articulo_"+i;
        if(lista[art][cod]==codigo.value) {
            document.getElementById('nom').innerHTML=lista[art][nom];
            break;
        }
    }
}
</script>
</head>
<body>
<table>
    <tr>
        <th width="100px">
            Codigo
        </th>
        <th width="100px">
            Nombre
        </th>
        <th width="100px">
            PVP
        </th>
    </tr>
    <tr>
        <td><input type="text" name="text" id="text" onkeyup="cod(this)"></td>
        <td id="nom"></td>
        <td id="pvp"></td>
    </tr>
</table>
</body>
</html>
saludos
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #3 (permalink)  
Antiguo 14/12/2013, 13:57
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: No me lee un objeto

Hola, no funciona.
He mirado la consola de Google Chrome a ver si veía el error y me dice esto:
Uncaught SyntaxError: Unexpected token ; prueba.php:7
Uncaught ReferenceError: cod is not defined prueba.php:33
onkeyup
  #4 (permalink)  
Antiguo 14/12/2013, 14:09
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: No me lee un objeto

estas seguro de que te lee bien la informacionde del mysql mira desde el codigo fuente esta inea var lista=<?=json_encode($obj);?>; a ver si lo datos te llegan correctamente

otra cosa por que si quieres buscar por en codigo lo por que no lo utilizas como llave

Código PHP:
<?php 
    
include("/conexiones/programa_satbalma.php");    
    
$sql="SELECT *
          FROM prueba"
;
    
$res=$db->query($sql);
    
$obj = array();
    while(
$resultado=mysqli_fetch_row($res)) {
        
$obj["cod_".$resultado[0]]=array( "nom"=>$resultado[1], "pvp"=>$resultado[2]);
    }
?>
<!DOCTYPE HTML>
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Documento sin título</title>
<script language="javascript">
var lista=<?=json_encode($obj);?>;
console.log(lista);
function cod(codigo) {
    var nom = lista["cod_"+codigo.value];
    document.getElementById('nom').innerHTML = ( nom )?nom:'no exsite';
}
</script>
</head>
<body>
<table>
    <tr>
        <th width="100px">
            Codigo
        </th>
        <th width="100px">
            Nombre
        </th>
        <th width="100px">
            PVP
        </th>
    </tr>
    <tr>
        <td><input type="text" name="text" id="text" onkeyup="cod(this)"></td>
        <td id="nom"></td>
        <td id="pvp"></td>
    </tr>
</table>
</body>
</html>
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #5 (permalink)  
Antiguo 14/12/2013, 14:20
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: No me lee un objeto

si con el console.log(); debe aparecer algo, no aparece nada en la web, ni escrito ni nada; la cosa es que poniendo echo $resultado[0].",".$resultado[1].",".$resultado[2]; justo antes de $obj["cod_".$resultado[0]]=array( "nom"=>$resultado[1], "pvp"=>$resultado[2]); si que muestra en pantalla los resultados
  #6 (permalink)  
Antiguo 14/12/2013, 14:41
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: No me lee un objeto

ok creo que el problema es con la simplificación de echo cambia esto por esto

Código PHP:
Ver original
  1. <?php echo json_encode($obj);?>;

otra cosa es que no tengas instalado el json_encode prueba con eso si imprime "NO EXISTE" es que no lo tienes
Código PHP:
Ver original
  1. <?php
  2.  
  3.     echo "NO EXISTE";
  4. }
  5.  
  6. ?>
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #7 (permalink)  
Antiguo 14/12/2013, 14:49
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: No me lee un objeto

esto es lo que sale cuando pongo lo de comprobar si existe json_encode

http://gyazo.com/2a59f5f29eebf2b188868ac5ed446770

y en cuanto al echo json_encode funciona a medias xD, muestra [object Object] en vez de pieza_1 o lo que sea (eso en nombre, en pvp no muestra nada)
  #8 (permalink)  
Antiguo 14/12/2013, 15:06
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: No me lee un objeto

@lynxcraft: ¿has leído la documentación? Si no se entrecomilla el nombre de la función, ésta se trata como constante.

Cosas de programar en varios lenguajes.
  #9 (permalink)  
Antiguo 14/12/2013, 15:10
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: No me lee un objeto

hay dios es verdad fallo mio lo siento

Código PHP:
  <?php
     
    
if(!function_exists('json_encode')) {
        echo 
"NO EXISTE";
    }
     
    
?>
Perdon
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #10 (permalink)  
Antiguo 14/12/2013, 15:39
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: No me lee un objeto

No te preocupes, un error lo tiene cualquiera. No dice nada de no existe por lo tanto debo de tenerlo instalado pero cuando pongo el código, en nombre sale [object Object] y en pvp no muestra nada.
  #11 (permalink)  
Antiguo 14/12/2013, 15:55
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: No me lee un objeto

otro error de mi parte hoy no se que pasa XD


Código Javascript:
Ver original
  1. function cod(codigo) {
  2.     var nom = lista["cod_"+codigo.value];
  3.     document.getElementById('nom').innerHTML = ( nom )?'pvp='+nom.pvp+'nom='+nom.nom:'no exsite';
  4. }
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #12 (permalink)  
Antiguo 14/12/2013, 16:01
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: No me lee un objeto

Ya va
modificando esto
Código HTML:
Ver original
  1. function cod(codigo) {
  2.     var nom = lista["cod_"+codigo.value];
  3.     document.getElementById('nom').innerHTML=nom.nom;
  4.     document.getElementById('pvp').innerHTML=nom.pvp
  5. }

Etiquetas: funcion, html, input, lee, objeto, php
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 08:54.