Foros del Web » Programando para Internet » Javascript »

porque no me cambia los datos de mi funcion

Estas en el tema de porque no me cambia los datos de mi funcion en el foro de Javascript en Foros del Web. Mira, si por último pruebas con el código que ahora pegaré tal cual, y que a mi me funciona ¿qué pasa? recuperar.php Código: <?php $numero ...

  #31 (permalink)  
Antiguo 14/09/2011, 09:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 16 años, 3 meses
Puntos: 27
Respuesta: porque no me cambia los datos de mi funcion

Mira, si por último pruebas con el código que ahora pegaré tal cual, y que a mi me funciona ¿qué pasa?

recuperar.php
Código:
<?php
$numero = null;
if(is_numeric($_GET['codigo'])){
	$con=mysql_connect("localhost","root","elpassword");
	mysql_select_db("db");
	$consulta="select * from prueba where id=".$_GET['codigo'];
	$reg=mysql_query($consulta);
	while ($row = mysql_fetch_assoc($reg)){
		$numero[]= $row['numero'];
	}
	mysql_close($con);
}
echo json_encode($numero);
?>
funcion.js
Código:
function objetoAjax()   {
    if (window.XMLHttpRequest)
        _ajax = new XMLHttpRequest();
    else
        if (window.ActiveXObject)
            _ajax = new ActiveXObject("Microsoft.XMLHTTP");
        else
            _ajax = false;
    return _ajax;
}

var procesamiento, retorno;
function limpiar() {
	try { window.clearInterval(procesamiento); } catch(e) {}
	retorno = null;
}
function pedir(dato) {
	limpiar();
	document.getElementById('ajax_datos').innerHTML = '';
	var Ajax = objetoAjax();
	Ajax.open("get","recuperar.php?codigo=" + dato);
	Ajax.onreadystatechange = function() {
		if (Ajax.readyState == 4 && (Ajax.status == 200 || Ajax.status == 501)){
        		retorno = eval(Ajax.responseText);
			if(retorno == null)
				return;
			procesamiento = window.setInterval(MostrarRegistros, 1500);
		}
	}
	Ajax.send(null);
}
function MostrarRegistros(){
	contenido = '';
	var dato = retorno.shift();
	if(dato == undefined) {
		limpiar();
		return;
	}
	contenido += '<div id="registro'+dato+'"><p>'+dato+'</p></div>';
	var dato = retorno.shift();
	if(dato == undefined)
		limpiar();
	else
		contenido += '<div id="registro'+dato+'"><p>'+dato+'</p></div>';
	document.getElementById('ajax_datos').innerHTML = contenido;
}
codigo.php
Código:
<html>
<head>
        <script type="text/javascript"  src="funcion.js"></script>
</head>
<body>
<select name="codigo" id="codigo" onchange="pedir(document.getElementById('codigo').value)">
    <option value="">selecciona número</option>
<?php
        $con=mysql_connect("localhost","root","elpassword");
        mysql_select_db("db");
        $consulta="select * from prueba";
        $reg=mysql_query($consulta);
        while ($row = mysql_fetch_assoc($reg)){
?>
        <option value="<?php echo $row['numero']; ?>"><?php echo $row['numero'];?></option>
<?php
        }
        mysql_close($con);
?>
</select>
 <div id="ajax_datos"></div>
</body>
</html>
Y obviamente cambiando la clave de acceso por la que usas.
  #32 (permalink)  
Antiguo 15/09/2011, 04:52
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: porque no me cambia los datos de mi funcion

refreegrata, en principio gracias por tu colaboracion, referente al codigo decirte que si que funciona pero aparte del resultado quiero añadirle otra variable donde contengo un array de los nombres de unas imagenes que tengo en un campo de mi db, pero no me funciona, no se a que es debido, saludos.
  #33 (permalink)  
Antiguo 15/09/2011, 06:05
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 16 años, 3 meses
Puntos: 27
Respuesta: porque no me cambia los datos de mi funcion

¿Te refieres a que a parte del numero quieres devolver otro campo, de la misma tabla, llamado imagen y que es char o varchar?
  #34 (permalink)  
Antiguo 15/09/2011, 06:31
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: porque no me cambia los datos de mi funcion

si, eso me refiero pero ese otro campo seria el nombre de una imagen, donde quisiera mostrar la imagen añadiendo su ruta correspondiente, osea que seria el numero y tambien la imagen mostrarla en pantalla cambiandola, saludos.
  #35 (permalink)  
Antiguo 15/09/2011, 06:49
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 16 años, 3 meses
Puntos: 27
Respuesta: porque no me cambia los datos de mi funcion

Eso es simplemente editar un poco.

funcion.js
Código:
//Lo anterior igual al ultimo posteo
function MostrarRegistros(){
        contenido = '';
        var dato = retorno.shift();
        if(dato == undefined) {
                limpiar();
                return;
        }
        contenido += '<div id="registro'+dato.num+'"><p>'+dato.num+'</p><p>'+dato.img+'</p></div>';
        var dato = retorno.shift();
        if(dato == undefined)
                limpiar();
        else
                contenido += '<div id="registro'+dato.num+'"><p>'+dato.num+'</p><p>'+dato.img+'</p></div>';
        document.getElementById('ajax_datos').innerHTML = contenido;
}
y recuperar.php
Código:
<?php
$numero = null;
if(is_numeric($_GET['codigo'])){
        $con=mysql_connect("localhost","root","elpassword");
        mysql_select_db("db");
        $consulta="select * from prueba where id=".$_GET['codigo'];
        $reg=mysql_query($consulta);
        while ($row = mysql_fetch_assoc($reg)){
                $numero[]= array('num'=>$row['numero'],
                                            'img'=>$row['imagen']);
        }
        mysql_close($con);
}
echo json_encode($numero);
?>
Es decir, según el código que te mostré anteriormente, en funcion.js editar únicamente la funcion MostrarRegistros y, por supuesto, editar recuperar.php

A mi me funciona. Obviamente aquí sólo estoy imprimiendo el contenido de las columnas numero e imagen. Tu probablemente querás pasar el contenido de "imagen" al src de un tag img o algo así, También deberás comprobar si la imagen no está nula y eso, pero eso es cuento tuyo.

Saludos.
  #36 (permalink)  
Antiguo 15/09/2011, 07:00
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: porque no me cambia los datos de mi funcion

refreegrata, pero no lo quiero todo en el mismo array, osea que
$numero[]= $row['numero'];
$imagen[]= $row['imagen'];

solo que a la hora de mostrar en pantalla mostrar la imagen completa:
<img src='perfil/$imganen'>

Me ayudes o no gracias, saludos.
  #37 (permalink)  
Antiguo 15/09/2011, 07:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 198
Antigüedad: 16 años, 3 meses
Puntos: 27
Respuesta: porque no me cambia los datos de mi funcion

Mira es que tu puedes jugar con el código de muchas maneras. Ya teniendo eso lo puedes recorrer o lo que sea. Por último:

recuperar.php
Código:
<?php
$numero = null;
$imagen = null;
if(is_numeric($_GET['codigo'])){
        $con=mysql_connect("localhost","root","elpassword");
        mysql_select_db("db");
        $consulta="select * from prueba where id=".$_GET['codigo'];
        $reg=mysql_query($consulta);
        while ($row = mysql_fetch_assoc($reg)){
                $numero[] = $row['numero'];
                $imagen[] = $row['imagen'];
        }
        mysql_close($con);
}
echo json_encode(array('num'=>$numero,
                                    'img'=>$imagen));
?>
en funcion.js
Código:
.....
var procesamiento, numero, imagen;
....
function pedir(dato) {
        limpiar();
        document.getElementById('ajax_datos').innerHTML = '';
        var Ajax = objetoAjax();
        Ajax.open("get","recuperar.php?codigo=" + dato);
        Ajax.onreadystatechange = function() {
                if (Ajax.readyState == 4 && (Ajax.status == 200 || Ajax.status == 501)){
                        
                        var retorno = new Function('return' + Ajax.responseText)();
                        numero = retorno.num;//arreglo de numeros
                        imagen = retorno.img;//arreglo de imagenes
                        
                        if(numero == null)
                                return;
                        procesamiento = window.setInterval(MostrarRegistros, 1500);
                }
        }
        Ajax.send(null);
}
Con el cambio en:
-------------------------
var retorno = new Function('return' + Ajax.responseText)();
numero = retorno.num;//arreglo de numeros
imagen = retorno.img;//arreglo de imagenes
--------------------------

Es decir, devolver un array con solo 2 elementos, el array num y el de imgs.

Ves, tendrías que adecuar MostrarRegistros a lo que quieres y limpiar si no quieres que vacíe la imagen, evaluar las imágenes si es que fuesen NULL o NOT NULL, etc. y en fin, depurar las cosas de acuerdo a lo que necesites.

Etiquetas: funcion, php, cambios
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 20:20.