Foros del Web » Programando para Internet » Javascript »

Codigo PHP inserto en JS no funciona

Estas en el tema de Codigo PHP inserto en JS no funciona en el foro de Javascript en Foros del Web. Tengo una función JS que agrega una serie de campos nuevos a un DIV, para el ejemplo solo pondre 2, la función es la siguiente: ...
  #1 (permalink)  
Antiguo 22/12/2009, 10:02
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Codigo PHP inserto en JS no funciona

Tengo una función JS que agrega una serie de campos nuevos a un DIV, para el ejemplo solo pondre 2, la función es la siguiente:

Código:
function crearCampos(){
var div = document.getElementById("campos_dinamicos");
var text ='<td align="center"><input name="ManualUT'+i+'" id= "ManualUT" type="text" disabled size="20" maxlength="20">
<td align="center" valign="top">'+ <?php MostrarSelect("Codigos","","","","","170","","Codigos'+i+'"); ?> +'</td>';
div.innerHTML = text;
En var text existe un código HTML que se utiliza para generar campos nuevos, el primer input es un textBox, y el segundo es una función PHP que devuelve un comboBox (o select para algunos). El código funciona bien sin la función PHP.

El código de la función PHP es el siguiente:

Código PHP:
<?php
function MostrarSelect($pEntidad,$pSelectedID=NULL,$pDisabled=NULL,$pTipoFamilia=NULL,$pAncho="145",$pEvento=NULL,$pNombre=NULL){
        
// Asignamos a una variable la matriz de la entidad a mostrar
        
$Matriz ObtenerMatriz($pEntidad,$pTipoFamilia);
        
// Si no existen registros en la base de datos de esta entidad, se manda el mensaje correspondiente
        
if (!$Matriz){
            echo 
"<font color=\"red\"><strong>No existen registros de $pEntidad en la Base de Datos.</strong></font>";
            return;
        }
        
// Mostramos el select con las opciones con los nombres de la entidad y los valores de sus identificadores en la base de datos
        
?>
        <select name="<?php if($pNombre!=NULL) echo $pNombre; else echo $pEntidad;?>" id="<?php echo $pEntidad;?><?php echo $pDisabled;?> style="width:<?php echo $pAncho?>px <?php echo "$pEvento"?> ">
            <option <?php if (!$pSelectedID) echo "selected ";?>value="" disabled>Seleccionar...</option>
            <?php
                
for ($i=$i<count($Matriz) ; $i++){
                    
// Si $pSelectedID es distinto de NULL debemos aplicar un selected a la opción correcta
                    
if ($pSelectedID)
                        if (
$Matriz[$i][0]==$pSelectedID)
                            
$Selected " selected";
                        else
                            
$Selected NULL;
                    echo 
"<option value=\"".$Matriz[$i][0]."\"".$Selected.">".$Matriz[$i][1]."</option>\n\t\t\t";
                }
            
?>
        </select>
        <?php
    
}

?>
y donde llamo a JS

Código:
<input name="Agregar" type="button" onClick="crearCampos()" id="Agregar" value="Agregar">

<div id="campos_dinamicos"> </div>
Cuando quito la función PHP de JS funciona bien, y he creado otras funciones básicas que devuelven string para probar el código y funcionan bien

Última edición por javiercitox; 22/12/2009 a las 17:10
  #2 (permalink)  
Antiguo 22/12/2009, 10:14
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Codigo PHP inserto en JS no funciona

Que es lo que queres hacer? crear DHTML? Para eso solo necesitas javascript, o sea, para crear elementos dinamicamente estan las funciones createElement, apenndChild, etc etc

Lo digo ya que en tu php no haces una consulta a una base de datos, ni nada que requiera de su uso si o si digamos... Si se pude, yo lo evitaria, es complicarte para nada me parece.

Saludos
  #3 (permalink)  
Antiguo 22/12/2009, 17:05
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Codigo PHP inserto en JS no funciona

Lo que pasa que mi función , llama a otra que si realiza una consulta sql, fijate en la 2da línea
Código PHP:
$Matriz ObtenerMatriz($pEntidad,$pTipoFamilia); 
Esta trae los datos necesarios para crear el select, digamos que en mi proyecto genero varios select con similares características, por lo que he creado esta función que los genera pidiendo el parámetro $pEntidad, ya que todos los demás son opcionales, algunos para dar forma al select y otros para algunas consultas más complejas.

La coloque para que vieran que esta no contiene errores, la he probado sin generarla dinámicamente y no tengo ningún problema.

Las funciones createElement y apenndChild las conosco poco, las he utilizado y no las ocupe en este caso ya que los campos que quiero insertar contienen propiedades específicas como por ejemplo disabled size="20" maxlength="20" además de agregar unos cuantos <td> ya que los imprimire en una tabla.

Lo que quiero es que al presionar el boton me aparesca la caja de texto y el select generado por mi función php.
  #4 (permalink)  
Antiguo 22/12/2009, 17:25
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Codigo PHP inserto en JS no funciona

En javascript no puedes incrustar codigo php.
conozco dos formas de hacer lo que quieres:
1) hacer lo que dice jackson666 (createElement o appendChild)
2) Utilizando ajax.

Tu decides...!!!
Saludos
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #5 (permalink)  
Antiguo 22/12/2009, 17:43
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Codigo PHP inserto en JS no funciona

Gracias a ambos por responder tan pronto.

1.- A createElement y appendChild le puedo dar propiedades?
2.- y como seria con Ajax???lo desconosco completamente

Nuevamente gracias por tomarse la molestia
  #6 (permalink)  
Antiguo 22/12/2009, 18:04
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Codigo PHP inserto en JS no funciona

var div = document.createElement('div'); //crear un div
div.style.color="red"; //dar propiedades

var link = document.createElement('a'); //crea un elemento de etiketa a

div.appendChild(link); // insertas el link dentro del div

para ajax nada mejor que el señor Google!!!
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #7 (permalink)  
Antiguo 22/12/2009, 18:24
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Codigo PHP inserto en JS no funciona

@mhax gracias
  #8 (permalink)  
Antiguo 26/12/2009, 14:58
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Codigo PHP inserto en JS no funciona

He logrado crear mis campos dinámicamente pasando los datos obtenidos de php en un string y luego tratandola con la función js, el único problema es que los campos que estoy creando van dentro de una tabla y al agregar los td dinámicamente en la página, al parecer no son tomados en cuenta, ya que me aparecen todos los campos juntos... mejor una imagen vale más q mil palabras....




http://s2.subirimagenes.com/otros/previo/thump_3780647untitled-5.jpg



La primera línea está generada directamente en la página, y la 2da con la función js, se puede apreciar que aparecen todos los campos juntos y debiesen salir como en la primera línea

Esta es la función que genera la segunda línea...

Código Javascript:
Ver original
  1. function crearCampos(CantCod,StringID,StringCod)
  2.     {
  3.     //Se separan las cadenas cuando aparece el delimitador , y se almacena en un array
  4.     idcod = StringID.split(',');
  5.     codig = StringCod.split(',');
  6.  
  7.     CantidadElementos = (FormularioInterManual.elements.length - 3);
  8.     i = CantidadElementos/13;
  9.    
  10.     var div         = document.getElementById("campos_dinamicos");
  11.     var td      = document.createElement("td");
  12.     var espacio = document.createElement("&nbsp;");
  13.     var salto       = document.createElement("P");
  14.     var ManualUT    = document.createElement("<input name=\"ManualUT"+i+"\" id= \"ManualUT\" type=\"text\" disabled size=\"20\" maxlength=\"20\">");
  15.     var Buscar = document.createElement("<input type=\"button\" name=\"Buscar\" value=\"Buscar\" onClick=\"abrirVentana("+i+");\" style=\"font:\'Trebuchet MS\'; font-size:9px;border-width:1px;border-style:solid;border-color:#003366; width:64px;\">");
  16.     var HoraInicial = document.createElement("<input name=\"ManualHora_Inicial"+i+"\" type=\"text\" style=\"width:21px\" onBlur=\"ValidarHora(this,\'Hora\',1)\" onKeyPress=\"SoloNumeros(event,this,\'Hora\')\" onKeyUp=\"ValidarHora(this,\'Hora\',0)\" maxlength=\"2\">");
  17.     var MinutoInicial= document.createElement("<input name=\"ManualMinutos_Inicial"+i+"\" type=\"text\" style=\"width:21px\" onBlur=\"ValidarHora(this,\'Minutos\',1)\" onKeyPress=\"SoloNumeros(event,this,\'Minutos\')\" onKeyUp=\"ValidarHora(this,\'Minutos\',0)\" maxlength=\"2\">");
  18.     var HoraFinal   = document.createElement("<input name=\"ManualConsHora_Final"+i+"\" type=\"text\" style=\"width:21px\" onBlur=\"ValidarHora(this,\'Hora\',1)\" onKeyPress=\"SoloNumeros(event,this,\'Hora\')\" onKeyUp=\"ValidarHora(this,\'Hora\',0)\" maxlength=\"2\">");
  19.     var MinutoFinal = document.createElement("<input name=\"ManualConsMinutos_Final"+i+"\" type=\"text\" style=\"width:21px\" onBlur=\"ValidarHora(this,\'Minutos\',1)\" onKeyPress=\"SoloNumeros(event,this,\'Minutos\')\" onKeyUp=\"ValidarHora(this,\'Minutos\',0)\" maxlength=\"2\">");
  20.     var CheckBox    = document.createElement("<input name=\"ManualTurnoSig"+i+"\" type=\"checkbox\" value=\"checkbox\">");
  21.     var SAP         = document.createElement("<input name=\"ManualSAP"+i+"\" type=\"text\" size=\"10\" maxlength=\"10\">");
  22.     var Sistema     = document.createElement("<input name=\"ManualSistema"+i+"\" type=\"text\" size=\"25\" maxlength=\"30\" disabled=\"disabled\">");
  23.     var Observacion = document.createElement("<input name=\"ManualObs_Inter"+i+"\" type=\"text\" size=\"35\" maxlength=\"256\">");
  24.     var IDSistema   = document.createElement("<input type=\"hidden\" name=\"IDSistema"+i+"\" value=\"\" />");
  25.     var SaltoLinea  = document.createElement("<input type=\"hidden\" name=\"Salto"+i+"\" value=\"NextLine\" />");      
  26.  
  27.     var Codigo = document.createElement("<select name=\"Codigos"+i+"\" id=\"Codigos\" style=\"width:170px\">");
  28.  
  29.     for (i=0; i < CantCod+1 ; i++)
  30.         {
  31.         Opciones = document.createElement('option');
  32.         Opciones.value = idcod[i];
  33.         Opciones.innerHTML = codig[i+1];
  34.         Codigo.appendChild(Opciones);
  35.         }
  36.  
  37. //En está parte pienso que está el error
  38.     salto.appendChild(td);
  39.     td.appendChild(ManualUT);
  40.     td.appendChild(Buscar);
  41.     td.appendChild(Codigo);
  42.     td.appendChild(HoraInicial);
  43.     td.appendChild(MinutoInicial); 
  44.     td.appendChild(HoraFinal);
  45.     td.appendChild(MinutoFinal);   
  46.     td.appendChild(CheckBox);
  47.     td.appendChild(SAP);
  48.     td.appendChild(Sistema);
  49.     td.appendChild(Observacion);
  50.     td.appendChild(IDSistema);
  51.     td.appendChild(SaltoLinea);
  52.     div.appendChild(salto);
  53. }

Última edición por javiercitox; 26/12/2009 a las 15:06 Razón: No se ve la imagen que puse
  #9 (permalink)  
Antiguo 28/12/2009, 05:06
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Codigo PHP inserto en JS no funciona

ayuda porfa.... el codigo me tiene agotado.... :(
  #10 (permalink)  
Antiguo 28/12/2009, 06:40
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Codigo PHP inserto en JS no funciona

logre solucionarlo, como???
cree objetos tipo texto nuevos que contuvieran espacios

Código Javascript:
Ver original
  1. espacio     = document.createTextNode(" ");
  2. td.appendChild(espacio);

y los fui agregando donde correspondian, hice lo mismo con los ":", y el código quedo asi finalmente (es solo la parte donde pense que estaba el error):

Código Javascript:
Ver original
  1. salto.appendChild(td);
  2.     td.appendChild(ManualUT);
  3.     td.appendChild(espacio);
  4.     td.appendChild(Buscar);
  5.     espacio     = document.createTextNode(" ");
  6.     td.appendChild(espacio);
  7.  
  8.     td.appendChild(Codigo);
  9.     espacio     = document.createTextNode(" ");
  10.     td.appendChild(espacio);
  11.  
  12.     td.appendChild(HoraInicial);
  13.     td.appendChild(texto1);
  14.     td.appendChild(MinutoInicial); 
  15.     espacio     = document.createTextNode("  ");
  16.     td.appendChild(espacio);
  17.     texto1      = document.createTextNode(":");
  18.  
  19.     td.appendChild(HoraFinal);
  20.     td.appendChild(texto1);
  21.     td.appendChild(MinutoFinal);   
  22.     espacio     = document.createTextNode(" ");
  23.     td.appendChild(espacio);
  24.    
  25.     td.appendChild(CheckBox);
  26.     espacio     = document.createTextNode(" ");
  27.     td.appendChild(espacio);
  28.  
  29.     td.appendChild(SAP);
  30.     espacio     = document.createTextNode(" ");
  31.     td.appendChild(espacio);
  32.  
  33.     td.appendChild(Sistema);
  34.     espacio     = document.createTextNode(" ");
  35.     td.appendChild(espacio);
  36.  
  37.     td.appendChild(Observacion);
  38.  
  39.     td.appendChild(IDSistema);
  40.     td.appendChild(SaltoLinea);
  41.     div.appendChild(salto);
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:50.