Ingeniería Informática

Menú Navegación

Archivos

  • Septiembre 2009
  • Julio 2009
  • Abril 2009
  • Marzo 2009
  • Enero 2009
  • Noviembre 2008
  • Octubre 2008

Categorías

  • Equipo de jóvenes
  • General
  • JavaScript
  • jQuery
  • Liderazgo
  • PHP
  • xajax

A cerca de...

Me llamo Eliecer López, soy Ingeniero (e.) en Computación e Informática y estoy dedicado al desarrollo Web.
Espero te ayuden los tutoriales y ejemplos que aquí se encuentran.

Últimas 5…

  • Como agregar filas o rows a una tabla dinamicamente mediante jQuery
  • Como agregar filas o rows a una tabla dinamicamente mediante javaScript
  • Actualizando Wordpress
  • Como utilizar autocompletex (suggest) de jQuery y no morir en el intento.
  • Guardar en Base de Datos las filas agregadas dinamicamente con xajax

Vistas

Etiquetas

actualizar agregar-fila agregar-fila-dinamico-xajax ajax autocompletar autocomplete box cargando combo combobox dependientes dinamico equipo JavaScript jQuery Liderazgo loading organigrama organizacion PHP preload select suggest vision xajax

WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.

Anuncios Google

2009
20
Ene

Como agregar filas o rows a una tabla dinamicamente mediante xajax

Xajax se ha vuelto parte de mi trabajo a lo largo de este ya casi año de vida laboral, por lo que mi experiencia, aunque poca, ha ido evolucionando poco a poco. Si me hubieran preguntado como hacer para añadir una fila a una tabla les habria dicho que no se podía o que mejor agregaran una tabla completa mediante el comando addAssign. Hoy, con un poco más de experiencia, les mostraré como podemos agregar el número de filas y campos que queramos a una tabla.
El proceso es simple, iremos creando las etiquetas o tags HTML según su jerarquía y le iremos añadiendo dentro el contenido que corresponda. Para esto utilizaremos los comandos addCreate que crea nuevas etiquetas HTML, y addAssign que como ya deberían saber, agrega o inserta en el atributo indicado el valor que le pasemos por parametro. Primero crearemos el tag tr y luego cada uno de los tags td que necesitemos, para así, en ultima instancia, asignar el contenido de cada campo.

Veamos como quedaría nuestra función PHP agregaFila()

function agregarFila($formulario){
    $respuesta = new xajaxResponse();
	extract($formulario);
	$id_campos = $cant_campos = $num_campos+1;
	$str_html_td1 = "$txtNombre" ;
    $str_html_td2 = "$txtEdad";
    $str_html_td3 = "$txtDireccion";
    $str_html_td4 = "$selSexo";
    $str_html_td5 = "$selEstCivil";
    $str_html_td6 = '<img src="images/delete.png" width="16" height="16" alt="Eliminar" onclick="if(confirm(\'Realmente desea eliminar este detalle?\')){xajax_eliminarFila('. $id_campos .', proyecto.cant_campos.value);}"/>';
 
	if($num_campos == 0){ // creamos un encabezado de lo contrario solo agragamos la fila
		$respuesta->addCreate("tbDetalle", "tr", "rowDetalle_0");
        $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_01");    //creamos los campos
        $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_02");
        $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_03");
        $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_04");
        $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_05");
        $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_06");
 
        $respuesta->addAssign("tdDetalle_01", "innerHTML", "Nombre");   //asignamos el contenido
        $respuesta->addAssign("tdDetalle_02", "innerHTML", "Edad");
        $respuesta->addAssign("tdDetalle_03", "innerHTML", "Direccion");
        $respuesta->addAssign("tdDetalle_04", "innerHTML", "Sexo");
        $respuesta->addAssign("tdDetalle_05", "innerHTML", "Estado Civil");
        $respuesta->addAssign("tdDetalle_06", "innerHTML", "Eliminar");
	}
    $idRow = "rowDetalle_$id_campos";
    $idTd = "tdDetalle_$id_campos";
	$respuesta->addCreate("tbDetalle", "tr", $idRow);
    $respuesta->addCreate($idRow, "td", $idTd."1");     //creamos los campos
    $respuesta->addCreate($idRow, "td", $idTd."2");
    $respuesta->addCreate($idRow, "td", $idTd."3");
    $respuesta->addCreate($idRow, "td", $idTd."4");
    $respuesta->addCreate($idRow, "td", $idTd."5");
    $respuesta->addCreate($idRow, "td", $idTd."6");
/*
 *     Esta parte podria estar dentro de algun ciclo iterativo  */
 
    $respuesta->addAssign($idTd."1", "innerHTML", $str_html_td1);   //asignamos el contenido
    $respuesta->addAssign($idTd."2", "innerHTML", $str_html_td2);
    $respuesta->addAssign($idTd."3", "innerHTML", $str_html_td3);
    $respuesta->addAssign($idTd."4", "innerHTML", $str_html_td4);
    $respuesta->addAssign($idTd."5", "innerHTML", $str_html_td5);
    $respuesta->addAssign($idTd."6", "innerHTML", $str_html_td6);
 
/*  aumentamos el contador de campos  */
 
	$respuesta->addAssign("num_campos","value", $id_campos);
	$respuesta->addAssign("cant_campos" ,"value", $id_campos);
	return $respuesta;
}

El HTML para esta aplicacion:

<form name="proyecto" id="proyecto" action="" method="post">
<input type="hidden" id="num_campos" name="num_campos" value="0" />
<input type="hidden" id="cant_campos" name="cant_campos" value="0" />
<div id="cont" class="container">
<fieldset>
	<legend>El formulario</legend>
<div class="top">
	<label class="label" for="txtNombre">Nombre:</label>
<div class="div_texbox">
<input type="text" id="txtNombre" name="txtNombre" value="" class="textbox" /></div>
 
        <label class="label" for="txtEdad">Edad:</label>
<div class="div_texbox">
<input type="text" id="txtEdad" name="txtEdad" value="" class="textbox txtUser" /></div>
 
        <label class="label" for="txtDireccion">Direccion:</label>
<div class="div_texbox">
<input type="text" id="txtDireccion" name="txtDireccion" value="" class="textbox txtCmt" /></div>
 
        <label class="label" for="selSexo">Sexo:</label>
<div class="div_texbox">
<select id="selSexo" name="selSexo" class="textbox txtFec">
                <option value="-">Seleccione</option>
                <option value="Hombre">Hombre</option>
                <option value="Mujer">Mujer</option>
            </select>
</div>
 
        <label class="label" for="selEstCivil">Estado Civil:</label>
<div class="div_texbox">
<select id="selEstCivil" name="selEstCivil" class="textbox txtFec">
                <option value="-">Seleccione</option>
                <option value="Soltero">Soltero</option>
                <option value="Casado">Casado</option>
                <option value="Viudo">Viudo</option>
            </select>
</div>
</div>
 
</fieldset>
<div class="button_div">
<input type="reset" id="btnCancel" name="btnCancel" value="Cancelar" class="buttons_CANCEL" onclick="xajax_cancelar();" />
<input type="button" id="btnAgregar" name="btnAgregar" value="Agregar Persona" class="buttons_aplicar" onclick="xajax_agregarFila(xajax.getFormValues('proyecto'));" />
</div>
 
<fieldset class="fieldset">
    <legend class="legend">
        Detalle de Personas
    </legend>
<div class="clear"></div>
<div id="form3" class="form-horiz">
<table width="100%" id="tblDetalle" class="listado">
<tbody id="tbDetalle"></tbody>
</table>
</div>
 
</fieldset>
</div>
</form>

Y como sabroso entremes, le traemos… la función que elimina las filas agregadas por la función anterior.

function eliminarFila($id_campo, $cant_campos){
	$respuesta = new xajaxResponse();
	$respuesta->addRemove("rowDetalle_$id_campo"); //borro el detalle que indica el parametro id_campo
	-- $cant_campos; //Resto uno al numero de campos y si es cero borro todo
	if($cant_campos == 0){
		$respuesta->addRemove("rowDetalle_0");
		$respuesta->addAssign("num_campos", "value", "0"); //dejo en cero la cantidad de campos para seguir agregando si asi lo desea el usuario
		$respuesta->addAssign("cant_campos", "value", "0");
	}
    $respuesta->addAssign("cant_campos", "value", $cant_campos);
	return $respuesta;
}

Así de facil y bonito es agregar filas a las tablas dinamicamente usando xajax… las opciones son muchas y las dejo a su imaginación o necesidad…
Espero les sirva y cualquier duda o comentario responderé a la brevedad.
Adios.

Este ejemplo lo puedes ver en el siguiente enlace:

Ver Ejemplo ejemplo funcionando de Agregar Filas con xajax y PHP

Tambien puedes decargar estos ejemplos:

Ver Ejemplo archivos de Agregar Filas con xajax y PHP
Si te gustó o te sirvió, ya sabes que hacer ;-)

Esta entrada fue publicada el Martes, 20 de Enero de 2009 a las 19:11 y está clasificada bajo: PHP, xajax. Puede hacer un seguimiento de los comentarios de esta entrada gracias al feed RSS 2.0. Puede dejar un comentario, o enviar un trackback desde su sitio.

« Como crear combo box o select dinámico con jQuery
Guardar en Base de Datos las filas agregadas dinamicamente con xajax »

56 comentarios sobre “Como agregar filas o rows a una tabla dinamicamente mediante xajax”

gustavo dijo:
3 de Febrero, 2009 - 9:49

saludos amigo este tutorial esta excelente de verdad que me has ayudado mucho lo unico que me gustaria que hicieras seria que lo hicieras compatible con la ultima version de xajax la 0.5 gracias de antemano

e_all dijo:
3 de Febrero, 2009 - 10:08

Hola gustavo,
Lo que me solicitas podrias hacerlo tu mismo, es muy facil y no te tomaría mas de uno pocos minutos tal como lo dice el articulo actualizando xajax 0.2 a 0.5 => http://xajaxproject.org/en/docs-tutorials/upgrading-from-xajax-0-2-x-to-0-5/

Por lo que ví no es más que buscar/reemplazar.

de todas formas tomaré tu sugerencia e intentaré crear los siguientes tutoriales con esta versión.

Saludos.

gustavo dijo:
3 de Febrero, 2009 - 10:11

disculpa por el comentario anterior puedes eliminar ese y este por que ocupan espacio y pues ya me comprendiste lo que decia gracias y por la buena presentacion de tu sitio te reconiendo que borres estos dos ultimos adios y gracias denuevo

gustavo dijo:
18 de Febrero, 2009 - 0:00

hola soy yo denuevo disculpa la molestia pero queria preguntarte si puedo usar tus hojas de estilo en el formulario y tu codigo para integrarlos a una aplicativo que estoy haciendo si tu estas de acuerdo en que los use y si hay algo en lo que yo te pueda ayudar si no tu me dices gracias de antemano

e_all dijo:
25 de Febrero, 2009 - 8:52

Gustavo, si tu lo deceas puedes utilizar lo que está en este blog.

licencia cc

cristian dijo:
10 de Marzo, 2009 - 3:46

Mi estimado… existe algún comando en XAJAX para leer el contenido de los ID, para luego guardarlos en una BDD?

O tienes alguna sujerencia para lograr esto… desde ya muchas gracias, con este código me salvaste la vida :)

e_all dijo:
10 de Marzo, 2009 - 8:32

Si es que te entendí bien, lo que quieres es tomar los VALORES de los campos identificados con IDs específicas y guardarlos en una BD.
Mira, el atributo ID es para utilizarlo con JavaScript y el NAME es para utilizarlo con PHP. Existe la función “getFormValues(formulario)” para enviar los campos a alguna función específica en PHP y allí manipular los datos según el nombre (NAME) que le hayas asignado.
Si lo que tu quieres es guardar algún valor útil para ti en el atributo ID y rescatarlo en PHP y guardarlo en la BD, me temo que no es posible, ya que lo que entrega xajax a PHP es un arreglo con el par NAME => VALUE. Al utilizar la función print_r con el arreglo que te menciono el resultado es algo así:

Array
(
[num_campos] => 1
[cant_campos] => 1
[txtFechaIni] => 10/10/2008
[txtFechaFin] => 05/10/2009
[hdnValores] =>
[hdnSumaTotal] => 12
[hdnIdDetalle] => 0
[hdnValorUF] => 1
[hdnVersion] => 0
[hdnIdPresupuesto] => 1
[selEmpresa] => 2
[txtCenCod] => 5001
[hdnCenCod] =>
[txtCtaCtble] => 2103
[hdnCtaCtble] => ACREEDORES COMERCIALES
[txtItemGasto] =>
[hdnItemGasto] =>
[selFrecuencia] => 0
[txtTotal] =>
[btnDeshacer] => Deshacer
[btnAgregar] => Agregar
[hdnItem_1] => 3501
[hdnFreq_1] => 1
[hdnTotal_1] => 12
[hdnValores_1] => 0-1-1-1-1-1-1-1-1-1-1-1-1
[hdnIdCampos] => Array
(
[0] => 1
)

)

Si no es lo que tu preguntabas, me avisas y puedes explicarme lo que quieres hacer y te podría ayudar de mejor manera.

Adiós.

cristian dijo:
10 de Marzo, 2009 - 17:47

Desde ya muchas gracias por la respuesta, en el fondo lo que persigo es cuando se ingresen los ROW dinámicamente poder guardar los valores en una BDD por medio de XAJAX, se me había ocurrido (no practico) poner en cada ROW agregada uno o varios input oculto y leer estos para subir los valores a la función PHP XAJAX, por medio de getFormValues, Se te ocurre una mejor manera de hacerlo???

Muchas Gracias

e_all dijo:
10 de Marzo, 2009 - 18:07

Cristian, de hecho así es como lo estoy haciendo en los proyectos que estoy llevando a cabo. si te das cuenta en el ejemplo anterior existen unas variables que contienen un guión abajo ( _ ) mas un numero, este numero es el numero de linea al que pertenece y a través de este puedo acceder a los valores ocultos.

[hdnItem_1] => 3501
[hdnFreq_1] => 1
[hdnTotal_1] => 12
[hdnValores_1] => 0-1-1-1-1-1-1-1-1-1-1-1-1
[hdnIdCampos] => Array
(
[0] => 1
)

el hidden hdnIdCampos es un arreglo que contiene todos los IDs de cada una de las lineas que he ido añadiendo por lo que con un foreach lo voy recorriendo y así puedo acceder facilmente a cada valor que esta en formulario
ej.

en html guardas cada número de fila en el campo oculto hdnIdCampos[] lo que genera un arreglo de campos ocultos.

Luego en PHP lo recorres.

foreach($hdnIdCampos as $id)
echo $formulario['hdnTotal_' . $id];

Prepararé un tut para explicar como guardar todas las filas que hemos agragado dinámicamente a una BD.

date una vuelta uno de estos días y la encontrarás.

Exito.

Guardar datos en Base de datos las filas agregadas dinamicamente con xajax - ProDev dijo:
10 de Marzo, 2009 - 20:01

[...] Como agregar filas o rows a una tabla dinamicamente mediante xajax [...]

andre dijo:
25 de Junio, 2009 - 18:13

Hola e_all…. lei este articulo y me parecio muy interesante… cada vez voy viendo mayores y mejores aplicaciones con xajax. Sigue adelante!

e_all dijo:
25 de Junio, 2009 - 18:16

Gracias por tu apoyo.

exito.

hector dijo:
18 de Agosto, 2009 - 2:12

Buena, elicer necesito este mismo codigo pero en en jquery por casualidad no sabes de un plugin que haga esto XD

Luis dijo:
18 de Agosto, 2009 - 7:53

Hola!
Está muy bueno el código, pero habrá alguna forma de agregar una fila entre medio de otras?, por ejemplo para ordenarlas por orden alfabético o id.
Saludos!

e_all dijo:
19 de Agosto, 2009 - 13:33

Hector, hablamos por msn. Pronto el tutorial como hacerlo con jquery.

Luis, puedes utilizar la funcion addInsertAfter en reemplazo de la función addCreate y le indicar el ID del elemento anterio al que quieres que se inserte el elemento. Ahora es tema aparte el como te la arreglas para poder saber el orden en que deben ir.
La documentacion de la función para xajax 0.5

Exito.

Rody dijo:
2 de Septiembre, 2009 - 19:52

Muchas gracias excelente aporte, con esta técnica se abren muchas puertas en la programación web… MIL GRACIAS

Como agregar filas o rows a una tabla dinamicamente mediante javaScript - ProDev dijo:
3 de Septiembre, 2009 - 15:55

[...] de los post más visitados y más agradecidos es el de agregar filas dinamicamente con xajax. En este mucho se topan con la desdicha que no quieren utilizar xajax en sus proyecto proque no [...]

Pedro dijo:
19 de Septiembre, 2009 - 15:15

excelente!!! muchas felicidades por esto que hiciste, y muchas gracias por publicarlo

hernan dijo:
29 de Septiembre, 2009 - 14:03

Cuando hago el require de la libreria xajax me da error pero la pagina se muestra bien. me sale una ventana de alerta.
Muchas gracias

e_all dijo:
29 de Septiembre, 2009 - 15:35

lo más probable es que tengas un error en la ruta a la librería en la línea en que escribe el jsvascript necesario.

< ?php $xajax->printJavascript("xajax"); //imprime el codigo javascript necesario para que funcione todo. ?>

y si estás usando la versión 0,5 la cosa es distinta.


$xajax->configure('javascript URI','xajax');
$xajax->printJavascript();

espero sea ese tu problema, de todos modos estoy atento a tus comentarios.

hernan dijo:
2 de Octubre, 2009 - 10:50

Gracias  por la respuesta!, voy a probarlo a ver que onda.
Ya que estoy otra cosa, yo tengo las paginas digamos formularios y todas las funciones xajax en otro archivo php, a su vez hay funciones que van a la base de datos y/o hacen otras cosas que necesitan esas funciones xajax en otros archivos php, no pude hacer que funcionen las funciones xajax que consumen de este archivo(llamado funcionesConsultaGeneral.php) mas si pongo esas funciones en el mismo archivo php donde estan las funciones xajax(llamado funcionesConsultaHistoriaClinica.server.php) si funciona sin problema, que puede ser?
Muchas gracias y te felicito por la pagina la verdad que me ayudo muchisimo.
Saludos

eALL dijo:
2 de Octubre, 2009 - 11:32

eso es un problema diferente. para eso debes indicar donde estarán las funciones que deberá llamar xajax, por defecto queda el mismo archivo que hace la llamada, pero si desea cambiar la ruta, deberás configurar el objeto para que apunte a los archivos que deseas.

$xajax->setRequestURI('funcionesConsultaGeneral.php');  //v0,2
$xajax->configure('requestURI', 'funcionesConsultaGeneral.php');   //v0,5

exito.

Marcel dijo:
13 de Octubre, 2009 - 13:40

Exelente aporte,  gracias por la info, tuvo unos detallitos por las versiones, pero ya quedo.

hernan dijo:
13 de Octubre, 2009 - 14:02

Hola de nuevo! Tengo otra duda con respecto a Jquery, se puede integrar con xajax? es decir por ejemplo, estoy usando la libreria Jquery UI,  la modal dialog y arme toda la ventana, con los botones de escape y aceptar,  hay alguna manera de llamar una funcion de xajax en ese boton creado para el modal?

Muchas gracias y espero tu respuesta!

eALL dijo:
14 de Octubre, 2009 - 7:21

por supuesto, debes configurar el boton para que llame a la funcion xajax que deseas y luego, dependiedo lo que quieras hacer, puedes mostrar las respuestas de xajax asignandolas al div que declaraste como dialog.
espero me hayas entendido.

hernan dijo:
14 de Octubre, 2009 - 16:34

mm intente algo pero no funciona, no se si yo me explico bien, cuando armas la dialog, le indicas si queres que tenga botones y cuantos, todo esto en la parte de jquery.  Me podrias mostrar un ejemplo? Muchas gracias!

eALL dijo:
15 de Octubre, 2009 - 6:50
$('.selector').dialog({
    buttons: 
    { 
         "Ok": function() { 
             xajax_tufuncion(tusparametros);
             $(this).dialog("close"); 
     } 
  } 
});

El la función del botón que creas la llamada a xajax. ;)

hernan dijo:
16 de Octubre, 2009 - 10:39

Gracias por la pronta respuesta! pero creo que mi problema pasa tambien por el hecho que estoy usando un iframe donde el source es una pagina php que yo tenia hecha hecha con su boton guardarpaciente, yo no puedo usar el getFormvalues como lo hago en la pagina src del iframe, porque no puede acceder al los valores que estan en la pagina source. Creo que tendria que hacer un getElementByID del iframe para llegar alos controles de la pagina src. En sintesis deberia poner los 10 y algo parametros asi???
Muchas gracias Eall !!

yomisma dijo:
20 de Octubre, 2009 - 5:22

Hola me he descargado el ejemplo lo he descomprimido pero me da fatal error en algo que has comentado antes pero no se muestra nada en la pagina
<?php $xajax->printJavascript(“xajax”); //imprime el codigo javascript necesario para que funcione todo. ?>
me podrias ayudar a solucionarlo?
Gracias

hernan dijo:
20 de Octubre, 2009 - 9:07

El tema del iframe me tiene de la cabeza, no puedo hacer nada, o no se como estraer los datos de la pagina que esta en el iframe.
necesito que cuando presione el boton del dialog se carge el valor  que selecciono en el radiobutton(hay 10 posibles valores) pero no puedo obtener nada, tengo una funcion para recorrer pero no sirve al estar en el iframe.
Ayuda!

anibal dijo:
20 de Octubre, 2009 - 15:08

Hola muy buenas tardes. Esta muy bien explicadito tu tutorial. Me gustaría hacerte una pregunta, para realizar este mismo proceso pero utilizando BD como sería??? por ejemplo, yo hago lo siguiente: Inserto el registro en la BD y quiero que ese registro me aparezca en una tablita. Pero no logro conseguirlo. Este es el script que estoy utilizando:
function insert($form_entrada){
$db = Db::getInstance();

$insert = “INSERT INTO tabla (campo1,campo2,campo3) VALUES (value1, value2, value3)”;

$db->ejecutar($insert);

$stmt = $db->lastID();
$respuesta = new xajaxResponse();

if ($stmt>0) {
$respuesta->alert(“Registro insertado correctamente”);
//Hago el llamado a la funcion que agrega la fila
agregarFilas($stmt);
return $respuesta;
} else {
$respuesta->alert(“Ha ocurrido un error durante la inserción.\nVerifique la información que está suministrando.”);
return $respuesta;
}
}
/* funcion que agrega la fila */
function agregarFilas($idx) {

$db = Db::getInstance();

$sqlhno = “SELECT * FROM tabla WHERE id = $idx”;

$stmt = $db->ejecutar($sqlhno);       
while ($x = $db->obtener_resultados($stmt, 0)) {
$id = $idx;
$nombre = $x['nombres'];
}

$respuesta = new xajaxResponse();

$respuesta->create(“tbDetalle”, “tr”, “rowHno$id”);
$respuesta->create(“rowHno$id”, “td”, “id$id”);
$respuesta->create(“rowHno$id”, “td”, “nombres$id”);

$respuesta->assign(“id$id”, “innerHTML”, $id);
$respuesta->assign(“nombres$id”, “innerHTML”, $nombre);

return $respuesta;
}
Pero no me esta funcionando. Agradecería la ayuda que me pudieran brindar a este respecto.
De antemano muchisimas gracias por su colaboracion

hernan dijo:
23 de Octubre, 2009 - 9:02

Ayuda Eall!

eALL dijo:
24 de Octubre, 2009 - 10:11

Disculpa hernan, no me llegan los mail de aviso de comentario :(

No entiendo para que necesitas usar un iframe. quiza si me envías tu código te podría ayudar, pero hasta donde yo he visto con ajax se pueden solucionar los problemas que antes se hacían con iframe.

quizá esto te pueda ayudar. http://www.webestilo.com/foros/mensaje.phtml?foro=11&msg=46497

exito.

eALL dijo:
24 de Octubre, 2009 - 10:20

Anibal, envía por parámetro el objeto xajax y no lo crees denuevo en la otra función para que se vallan encolando las instrucciones. al ser un objeto el parámetro llega por referencia y no por valor, por lo que todos los cambios realizados en la otra función se verán reflejados tambien en la función que hace la llamada.

//lamada a función
agregarFilas($stmt, $respuesta);
 
/* funcion que agrega la fila */
function agregarFilas($idx) {
 
    $db = Db::getInstance();
 
    $sqlhno = “SELECT * FROM tabla WHERE id = $idx”;
    $stmt = $db->ejecutar($sqlhno);       
    while ($x = $db->obtener_resultados($stmt, 0)) {
        $id = $idx;
        $nombre = $x['nombres'];
    }
 
//$respuesta = new xajaxResponse();
 
    $respuesta->create(”tbDetalle”, “tr”, “rowHno$id”);
    $respuesta->create(”rowHno$id”, “td”, “id$id”);
    $respuesta->create(”rowHno$id”, “td”, “nombres$id”);
 
    $respuesta->assign(”id$id”, “innerHTML”, $id);
    $respuesta->assign(”nombres$id”, “innerHTML”, $nombre);
 
    return $respuesta;
}

exito.

eALL dijo:
24 de Octubre, 2009 - 10:32

yomisma, La verdad no se que pueda estar pasando, pero debes verificar que la pagina en la que colocas la instrucción

printJavascript(”xajax”); //imprime el codigo javascript necesario para que funcione todo. ?>

esté en la misma carpeta en que está la carpeta xajax ya que esa instrucción indica en que carpeta se encuentra la librería, por ejemplo, si tuvieras tu script en otra carpeta deberías colocar

printJavascript(”../xajax”); //imprime el codigo javascript necesario para que funcione todo. ?>

de esta manera le indicas que debe buscar en el nivel anterior de la carpeta actual.
Otra cosa que debes tener en cuenta es lo que imprime PHP en la página que dices que tienes el error, lo puedes ver con el click, ver codigo fuente. muchas veces ahí escribe el error pero no es visible en la página.

Cualquier cosa me avisas.

hernan dijo:
26 de Octubre, 2009 - 12:09

Hola Eall, lo que yo tengo es :
1 ventana modal
1 iframe
1 pagina php que muestra en textareas distintas opciones (con texto cargado) y se debe elegir una sola opcion.

Esta pagina (tiene codigo xajax) es el source del iframe.

yo necesito obtener el valor del textarea seleccionado(uso checks que tienen valor ascendente, que coinciden con el id de los textarea)

al estar en el iframe, no puedo obtener el valor ,cuando aprieto un boton de la ventana modal y enviarlo al form padre de esta modal.

Como puedo solucionar esto?
Muchas gracias deantemano.

eALL dijo:
28 de Octubre, 2009 - 6:57

hernan, con todo el cariño del mundo… mira esta pagina

Benga tío… no se puede saber todo…
Te recomiendo que lo que haces con iframe hazlo ahora con ajax… pero debes averiguar tu como hacerlo…

Exito.

hernan dijo:
4 de Noviembre, 2009 - 10:23

Pero vos decis utilizando xajax? no entiendo como buscarlo, que puedo  hacer con xajax, llenar la ventana modal?.
No es de molesto, entiendo lo que deics con la pagina, tengo un moton de cosas hechas y busco bastante en internet, pero cuando falla algo sino lo encuentro en google lo pregunto, por ejemplo a vos que estas mas canchero que yo en esto de xajax.

eALL dijo:
5 de Noviembre, 2009 - 6:55

Estimado hernan, el consejo que yo te he dado es que lo que hasta ahora haces con iframe, osea el formulario donde están tus variables que deseas cargar, ya no lo hagas con iframe, sino que lo hagas con AJAX. Carga tu formulario en un div y de esta manera xajax podrá tomar los datos desde la ventana modal. No se si me expliqué bien. La idea es no utilizar más los iframes ya que ocurren estos problemas con el acceso a los campos de la pagina cargada en ellos. Ya que estás ocupando jQuery, utiliza el metodo load para cargar en un div la misma página que cargas en el iframe.

 

Espero des con la solución.

Hernán dijo:
6 de Noviembre, 2009 - 16:34

Muchisimas gracias Eall, ahora si entendi lo que querias decir, con lo de Load que me decis se me abre un poquito mas la cabeza, pasa que lla use solo para las modal esta libreria,  recien le tomo la mano y me cuesta bastante, de ahi que no entendiera mucho. Yo pensaba que querias que use xajax para generar la pagina adentro de un div o algo asi, pero nada que ver.
Muchas gracias por toda tu ayuda.
Saludos

hernan dijo:
16 de Noviembre, 2009 - 9:17

Hola eall como estas?
Mira ya hice todo lo que pude con los consejos que me pasaste, y la verdad que me funciono usar el load y todo lo demas, ahora, note algo no se si te habrá pasado, yo tengo una pagina php que hace un require(otro pagina php) donde estan las funciones xajax que llamo, bien pongo todo lo necesario, el print javascript y todo lo demas bien. en la otra pagina que cargo en el load, tambien hago otro require(otra pagina php), donde llamo a funciones xajax especificas para esa pagina. Bueno el problema es que cuando llamo a esta dialog con esta ultima pagina adentro, cuando la cierro no funciona ninguna funcion xajax de la pagina padre, en cambio si no uso el metodo Load() para cargar la pagina y uso un iframe u otra cosa, si siguen funcionando las cosas cuando cierro la dialog.
Me rompi la cabeza buscando la solucion, pero la verdad que no encontre nada y tuve que volver momentaneamente al iframe maldito.
Espero tu respuesta, muchas gracias!

eALL dijo:
16 de Noviembre, 2009 - 13:26

puede ser que al incluir la otra página cause un error en el javascript que genera las llamadas a los códigos php. Te recomiendo que coloques las llamadas en un solo archivo para evitar el problema.

Disculpa la tardanza, como habrás notado, me bloquearon el sitio web por razones que desconozco.

hernan dijo:
16 de Noviembre, 2009 - 16:18

Vos decis poner los require de ambas paginas(padre e hija en dialog) en un archivo php?

eALL dijo:
17 de Noviembre, 2009 - 7:17

Claro, juntar las funciones de ambas páginas es un solo php al cual apuntes con el require de xajax. de esa manera cuando levantes la otra página mediante load ya existirán sus funciones en la página padre. Por lo anterior debes colocar sólo las llamadas a las funciones xajax en la página hija. Fijate que el load tiene la capacidad de traer solo lo que tu decidas, por lo que al momento de llamarlo indicalé que solo se traiga tu form o algún div que contenga solo el HTML del form y otras cosas que ocupes, nada de llamadas a js o cosas por el estilo ya que podrían afectar tu código principal.

En resumen, deja toda la funcionalidad en la página padre y trae solo el HTML de la hija.

exito.

franklings700 dijo:
23 de Noviembre, 2009 - 18:34

Hola amigo, me remito a ti por que he visto tu codigo y te dijo es muy bueno, te comento soy nuevo en php y mi pregunta es similar a la de christian o talvez no entendi bien tu explicacion. al general una nueva linea deseo guardar los valores de los campos para realizar operaciones con ellas. Se que talvez la pregunta esta algo repetida pero te agradeceria que me heches una mano, como te comento soy novato en php. De antemano te agradesco por el excelente codigo que haz dado

eALL dijo:
24 de Noviembre, 2009 - 13:42

lo que te hace falta es echar un vistazo a la entrada como guardar las filas agregadas dinamicamente

espero te ayude, sino, preguntas.

Gustavo dijo:
27 de Noviembre, 2009 - 16:17

Saludos, he visto varios de tus códigos, muy buenos por cierto, tengo una pregunta acerca de un pequeño inconveniente con respecto al uso de php + xajax + JQuery.
Resulta que al hacer una llamada a alguna funcón JQuery(la cual ya fue incluida en $(document).ready), funciona a la perfección la primera vez que carga la página, pero luego cuando hago uso de xajax para retornar algún contenido html (por ejemplo “dibujar” en un div un listado de registros), deja de funcionar totalmente el llamado a mis funciones JQuery, es como si tuviese que hacer nuevamente el llamado  $(document).ready.
No se si te habrá pasado alguna vez ese inconveniente si es así agradecería bastante tu ayuda, o en caso tengas algún ejemplo del manejo de php + xajax + JQuery sería de una gran ayuda.
Me despido, éxitos para ti y gracias.

eALL dijo:
28 de Noviembre, 2009 - 7:44

Hola Gustavo,
Lo que sucede es que jQuery asigna una especie de ID en un atributo que agrega a todos lo campos en el document.ready, el cual a ser cargado el elemento mediante ajax se pierde. Existen algunas soluciones como el método live o el plugin livequery que te ayudan con los eventos. Otra solción es ir agregando el código jQuery asociado a los campos en cada llamada ajax realizada o realizando llamadas a métodos js en los campos dinámicos como el onclick o el onchange y utilizando jQuery dentro del método.

Espero haberte ayudado.
Saludos.

Gustavo dijo:
28 de Noviembre, 2009 - 10:20

Que tal mi estimado eALL, gracias por la respuesta (no conocía lo referente a la especie de ID que se agrega a los elementos), te comentaré que si he trabajado con el método live, lamentablemente no soporta eventos como el blur o focus y justo necesitaba eso (nada es perfecto en esta vida), de paso también utilizé esa “jugada” de llamar a metodos js y dentro de ellos utilizar código JQuery, con eso si se puede solucionar muchas cosas… permíteme hacer mejor una pregunta más espécifica, has trabajado alguna vez con ventanas modales llamadas con JQuery(tipo formulario o un yes-no-cancel dialog) y teniendo llamadas a xajax dentro de tu página PHP?… si es así te agradecería me hagas saber como has combinado ese trabajo.
Checkare acerca de livequery, la verdad no he revisado acerca de eso.
Gracias! por la rápida respuesta al post anterior.
Saludos.

eALL dijo:
29 de Noviembre, 2009 - 21:14

Gustavo,

Claro que se puede hacer. Yo utilizo el dialog de  jqueryui para las ventanas modales y el xajax lo puedes ver en este comentario.

Cualquier duda me comentas.

hernan dijo:
30 de Noviembre, 2009 - 16:59

Hola Eall Como estas?, tengo otro problema, no se si se puede o si lo estoy haciendo mal,
Estoy intentado llamar a  una ventana modal no desde un boton sino cuando se selecciona un elemento de un SELECT.
Compie el mismo codigo que si apretara un boton,pero no anda.
Es posible hacer esto?
Muchas gracias

eALL dijo:
1 de Diciembre, 2009 - 7:10

Que tal hernan. Pieso que deberías llamar a la ventana modal en el evento onchange del select. si colocas tu código podría ayudarte más.

Adios.

hernan dijo:
4 de Enero, 2010 - 14:29

Hol a Eall Feliza Año.
Te queria preguntar si se puede pasar como parametros  de una funcion xajax una variable array de php.
es decir, en el tag  body en el evento Onload=”CargarTabla($arrayPHP, $stringPHP)”
Se puede hacer esto? porque lo intente y no me funciono.
Muchas Gracias.

eALL dijo:
5 de Enero, 2010 - 8:06

Hola hernan, feliz año para ti tambien.
Hay un error común que todos cometemos al inicio y es no saber separar el PHP (uu otro lenguaje) del HTML. Primero PHP interpreta todas las variables y escribe su valor. Luego en HTML la variable ya no existe.
Mientras viva PHP no existe el HTML y cuando el HTML esta vivo, PHP ya está muerto. por lo que no se puede realizar lo que me indicas. quiza podrias guardar tus valores en una string serializada (buscar serializable) y la manejas despues en PHP.
Quedaría algo así:

Onload=”CargarTabla('<?php echo $arraySerializado; ?>', '<?php echo $string; ?>')"

Luego el HTML se varía así:

Onload="CargarTabla('val1:1,val2:2,val3:3,valn:n', 'mi string')"

Esa es una manera. que estés bien.

Gustavo dijo:
8 de Febrero, 2010 - 11:48

 
muy buena la exp.
 
mi consulta es la siguiente, yo necesito saber como hacer para que una funcion de xajax me devuelva un valor x ej:
function x(){
//toda la inicializacion de xajaxresponse
hago un query a la bd, me responde y necesito devolver la id de producto
$respuesta->????  //que devo colocar ahi?
return $respuesta;
}
perdon si no soy claro

eALL dijo:
9 de Febrero, 2010 - 9:22

Gustavo, lo podrías asignar a algún campo oculto y despues utilizarlo para hacer lo que deseas.

$respuesta->addAssign("campo_oculto", "value", $id);

exito

Deje un comentario

Entradas (RSS) y Comentarios (RSS).
ProDev está gestionado con WordPress - Theme created by templatr