Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2008, 11:58
blackster
 
Fecha de Ingreso: marzo-2008
Mensajes: 31
Antigüedad: 16 años, 9 meses
Puntos: 0
problemas al pasar datos con smarty

buenas tardes a todos espero que esten muy bien les agradeceria si alguien me pudiera colaborar con el siguiente problema. explico:

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'); 
este es el template de 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> 
este el js del ajax

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 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);
        }
      } 
este es el php que ahce el proceso del textbox

[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