Foros del Web » Programando para Internet » Javascript »

Atascado con formulario php, javascript y ajax

Estas en el tema de Atascado con formulario php, javascript y ajax en el foro de Javascript en Foros del Web. Hola a todos! Estoy trabado con un formulario php, javascript y ajax. Tres campos, uno escaneo un articulo con un laser y sin recargar la ...
  #1 (permalink)  
Antiguo 13/04/2011, 02:53
 
Fecha de Ingreso: octubre-2010
Mensajes: 122
Antigüedad: 13 años, 6 meses
Puntos: 6
Atascado con formulario php, javascript y ajax

Hola a todos!

Estoy trabado con un formulario php, javascript y ajax. Tres campos, uno escaneo un articulo con un laser y sin recargar la pagina la base de datos me devuelve la descripcion del articulo.

Hasta aqui todo bien. Cuando la pagina de entrada carga el campo de "entrada" o escaneo esta listo para aceptar el "input" del scanner laser por javascript "focus" script.

Scaneo el articulo y me devuelve 1 dato, he aqui el problema numero 1:

1.- No logro que el sistema me devuelva dos campos (dos columnas de la tabla de la bd)

2.- No logro que despues de escanear un articulo y devuelva los datos, que el cursor vuelva automaticamente al campo de escaneo a esperar un nuevo scan

3.- No tengo idea de como organizar que segun vaya escaneando paquetes el sistema siga agregando una fila con los datos, es decir, escaneo 1 paquete y el sistema escribe los datos en una fila, vuelve el "focus" al campo de escaneo, escaneo un segundo paquete, el sistema escribe una segunda linea y vuelve al campo de escaneo, y asi sucesivamente.

Puede alguien orientarme en este sentido?

Pueden probar la pagina con este codigo: 8802946000357 , ingresandolo en "Scan" y oprimiendo "Enter" (esto simula como si ese codigo lo leyo el scanner laser): en sentnel.info

Este es el codigo de la pagina de entrada:

Código:
<script language="javascript" type="text/javascript">
<!-- 
// Get the HTTP Object
function getHTTPObject(){
   if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
   else if (window.XMLHttpRequest) return new XMLHttpRequest();
   else {
      alert("Your browser does not support AJAX.");
      return null;
   }
}   
 
// Change the value of the outputText field
function setOutput(){
    if(httpObject.readyState == 4){
        document.getElementById('outputText0').value = httpObject.responseText;
		document.getElementById('outputText1').value = httpObject.responseText;
    }
 
}
 
// Implement business logic    
function doWork(){    
    httpObject = getHTTPObject();
    if (httpObject != null) {
        httpObject.open("GET", "procesador.php?inputText="
                        +document.getElementById('inputText').value, true);
        httpObject.send(null); 
        httpObject.onreadystatechange = setOutput;
    }
}
 
var httpObject = null;
 
//-->
</script>
 
  <form name="testForm">
     Scan: 
       <input type="text"  onkeyup="doWork();" name="inputText" id="inputText" /> 
     Articulo: 
     <input type="text" name="outputText0" id="outputText0"/>
Peso:     
<input type="text" name="outputText1" id="outputText1" />
     
  </form>

<script language="JavaScript">
<!--

document.testForm.inputText.focus();

//-->
  </script>


Este es el codigo de la pagina que procesa el query:

Código:
<?php
	$link =  mysql_connect('localhost', 'pos', '12341234');
	mysql_select_db("pos",$link);
		if (!$link) {
    	die('No pudo conectarse: ' . mysql_error());
}
?>
<?php

$producto = $_GET['inputText']; 

function buscarProducto ($producto) {
	$query = "SELECT `scan_result`, `peso` FROM `pos`.`jos_inpospak_track` WHERE inputText = $producto";
	$result = mysql_query($query);
	$row = mysql_fetch_array($result);
	return $row[scan_result];
	}

echo buscarProducto($producto);
?>

Es un servidor de prueba, pueden "puyarlo" si quieren.

Gracias un millon!!!!
  #2 (permalink)  
Antiguo 13/04/2011, 03:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Atascado con formulario php, javascript y ajax

Hola:

Vayamos por partes... veo que haces una consulta de 2 campos pero solo devuelves uno...


Código:
function buscarProducto ($producto) {
	$query = "SELECT `scan_result`, `peso` FROM `pos`.`jos_inpospak_track` WHERE inputText = $producto";
	$result = mysql_query($query);
	$row = mysql_fetch_array($result);
	return array($row[scan_result], $row[peso]);
	}
Y para procesarlo podrías usar un implode con algún caracter no usado...

El resto lo veremos luego.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 13/04/2011, 03:11
 
Fecha de Ingreso: octubre-2010
Mensajes: 122
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: Atascado con formulario php, javascript y ajax

Eso es lo grande de estos foros! Es que muchos ojos ven mucho mejor que dos! Gracias mil caricatos! Ya vamos aclarando el panorama!
  #4 (permalink)  
Antiguo 13/04/2011, 03:45
 
Fecha de Ingreso: octubre-2010
Mensajes: 122
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: Atascado con formulario php, javascript y ajax

Bueno, vamos por partes (como diria Jack el destripador) , es obvio que soy un novaton.

Gracias a Caricatos que identifico que estaba consultando 2 campos pero solo devolvia uno y de inmediato me recomendo usar el implode. Asi lo he hecho y ahora obtenemos ambos valores, pero como yo no se mucho de esto ahora en ambos campos aparecen ambos valores, es decir, por ejemplo:

en vez de darme en el Articulo el valor "GLUE STICK LARGE" y en el peso el valor "11 OZ" me esta arrojando en ambos campos los dos valores asi: "GLUE STICK LARGE 11 OZ".

De manera que ahora si alguien contribuye a enseñarme como separar los valores obtenidos ya ire avanzando un paso mas.

De nuevo gracias!

Ahora la funcion luce asi:

Código:
function buscarProducto ($producto) {
	$query = "SELECT `scan_result`, `peso` FROM `pos`.`jos_inpospak_track` WHERE inputText = $producto";
	$result = mysql_query($query);
	$row = mysql_fetch_array($result);
	$arr = array ($row[scan_result], $row[peso]);
	echo implode (" ",$arr);
	}

echo buscarProducto($producto);
  #5 (permalink)  
Antiguo 13/04/2011, 04:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Atascado con formulario php, javascript y ajax

Hola:

La parte del implode iría fuera de la función, concretamente lo que luego debería recibir javascript con ajax.responseText... no voy a liarte pero si la respuesta fuese con responseXML se trataría de una buena estructura para procesar... pero tal como lo tienes:

function buscarProducto ($producto) {
$query = "SELECT `scan_result`, `peso` FROM `pos`.`jos_inpospak_track` WHERE inputText = $producto";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
return array ($row[scan_result], $row[peso]);
//echo implode (" ",$arr);
}

echo implode(",", buscarProducto($producto));

Luego al recibirlos tendrías que usar split:

respuesta = ajax.responseText.split(",");

Y de esa manera obtienes dos valores en un array: el primero scvan_result y el segundo el peso.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 13/04/2011, 14:19
 
Fecha de Ingreso: octubre-2010
Mensajes: 122
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: Atascado con formulario php, javascript y ajax

Muy agradecido Caricatos, muy colaboradora actitud, especialmente ante algunos que como yo quiere aprender sobre la base de las "manos a la obra" pero que sin el apoyo o direccion de otros no podria subir mas que unos peldaños en una larga escalera.

En este caso:

Cita:
Iniciado por caricatos Ver Mensaje

Luego al recibirlos tendrías que usar split:

respuesta = ajax.responseText.split(",");

No he logrado comprender cabalmente el uso del split correctamente ya que he tratado de usarlo infructuosamente. Podrian empujarme un poco mas en esto? La funcion setOuput es esta:

Código:
function setOutput(){
    if(httpObject.readyState == 4){
        document.getElementById('outputText0').value = httpObject.responseText;
		document.getElementById('outputText1').value = httpObject.responseText;
    }
 
}
Donde o como utilizo el split para obtener y presentar los dos valores en dos campos?

Reitero mis agradecimientos!
  #7 (permalink)  
Antiguo 13/04/2011, 16:51
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Atascado con formulario php, javascript y ajax

Hola:

Lo que yo puse como ajax.responseText, tu lo tienes como httpObject.responseText... ¡a ver si te das cuenta...!

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 13/04/2011, 17:56
 
Fecha de Ingreso: octubre-2010
Mensajes: 122
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: Atascado con formulario php, javascript y ajax

Yes! Yes! Yes!

Un gran gran gran agradecimiento a Caricatos!

Realmente agradezco su ayuda, por momentos desisto de esta idea de aprender a programar pero es que de veras quisiera lograr esta meta y gracias a personas como Caricatos me animo a continuar, aunque sea apoyandome de ustedes para poder avanzar.

Para otros que pudiera serle util en el futuro esta es la forma como termino y funciono:

Código:
function setOutput(){
    if(httpObject.readyState == 4){
		var respuesta = httpObject.responseText.split(",");
        document.getElementById('outputText0').value = httpObject.innerHTML= respuesta[0];
		document.getElementById('outputText1').value = httpObject.innerHTML= respuesta[1];
    }
 
}

  #9 (permalink)  
Antiguo 13/04/2011, 19:33
 
Fecha de Ingreso: octubre-2010
Mensajes: 122
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: Atascado con formulario php, javascript y ajax

En relacion a mi segunda inquietud (No logro que despues de escanear un articulo y devuelva los datos, que el cursor vuelva automaticamente al campo de escaneo a esperar un nuevo scan) abrire un nuevo tema, ya que veo que en realidad debi tratarlo como puntos separados. Nuevamente gracias a Caricatos por su ayuda y espero que este tema contribuya a solucionar las dudas de otros.

Etiquetas: ajax, php, formulario
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 05:52.