Foros del Web » Programando para Internet » Jquery »

Rescatar dos id con funcion de jquery

Estas en el tema de Rescatar dos id con funcion de jquery en el foro de Jquery en Foros del Web. Hola que tal, tengo un problemon haber si me pueden ayudar, les cuento: tengo un select al cual le envio dos id en el value ...
  #1 (permalink)  
Antiguo 13/01/2011, 14:59
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Rescatar dos id con funcion de jquery

Hola que tal, tengo un problemon haber si me pueden ayudar, les cuento:
tengo un select al cual le envio dos id en el value el id_obra y el id_cliente aca les muestro el select:

Código PHP:
Ver original
  1. <?php
  2. $id_cliente=$_REQUEST['id_cliente'];?> // rescato el id, este es el que quiero pasarselo junto con los otros al select
  3. <select name="Select2" id="Select2" align="middle" onChange="Obra(this.value)">
  4. <?php $SqlQuery=mysql_query("select c.ID_CLIENTE,o.ID_OBRA,o.DE_NOMBRE from lk_per_cliente c,lk_lug_obra o where c.ID_CLIENTE='$id_cliente' and
  5. o.ID_CLIENTE='$id_cliente' order by o.DE_NOMBRE asc",$cn); //como no se me ocurre capturarlo directamente, lo consulto y me lo traigo nuevamente asi
  6. while ($AccesaRegP=mysql_fetch_array($SqlQuery))
  7. { ?>
  8. <option value="<?php echo $AccesaRegP['ID_OBRA']."--".$AccesaRegP['ID_CLIENTE']?>"><?php echo htmlentities($AccesaRegP['DE_NOMBRE']) ?></option>
  9. <?php }?>
  10. </select>
y con esta funcion deseo rescatar los dos id (id_obra y el id_cliente), pero solo consigo rescatar el id_obra, y no puedo rescatar el id_cliente y necesito eviar los dos id a la pagina LlenaDatosObra.php, aca les posteo la funcion que utilizo:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.         $("#Select2").change(function(){
  3.             Obra($(this).val());
  4.         })
  5.     });
  6.     function Obra(value){
  7.     var html="";
  8.     $.ajax({
  9.       url: "LlenaDatosObra.php",
  10.       contentType:"application/x-www-form-urlencoded; charset=utf-8",
  11.       type:"GET",
  12.       data: "ID_OBRA="+value +"&ID_CLIENTE="+value,//Aca trato de rescatarlos y solo puedo con el id_obra..???   
  13.       error: function(){
  14.                         alert('Error');},
  15.       success: function(data){
  16.         //imprimo data en el div_oculto
  17.         $("#div_oculto").html(data);
  18. <!-- ************  CARGANDO OBRA ************************ -->
  19.         document.FormData.de_numero.value=$("span#de_numero").html();
  20.         document.FormData.Obra_telefono.value=$("span#Obra_telefono").html();
  21.         document.FormData.Obra_fax.value=$("span#Obra_fax").html();
  22.         document.FormData.Obra_direccion.value=$("span#Obra_direccion").html();
  23. <!-- ************  CARGANDO CLIENTE ************************ -->
  24.         document.FormData.id_rut.value=$("span#id_rut").html();
  25.         document.FormData.de_dv.value=$("span#de_dv").html();
  26.         document.FormData.de_telefono.value=$("span#de_telefono").html();
  27.         document.FormData.de_fax.value=$("span#de_fax").html();
  28.         document.FormData.de_direccion.value=$("span#de_direccion").html();
  29.        }
  30.     });
  31.     }

Necesito alguna orientacion. para rescatar los dos id.
  #2 (permalink)  
Antiguo 13/01/2011, 16:03
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 17 años, 3 meses
Puntos: 20
Respuesta: Rescatar dos id con funcion de jquery

Hola, te dare un tip:


Utiliza el metodo para cadenas split().

Saludos.
__________________
I see dead pixels
  #3 (permalink)  
Antiguo 13/01/2011, 16:20
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery

Gracias por tu sugerencia googleare para ver de que se trata.-

Saludos.-
-------------------------------
  #4 (permalink)  
Antiguo 13/01/2011, 19:40
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery y split ()

Hola : investigando ya se de que se trata el metodo, por empeño jamas me he quedado, pero ya la funcion me tiene loco, ya que es como super sensible, y con cualquier cosa simplemente deja de funcionar, hice esto pero no funciona:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.         $("#Select2").change(function(){
  3.             Obra($(this).val());   
  4.         })
  5.     });
  6.     function Obra(value){
  7.    
  8. var value = 'id_obra--id_cliente';// le indico que en el select en la parte del option vienen asi los id.
  9. var id_obra = value.split('--')[0]); //descompongo el primer id_obra.
  10. var id_cliente = value .split('--')[1]); //ahora descompongo el id_cliente.
  11. var dataString = 'id_obra='+id_obra+'&id_cliente='+id_cliente;// Aka trato de pasarle al data, los parametros ya separados para que lo envie a la url, que deseo.
  12.  
  13. $.ajax({
  14.     var html="";
  15.     $.ajax({
  16.       url: "LlenaDatosObra.php",
  17.       contentType:"application/x-www-form-urlencoded; charset=utf-8",
  18.       type:"GET",
  19.  data: dataString, //Aka le paso los parametros, ya separados para que envie los dos id, a la url que deseo :LlenaDatosObra.php.
  20.       error: function(){
  21.                         alert('Error');},
  22.       success: function(data){
  23.         $("#div_oculto").html(data);

Alguien sabe que hago mal ahora.-

Cuando mas me he acercado a que haga lo que deseo es asi, sin el split():

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.         $("#Select2").change(function(){
  3.             Obra($(this).val());   
  4.         })
  5.     });
  6.     function Obra(value){
  7. $.ajax({
  8.     var html="";
  9.     $.ajax({
  10.       url: "LlenaDatosObra.php",
  11.       contentType:"application/x-www-form-urlencoded; charset=utf-8",
  12.       type:"GET",
  13.      data: "ID_OBRA="+value+"&ID_CLIENTE="+value, //si le paso de esta forma los parametros solo agarra el id_obra y se va el id_cliente
  14.       error: function(){
  15.                         alert('Error');},
  16.       success: function(data){
  17.         $("#div_oculto").html(data);

pero al sacar el split(), solo envia el id_obra y pierde el id_cliente, por eso necesito poder usar el split().-

Ayuda..
  #5 (permalink)  
Antiguo 14/01/2011, 06:00
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 15 años
Puntos: 65
Respuesta: Rescatar dos id con funcion de jquery

Código HTML:
Ver original
  1.     <head>
  2.         <title>Ejemplo</title>
  3.         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  4.         <script>
  5.  
  6.         $(function(){
  7.             $("#Select2").change(function(){
  8.                 Obra();
  9.             });
  10.  
  11.             function Obra(){
  12.                 id_obra = $('#Select1').val();
  13.                 id_cliente = $('#Select2').val();
  14.                 alert(id_obra + " " + id_cliente);
  15.             }
  16.         });
  17.         </script>
  18.         <style>
  19.  
  20.  
  21.         </style>
  22.     </head>
  23.     <body>
  24.  
  25.         <select id="Select1">
  26.             <option>Obra1</option>
  27.             <option>Obra2</option>
  28.         </select>
  29.         <select id="Select2">
  30.             <option>Cli1</option>
  31.             <option>Cli2</option>
  32.         </select>
  33.  
  34.     </body>
  35. </html>
  #6 (permalink)  
Antiguo 14/01/2011, 20:44
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery

Colega gracias por responder, lo probe y no me funciona.
y a raiz de eso me salta una duda:

Por que rescatar el id_obra en el select1, si en el select 2, en el value mando ya los dos id a la vez separados por un ."--". y desde ahi quiero rescatarlos en el data de la funcion que mostre.-

asi como mostre en los ejemplos.

Sorry la duda es que no me llevo muy bien con jquery.-

Agradesco me aclares el concepto de hacerlo como dices ???.

Saludos.-
-----------------------------
  #7 (permalink)  
Antiguo 15/01/2011, 13:47
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Rescatar dos id con funcion de jquery

En el PHP que general el SELECT:

Código PHP:
<?php $id_cliente=$_REQUEST['id_cliente'];?>
<select name="Select2" id="Select2" align="middle" onChange="Obra(this.value)">
    <?php 
    $SqlQuery
=mysql_query("select c.ID_CLIENTE,o.ID_OBRA,o.DE_NOMBRE from lk_per_cliente c,lk_lug_obra o where c.ID_CLIENTE='$id_cliente' and o.ID_CLIENTE='$id_cliente' order by o.DE_NOMBRE asc",$cn);
    while (
$AccesaRegP=mysql_fetch_array($SqlQuery)) { ?>
        <option value="<?php echo $AccesaRegP['ID_OBRA']; ?> rel="<?php echo $AccesaRegP['ID_CLIENTE']; ?>"><?php echo htmlentities($AccesaRegP['DE_NOMBRE']) ?></option>
    <?php }?>
</select>
Y el del javascript:

Código:
$(document).ready(function(){
	$("#Select2").change(function(){
		Obra($(this).val(),$("option:selected",$(this)).attr("rel"));    
	})
});

function Obra(obra,cliente){
	var dataString = 'id_obra='+obra+'&id_cliente='+cliente;
	$.ajax({
		url: "LlenaDatosObra.php",
		contentType:"application/x-www-form-urlencoded; charset=utf-8",
		type:"GET",
		data: dataString,
		error: function(){	alert('Error');},
		success: function(data){ $("#div_oculto").html(data) }
	});
}
La idea es utilizar el VALUE del OPTION para el id de la obra, y un nuevo atributo, REL, para meter el id del cliente.
Luego en javascript+jquery con $(this).val() recojo el VALUE (id obra), y con $("option:selected",$(this)).attr("rel") el REL (id cliente).

Última edición por marlanga; 15/01/2011 a las 14:11 Razón: Meter más porno.
  #8 (permalink)  
Antiguo 15/01/2011, 16:57
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery

Colega: agradesco demasiado tu aporte, me referia exactamente a eso con lo de aclarar el concepto, ya que como pudiste ver, andava cerca pero faltaba la magia final..

Lo pruebo y te posteo..ok.

Saludos.-
------------------------------------
  #9 (permalink)  
Antiguo 16/01/2011, 15:55
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery

YA, me demore en responder por que al momento de probar el codigo no arrojo ningun error, pero no funciona, entonces me asegure de que no estuviera erroneo los otros codigo que tengo interactuando en esto, y los separe(los id_obra y id_cliente), y por separado funcionan y me trae los datos que quiero.

y tambien estoy casi seguro que efectivamente como dices, recatamos los dos id,
el id_obra con el value y el id_cliente con el rel.

Donde esta el problema es en la forma que se lo paso al dataString. no lo reconoce y solo toma el id_obra, claro que para eso tuve que cambiar el:
Código Javascript:
Ver original
  1. var dataString = 'ID_OBRA='+obra+'&ID_CLIENTE='+cliente;
por esta:
Código Javascript:
Ver original
  1. var dataString = 'ID_OBRA='+obra+'ID_CLIENTE='+cliente;
si te fijas le saque el & (que va adelante del ID_CLIENTE)ya que con el no hace nada, y sin el, ahi recien me reconoce el id_obra dejando afuera el rel, que contiene el id_cliente.
entonces la funcion me queda asi:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.          $("#Select2").change(function(){
  3.     Obra($(this).val(),$("option:selected",$(this)).attr("rel"));    
  4.     })
  5. });
  6. function Obra(obra,cliente){
  7. var dataString = 'ID_OBRA='+obra+'ID_CLIENTE='+cliente;//aca debe estar el error en la forma que le paso los dos id, a la variable.
  8.     $.ajax({
  9.       url: "LlenaDatosObra.php",
  10.       contentType:"application/x-www-form-urlencoded; charset=utf-8",
  11.       type:"GET",
  12.       data: dataString,
  13.       error: function(){
  14.                         alert('Error');},
  15.       success: function(data){
  16.         $("#div_oculto").html(data);
  17. <!-- ************  CARGANDO OBRA ************************ -->
  18. document.FormData.de_numero.value=$("span#de_numero").html();
  19. document.FormData.Obra_telefono.value=$("span#Obra_telefono").html();
  20. document.FormData.Obra_fax.value=$("span#Obra_fax").html();
  21. document.FormData.Obra_direccion.value=$("span#Obra_direccion").html();
  22.  
  23. <!-- ************  CARGANDO CLIENTE ************************ -->
  24.  
  25. document.FormData.id_rut.value=$("span#id_rut").html();
  26. document.FormData.de_dv.value=$("span#de_dv").html();
  27. document.FormData.de_telefono.value=$("span#de_telefono").html();
  28. document.FormData.de_fax.value=$("span#de_fax").html();
  29. document.FormData.de_direccion.value=$("span#de_direccion").html();
  30.        }
  31.     });
  32.     }
Tambien por si, te posteo la pagina que recive los dos id(id_obra,id_cliente), para luego hacer la consulta:
<!-- ************ LlenaDatosObra.php *********************** -->
Código PHP:
Ver original
  1. $id_obra=$_GET['ID_OBRA'];
  2. $id_cliente=$_GET['ID_CLIENTE'];
  3.  
  4. $SQLObra=mysql_query("SELECT DE_NUMERO,DE_TELEFONO,DE_FAX,DE_DIRECCION from lk_lug_obra WHERE ID_OBRA='$id_obra'",$cn);
  5. $Obra=mysql_fetch_array($SQLObra);
  6.  
  7. $de_numero=$Obra['DE_NUMERO'];             echo '<span id="de_numero">'.$de_numero.'</span>';
  8. $Obra_telefono=$Obra['DE_TELEFONO'];       echo '<span id="Obra_telefono">'.$Obra_telefono.'</span>';
  9. $Obra_fax=$Obra['DE_FAX'];                 echo '<span id="Obra_fax">'.$Obra_fax.'</span>';
  10. $Obra_direccion=$Obra['DE_DIRECCION'];     echo '<span id="Obra_direccion">'.$Obra_direccion.'</span>';
  11.                
  12. $Query=mysql_query("SELECT ID_RUT,DE_DV,DE_TELEFONO,DE_FAX,DE_DIRECCION from lk_per_cliente WHERE ID_CLIENTE='$id_cliente'",$cn);
  13. $CLIENTE=mysql_fetch_array($Query);
  14.  
  15. $id_rut=$CLIENTE['ID_RUT'];                 echo '<span id="id_rut">'.$id_rut.'</span>';
  16. $de_dv=$CLIENTE['DE_DV'];                   echo '<span id="de_dv">'.$de_dv.'</span>';
  17. $de_telefono=$CLIENTE['DE_TELEFONO'];       echo '<span id="de_telefono">'.$de_telefono.'</span>';
  18. $de_fax=$CLIENTE['DE_FAX'];                 echo '<span id="de_fax">'.$de_fax.'</span>';
  19. $de_direccion=$CLIENTE['DE_DIRECCION'];     echo '<span id="de_direccion">'.$de_direccion.'</span>';
Entonces lo que me arroje como resultado aqui, se cargara en los cargando que tengo en la funcion.

Esperando me ayudes nuevamente en este ya traumante problema.-
Demas esta decir que los probe de distintas formas y como dije por separados bien, pero al juntarlos ya solo toma el id_obra.

Saludos.-
------------------------------------------------
  #10 (permalink)  
Antiguo 16/01/2011, 17:45
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Rescatar dos id con funcion de jquery

En la primera linea de la función Obra() pon un alert("id obra = "+obra+" - id cliente = "+cliente);
¿Llegan ambos datos?
Si llegan los dos, en la llamada AJAX de jquery, borra la linea que pone [[data:dataString,]] y cambia la línea que pone [[url: "LlenaDatosObra.php",]] por [[url: "LlenaDatosObra.php?ID_OBRA="+obra+"&ID_CLIENTE="+ cliente,]]
Si no llegan, mira el código fuente generado por la pagina (en el navegador) y mira el atributo REL si está bien puesto.

De todas formas, así no se envian datos mediante AJAX entre dos PHP's.
Aprende algo de JSON, es fácil. JSON es una notación para transformar arrays y objetos PHP en Strings (cadena de texto), devuelves el String por el PHP, y el javascript lee esa cadena y la transforma otra vez en un array o objeto pero en javascript.
Te cambio cosas (no lo he probado, lo he hecho en el mismo foro, pero no creo que tenga problemas)
Javascript:
Código:
function Obra(obra,cliente){
	alert("id obra ="+obra+" -- id cliente="+cliente); //Comprobar si llegan los datos y borrarlo cuando todo funcione
	$.getJSON("LlenaDatosObra.php?ID_OBRA="+obra+"&ID_CLIENTE="+cliente, function(datos) {
		<!-- ************  CARGANDO OBRA ************************ -->
		document.FormData.de_numero.value=datos["obra"]["DE_NUMERO"];
		document.FormData.Obra_telefono.value=datos["obra"]["DE_TELEFONO"];
		document.FormData.Obra_fax.value=datos["obra"]["DE_FAX"];
		document.FormData.Obra_direccion.value=datos["obra"]["DE_DIRECCION"];
		<!-- ************  CARGANDO CLIENTE ************************ -->
		document.FormData.id_rut.value=datos["cliente"]["ID_RUT"];
		document.FormData.de_dv.value=datos["cliente"]["DE_DV"];
		document.FormData.de_telefono.value=datos["cliente"]["DE_TELEFONO"];
		document.FormData.de_fax.value=datos["cliente"]["DE_FAX"];
		document.FormData.de_direccion.value=datos["cliente"]["DE_DIRECCION"];
	});
}
LlenaDatosObra.php
Código PHP:
<?php
$id_obra
=$_GET['ID_OBRA'];
$id_cliente=$_GET['ID_CLIENTE'];
$datos=array();

$SQLObra=mysql_query("SELECT DE_NUMERO,DE_TELEFONO,DE_FAX,DE_DIRECCION from lk_lug_obra WHERE ID_OBRA='$id_obra'",$cn);
$datos["obra"]=mysql_fetch_array($SQLObra);
                
$Query=mysql_query("SELECT ID_RUT,DE_DV,DE_TELEFONO,DE_FAX,DE_DIRECCION from lk_per_cliente WHERE ID_CLIENTE='$id_cliente'",$cn);
$datos["cliente"]=mysql_fetch_array($Query);

echo 
json_encode($datos);

?>

Última edición por marlanga; 16/01/2011 a las 18:19
  #11 (permalink)  
Antiguo 16/01/2011, 18:39
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery

Cita:
Iniciado por marlanga Ver Mensaje
En la primera linea de la función Obra() pon un alert("id obra = "+obra+" - id cliente = "+cliente);
¿Llegan ambos datos?
Si llegan los dos, en la llamada AJAX de jquery, borra la linea que pone [[data:dataString,]] y cambia la línea que pone [[url: "LlenaDatosObra.php",]] por [[url: "LlenaDatosObra.php?ID_OBRA="+obra+"&ID_CLIENTE="+ cliente,]]
Si no llegan, mira el código fuente generado por la pagina (en el navegador) y mira el atributo REL si está bien puesto.
Ok, probe de dos formas lo que me dices, la primera fue:
Código Javascript:
Ver original
  1. function Obra(obra,cliente){
  2.    alert("id obra = "+obra);
  3.    alert("id cliente = "+cliente);
y me sale en los alertas:
en el primero: [ id obra=10 rel=3 ] // asi tal cual, y esta es la que nos sirve
en el segundo: [ id cliente= undefined ] // asi tal cual.-

La segunda forma fue como dices:
Código Javascript:
Ver original
  1. function Obra(obra,cliente){
  2. alert("id obra = "+obra+"id cliente = "+cliente);
y sale en el alerta: [ id obra=10 rel=3 id cliente = undefined ]// // asi tal cual.-
*Ahora se esta capturando el id_obra y el rel(que supuestamente es el id_cliente), pero me salta una duda mayor ¿porque el rel no asume al id_cliente y en cambio lo toma como aparte como te postie rel=3 id cliente = undefined.
ahora verifique el select donde asignamos el rel y no le veo diferencia.
Código PHP:
Ver original
  1. <option value="<?php echo $AccesaRegP['ID_OBRA']; ?> rel=<?php echo $AccesaRegP['ID_CLIENTE']; ?>"><?php echo htmlentities($AccesaRegP['DE_NOMBRE']) ?></option>
ojo le puse total atencion a las "", ya que te cambia todo los alertas si juegas con ellos, pero de esta forma es la que use en lo que te explique.
Aver que hacemos ya que ahora tenemos tres parametros:
id_obra=10 (bien), rel= 3(bien) y lo raro id_cliente =undefined (mal).
Como asignamos el rel al id_cliente para que en vez de dos parametros solo sean uno.????
de todas formas intentare mas, aunque si se te ocurre algo, lo agradeceria un monton, ya me tiene de cabeza el tema.-
Agradecido.-
  #12 (permalink)  
Antiguo 16/01/2011, 19:02
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery

ya tambien probe la ultima opcion que me das el $.getJSON, como lo posteaste,
y no arroja error, en el alerta sale:
[id_obra=10 rel=3 -- id_cliente=undefined] .
Ahora lo probe tambien de esta forma el select:
Código PHP:
Ver original
  1. <option value="<?php echo $AccesaRegP['ID_OBRA']; ?>"" rel=<?php echo $AccesaRegP['ID_CLIENTE']; ?>"><?php echo htmlentities($AccesaRegP['DE_NOMBRE']) ?></option>
y el alerta cambia y sale esto:
[id_obra=10 -- id_cliente=undefined] .
si te fijas desaparece el rel, y muestra que el id_cliente, no se esta rescatando.

y no me trae ningun dato de vuelta, por lo menos en el otro ejemplo me trae los datos de la obra, aunque me parece muy interesante ya que es mucho menos codigo y mas limpio.... si solo funcionara ya que seria tremendo cambiarlo por este codigo mejoradisimo, asi vamos optimizando un poco.

Tal vez debe ser por que no esta recibiendo el id_cliente.
¿sabes algun libro o algo asi, ya que primera vez que me veo este tema y me parecio demasiado bueno e interesante?
ojala se te ocurra colega como capturar ese ##~??## id.

Última edición por Prais; 16/01/2011 a las 20:04
  #13 (permalink)  
Antiguo 17/01/2011, 06:30
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Rescatar dos id con funcion de jquery

Hay errores en la sintaxis. En

el PHP que imprime los OPTION
Código PHP:
<option value="<?php echo $AccesaRegP['ID_OBRA']; ?>" rel="<?php echo $AccesaRegP['ID_CLIENTE']; ?>"><?php echo htmlentities($AccesaRegP['DE_NOMBRE']) ?></option>
Faltaba una comilla doble. en vez de rel=<?...?>" es rel="<? ... ?>", y sobraba una de las comillas de cierre del VALUE.
Corregido en la cita de arriba.

Y el javascript pon este (tiene corregido una cagada en el JSON, los arrays asociativos se leen con datos.loquesea y no con el típico datos[loquesea].

Código:
function Obra(obra,cliente){
	alert("id obra ="+obra+" -- id cliente="+cliente); //Comprobar si llegan los datos y borrarlo cuando todo funcione
	$.getJSON("LlenaDatosObra.php?ID_OBRA="+obra+"&ID_CLIENTE="+cliente, function(datos) {
		<!-- ************  CARGANDO OBRA ************************ -->
		document.FormData.de_numero.value=datos.obra.DE_NUMERO;
		document.FormData.Obra_telefono.value=datos.obra.DE_TELEFONO;
		document.FormData.Obra_fax.value=datos.obra.DE_FAX;
		document.FormData.Obra_direccion.value=datos.obra.DE_DIRECCION;
		<!-- ************  CARGANDO CLIENTE ************************ -->
		document.FormData.id_rut.value=datos.cliente.ID_RUT;
		document.FormData.de_dv.value=datos.cliente.DE_DV;
		document.FormData.de_telefono.value=datos.cliente.DE_TELEFONO;
		document.FormData.de_fax.value=datos.cliente.DE_FAX;
		document.FormData.de_direccion.value=datos.cliente.DE_DIRECCION;
	});
}

En librosweb.es tienes buenos tutoriales para programación web.

Última edición por marlanga; 17/01/2011 a las 06:46
  #14 (permalink)  
Antiguo 17/01/2011, 18:20
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery

YA. el capitan que abandona el barco se salva, y deja de ser capitan ? o prefieres
capitan hasta el ultimo.? jaja.

Te comento por que ya de aproblemado por el problema ya lo tiro a la risa un poco.
Primero que todo, sin caer en lo majadero, agradesco tu tiempo y orientacion, aunque no lo creas he aprendido un monton.ok.

Y con respecto a como posteas el rel en el option, pasa lo siguente:
recuerdas que pusiste un alert antes de enviar los datos en la famosa funcion:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $("#Select2").change(function(){
  3.         Obra($(this).val(),$("option:selected",$(this)).attr("rel"));  
  4.     })
  5. });
  6.       function Obra(obra,cliente){
  7.     alert("id obra ="+obra+" -- id cliente="+cliente); //Comprobar si llegan los datos y borrarlo cuando todo funcione
  8.     $.getJSON("LlenaDatosObra.php?ID_OBRA="+obra+"&ID_CLIENTE="+cliente, function(datos) {
  9. <!-- ************  CARGANDO OBRA ************************ -->
  10. document.FormData.de_numero.value=datos.obra.DE_NUMERO;
  11. document.FormData.Obra_telefono.value=datos.obra.DE_TELEFONO;
  12. document.FormData.Obra_fax.value=datos.obra.DE_FAX;
  13. document.FormData.Obra_direccion.value=datos.obra.DE_DIRECCION;
  14. <!-- ************  CARGANDO CLIENTE ************************ -->
  15. document.FormData.id_rut.value=datos.cliente.ID_RUT;
  16. document.FormData.de_dv.value=datos.cliente.DE_DV;
  17. document.FormData.de_telefono.value=datos.cliente.DE_TELEFONO;
  18. document.FormData.de_fax.value=datos.cliente.DE_FAX;
  19. document.FormData.de_direccion.value=datos.cliente.DE_DIRECCION;
  20.     });
  21. }
resulta que en alerta dice: [id_obra=10 --id_cliente=undefined]
con este select, que posteaste:
Código PHP:
Ver original
  1. $id_cliente=$_REQUEST['id_cliente'];?>
  2. <select name="Select2" id="Select2" align="middle" onChange="Obra(this.value)">
  3. <option value="" selected="selected">[Seleccione]</option>
  4. <?php $SqlQuery=mysql_query("select c.ID_CLIENTE,o.ID_OBRA,o.DE_NOMBRE from lk_per_cliente c,lk_lug_obra o where c.ID_CLIENTE='$id_cliente' and
  5. o.ID_CLIENTE='$id_cliente' order by o.DE_NOMBRE asc",$cn);
  6. while ($AccesaRegP=mysql_fetch_array($SqlQuery))
  7. { ?>
  8. <option value="<?php echo $AccesaRegP['ID_OBRA']?>" rel="<?php echo $AccesaRegP['ID_CLIENTE']?>"><?php echo htmlentities($AccesaRegP['DE_NOMBRE']) ?></option>
  9.     <?php }?>
  10. </select>
a raiz de eso, empiezo a jugar con las comillitas, y a lo mas logro que salga asi:
[id_obra=10 rel=3 --id_cliente=undefined]
claro que ya el rel lo tengo que dejar dentro de las "" asi:
Código PHP:
Ver original
  1. <option value="<?php echo $AccesaRegP['ID_OBRA']?>rel=<?php echo $AccesaRegP['ID_CLIENTE']?>"><?php echo htmlentities($AccesaRegP['DE_NOMBRE']) ?></option>
Lo gracioso es que ahora todo el problemon(creo), radica en las ###~~~$$ " ".-
de todas formas seguire hasta que resulte.-(capitan hasta el ultimo.)
Ahora se me ocurre lo siguente, como reconoce el rel de la ultima forma que te mostre, que tal si se lo asignamos en una variable en la funcion onda asi:
Código Javascript:
Ver original
  1. function Obra(obra,cliente){
  2. var id_cliente= attr("rel"));
  3. alert("id obra ="+obra+" -- id cliente="+cliente);
Evidentemente arroja errores, pero a modo de idea espero haberme explicado,
o de frenton hay que darle no mas a las "", hasta que reconosca el id cliente.
Ah, buscare los libros que dices.. Vale.
  #15 (permalink)  
Antiguo 18/01/2011, 18:45
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery

yy ninguna idea colega, de que sucede, he revisado otros ejemplos y la forma de el rel esta correcta. y ahi es donde mas pillo me deja........mmm?????
  #16 (permalink)  
Antiguo 19/01/2011, 15:33
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 15 años
Puntos: 65
Respuesta: Rescatar dos id con funcion de jquery

no entiendo por qué te complicas tanto con 2 id en el value, separados por un "--" o con un id en el value y otro en el atributo rel, pero vamos por eso

vamos a partir de que tengas una variable con un valor "1--2" y lo separamos con un split

Código Javascript:
Ver original
  1. id = "1--2";
  2. alert( id.split('--')[0] + " - " + id.split('--')[1] );

funciona, ahora vamos a sacar ese valor de un select y guardamos en 2 variables
Código HTML:
Ver original
  1.     <head>
  2.         <title>Ejemplo</title>
  3.         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  4.     </head>
  5.         <script type="text/javascript">
  6.             $( function (){
  7.                 $('#Select2').change( function(){
  8.                     valor = $(this).val().split('--');
  9.                     id_obra = valor[0];
  10.                     id_cliente = valor[1];
  11.                     alert(id_obra + " - " + id_cliente);
  12.  
  13.                 });
  14.             });
  15.         </script>
  16.     <body>
  17.         <select id="Select2">
  18.             <option value="1--1">UnoUno</option>
  19.             <option value="1--2">UnoDos</option>
  20.             <option value="2--1">DosUno</option>
  21.         </select>
  22.     </body>
  23. </html>

ahora podes pasar eso a tu función y enviar los valores con ajax

antes de todo fijate el código functe para ver si el select que generas con php tiene bien el value como tiene que ser

probá con cosas sencillas de esa forma sin php ni nada complicado, con pocos datos, limpio y sencillo
  #17 (permalink)  
Antiguo 19/01/2011, 17:37
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Rescatar dos id con funcion de jquery

Coño, ya he visto el error, creo.
Borra el atributo onChange="..." del select que imprime PHP.
  #18 (permalink)  
Antiguo 19/01/2011, 19:56
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Rescatar dos id con funcion de jquery

Dany_S y marlanga: ya se donde esta la embarrada un detalle que no mencione, y por el codigo de Dany-S, me hace ver lo que sucede(creo):
Primero: probe tu codigo Dany_S, y efectivamente funciona y rescata los valores. ahora que sucede les cuento:
Volvamos al principio:
El famoso y ya odiado select2, es el select hijo de un select padre. aver, tengo un select de cliente.ok, que esta en arriendo.php(es mi pagina principal), este select se carga de una consulta sql, hasta ahi perfecto. Que hago, deacuerdo al cliente elegido en este select, se carga automaticamente El famoso y ya odiado select2, con las obras asociadas al cliente.ok. osea tenemos los famosos select dependiente.
Esta dependencia la hago con ajax, que captura el id seleccionado en el select padre(cliente) y se lo envia al select que le he posteado:
Código PHP:
Ver original
  1. <?php include("conexion.php");
  2. $id_cliente=$_REQUEST['id_cliente'];?>
  3. <select name="Select2" id="Select2" align="middle" onChange="Obra(this.value)">
  4. <option value="" selected="selected">[Seleccione]</option>
  5. <?php $SqlQuery=mysql_query("select ID_OBRA,DE_NOMBRE from lk_lug_obra  where ID_CLIENTE='$id_cliente' order by DE_NOMBRE asc",$cn);
  6. while ($AccesaRegP=mysql_fetch_array($SqlQuery))
  7. { ?>
  8. <option value="<?=$AccesaRegP['ID_OBRA']?>"rel="<?= $id_cliente ?>"><?php echo htmlentities($AccesaRegP['DE_NOMBRE']) ?></option>
  9.     <?php }?>
  10. </select>
este select captura el id_cliente y lo consulta e imprime las obras asociadas al cliente. donde esta la cagada, es que este select se carga en un archivo aparte:
CargaSelectObra.php, estando solo el select este en este archivo, entonces todo lo que se arroja como resultado aca se pasa al select2 que tengo en mi pagina principal: arriendo.php,
y el select2 de arriendo.php es este:
Código PHP:
Ver original
  1. <div id="RescataObra" align="left">
  2.  <select name="Select2" id="Select2" align="middle" onChange="Obra(this.value)">
  3.       <option value="" selected="selected">[Seleccione]</option>
  4. </select></div>
que esta a la espera de lo que arroje el select2 de
CargaSelectObra.php y se imprime aca en mi pagina principal arriendo.php.
Ahora que sucede pruebo el ejemplo de Dany-S el mismo que postio en mi pagina principal arriendo.php y funciona. pero si coloco su select en el archivo CargaSelectObra.php, no lo toma.
Entonces por logica Marlanga estamos capturando el id y el rel del select que se imprime en CargaSelectObra.php, lo que si me llama la atencion que captura de igual forma el id_obra y no el id_cliente, si no lo tomara no tomaria ninguno.
pero el ejemplo de Dany_S sirve, solo cuando esta todo en un mismo archivo.(ya lo probe), y Marlanga si saco el onchange(ya lo hice), no hace absolutamente nada la funcion, y logico ya que la funcion:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $("#Select2").change(function(){
  3.         Obra($(this).val(),$("option:selected",$(this)).attr("rel"));  
  4.     })
  5. });
  6.       function Obra(obra,cliente){
  7.       alert("id obra ="+obra+"id cliente="+cliente); //Comprobar si llegan los datos y borrarlo cuando todo funcione
  8.     $.getJSON("LlenaDatosObra.php?ID_OBRA="+obra+"&ID_CLIENTE="+cliente, function(datos) {
  9. <!-- ************  CARGANDO OBRA ************************ -->
  10. document.FormData.de_numero.value=datos.obra.DE_NUMERO;
  11. document.FormData.Obra_telefono.value=datos.obra.DE_TELEFONO;
  12. document.FormData.Obra_fax.value=datos.obra.DE_FAX;
  13. document.FormData.Obra_direccion.value=datos.obra.DE_DIRECCION;
  14. <!-- ************  CARGANDO CLIENTE ************************ -->
  15. document.FormData.id_rut.value=datos.cliente.ID_RUT;
  16. document.FormData.de_dv.value=datos.cliente.DE_DV;
  17. document.FormData.de_telefono.value=datos.cliente.DE_TELEFONO;
  18. document.FormData.de_fax.value=datos.cliente.DE_FAX;
  19. document.FormData.de_direccion.value=datos.cliente.DE_DIRECCION;
  20.     });
  21. }
queda capturando al select que esta en arriendo.php
Código PHP:
Ver original
  1. <div id="RescataObra" align="left">
  2. <select name="Select2" id="Select2" align="middle" onChange="Obra(this.value)">
  3. <option value="" selected="selected">[Seleccione]</option>
  4. </select>
.
Por eso creo hemos tenido tantas trabas.-
y Dany_S, esta muy bueno el ejemplo, sin duda lo guardo en mi coleccion de script.

Etiquetas: dos, funcion
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 22:19.