tengo una aplicacion hecha con smarty la cual la cula pinta en el html varios checkboxes al darle click en cada uno de los checkboxes este me trae un textbox o un select dependiendo como se requiera este proceso lo hago por medio de ajax, lo siguiente es digitar un dato en el textbox dibujado y luego por medio de un submmit me dispongo a consultar el dato digitado en una bd para esta consulta deberia pasarme dos variables al siguiente formulario la del checkboxes y la del textbox pero tan solo me pasa una varialba que es la del checkboxes osea que la que se pinta por medio de ajax esa no me la pasa al siguiente formulario
lo raro es que sin pintarlo en el template si no que directacmente desde el php me funcion perfectamente espero me hallan entendido copiare una parte de cada codigo para guiarse mejor
este es el php principal
Código PHP:
$consulta = "select * from categoria where idpadre = 1061 and activa != 0 and eliminado = 0";
$rs = $db->Execute($consulta) or errorQuery(__LINE__, __FILE__);
$campo[] = sprintf("<script type='text/javascript' src='consul_meta.js'></script>");
$campo[] = sprintf("<form name='forma1' id= 'forma1' method ='GET' action ='consulta.php'>");
$campo[] = sprintf("SELECCIONE OPCION A CONSULTAR")."<br><br>";
while(!$rs->EOF)
{
//pone el nombre al checkbox
//le asigna a la variable el nombre traido de la bd
if($rs->fields['antetitulo'] == 1)
{
//Creo el checkbox para los textbox
$divid = $rs->fields['idcategoria'];
$nombre = $rs->fields['nombre'];
$campo[] = sprintf("<div id = %s><INPUT TYPE='checkbox' NAME='opcion[]' VALUE='%s' onclick='mostrar(this.value,$divid,this)'>$nombre</div>",$rs->fields['idcategoria'],$rs->fields['idcategoria']);
}
$rs->MoveNext();
}
$campo[] = sprintf("<input type ='submit' action = 'accion' value = 'Consultar'>");
$campo[] = sprintf("</form>");
$smarty->assign('valor1', $valor1);
$smarty->assign('campos', $campo);
$smarty->display('consulta.html');
Código PHP:
<!--Template consulta-->
{literal}
<script type='text/javascript' src='js/consul_meta.js'></script>
{/literal}
<div id="consulta" align="justify">
<table border="0">
{section name=indice loop=$campos}
<tr>
{$campos[indice]}
</tr>
{/section}
</table>
</div>
Código PHP:
function mostrar(idcategoria,divid,checkboxes)
{
if(checkboxes.checked == true)
{
peticion_http = inicializa_xhr();
if(peticion_http)
{ //envia el dato para el frm php donde hace todo el proceso
//envia la por metodo get la variable al metadatos.php
peticion_http.open("GET", "consul_meta1_js.php?idcategoria="+idcategoria+"&divid="+divid,true);
peticion_http.onreadystatechange = function ()
{
if(peticion_http.readyState == READY_STATE_COMPLETE)
{ //verificar que el estado para recibir el dato este bien
if (peticion_http.status == 200)
{ //crea por metodo dom el div para mostrarlo en el formulario
var p = document.createElement("div");
//le asigna el id al div creado
p.setAttribute('id', idcategoria);
//asgina al div traido del form el nuevo div
document.getElementById(divid).appendChild(p);
//envia los datos por medio del div
p.innerHTML = peticion_http.responseText;
}
}
}
peticion_http.send(null);
}
}
[PHP]$idcategoria = $_GET['idcategoria'];
$divid = $_GET['divid'];
// ejecuta la consulta para iniciar a pintar los texbox o los select
$consulta = "select * from categoria where idcategoria = '$idcategoria' and activa != 0 and eliminado = 0";
$resultMetadatos=mysql_query($consulta,$link);
//pregunta si el que toca dibujar en el form
while ($row = mysql_fetch_array($resultMetadatos))
{ //pregunta si es 1 pinta un textbox
if($row['antetitulo'] == 1)
{
// $select = sprintf($campo['nombre'] = $row['nombre']);
$idcategoria = $row['idcategoria'];
$select .= sprintf("<input type='text' id='prueba' name='valor[]' size=10 value=''>",$row['idcategoria']);
}
[/PHP
y este es el ultimo el que hace la consulta en la bd
Código PHP:
if(isset($_GET['valor']) && (!empty($_GET['valor'])))
{
$valor = $_GET['valor'];
$opcion = $_GET['opcion'];
//combina la variable del textbox con la variable del checkbox
$arrayfinal = array_combine($opcion,$valor);
foreach ($arrayfinal as $key => $value)
{ //si se ha dejado en blanco el textbox se realiza la consultacon solo el idcategoria del checkbox
if ($value == '')
{
$consulta = "select * from metadatos where idmetadatos = '$key'";
$rs = $db->Execute($consulta) or errorQuery(__LINE__, __FILE__);
$num_rows = $rs->NumRows();
//var_dump($consulta);
while(!$rs->EOF)
{//guarda en un arreglo para evitar que al seleccionar dos opciones me muestre registros repetidos
$iddocumentos12[] = $rs->fields['iddocumentos'];
$rs->MoveNext();
}
}
hay tan solo coloque las partes mas importantes del codigo
les repito el principal inconveniente es que la variable que viene del ajax no me la pinta en el form de la consulta