30/06/2008, 07:08
|
| | Fecha de Ingreso: junio-2008
Mensajes: 9
Antigüedad: 16 años, 7 meses Puntos: 0 | |
problema con formulario dinamico hola, he escrito antes este problema pero creo que no lo he redactado del todo bien quizas, paso a detallarselos:
tengo un formulario en una pagina php, al mismo se le pueden agregar mas campos mediante dhtml, mi problema es que no puedo recibir los nuevos campos generados, yo antes hice una pagina de prueba y todo funciona perfectamente. Este es el codigo de mi formulario php:
#frm_consultassist_consultation
<form id="assist" action="script_sql/consulta_assist.php" method="GET" name="assist" >
<fieldset id="fs">
<br>
<select name="campo" id="campo">
<option value="vacio"><? echo txt_concept ?></option>
<optgroup label=" <? echo $nombre_tabla[0] ?>">
<? for ($i=0; $i<count($nombre_campo); $i++) {
if ($i > 0) {
if ($nombre_tabla[$i] != $nombre_tabla[$i-1])
{ ?>
</optgroup>
<optgroup label=" <? echo $nombre_tabla[$i] ?> "> <?
} }
?>
<option value="<?php echo $nombre_campo[$i];?>"> <? if (strlen($etiqueta_campo[$i])<=2){echo $nombre_campo[$i];} else {echo $etiqueta_campo[$i];}?></option>
<? } ?>
</optgroup>
</select>
<select name="comparador" id="comparador">
<option value="vacio"><? echo txt_comparator ?> </option>
<option value="LIKE"> LIKE </option>
<option value="="> = </option>
<option value=">"> > </option>
<option value="<"> < </option>
<option value=">="> >= </option>
<option value="<="> <= </option>
<option value="BETWEEN"> BETWEEN </option>
</select>
<input id="texto" name="texto" type="text" />
<br>
<br>
</fieldset>
<input type="button" onClick="agregarHijo()" value="<? echo txt_add ?>" />
<input type="button" onClick="eliminarHijo()" value="<? echo txt_delete ?>" />
<input type="button" onClick="eliminarTodo()" value="<? echo txt_deleteall ?>" />
<input align="right" id="input" name="input" type="submit" value="<? echo txt_submit ?> " />
</form>
Bueno, ahora mi script para generar dinamicamente mi formulario es el siguiente:
#clonar.js
var cantidad = 0;
//esta funcion agrega la condicion "AND" u "OR" que desea el usuario, despues llama a la funcion clonar nodos para agregar el nuevo criterio
function agregarHijo()
{
cantidad++;
document.getElementById('fs').appendChild(document .createElement('br'));
var nuevohijo = document.createElement('select');
nuevohijo.name = "opcion"+cantidad;
var op1 = new Option("AND", "AND");
var op2 = new Option("OR", "OR");
nuevohijo.appendChild(op1);
nuevohijo.appendChild(op2);
document.getElementById('fs').appendChild(nuevohij o);
document.getElementById('fs').appendChild(document .createElement('br'));
clonarNodos();
}
//esta funcion elimina un criterio agregado, tiene el for porque debe eliminar lineas en blancoy los demas nodos que se agregaron
function eliminarHijo()
{
if (cantidad!=0)
{
for (i=0; i<11; i++)
{
var nuevohijo=document.getElementById('fs');
nuevohijo.removeChild(nuevohijo.lastChild);
}
cantidad--;
}
}
function eliminarTodo()
{
while (cantidad!=0)
{
for (i=0; i<11; i++)
{
var nuevohijo=document.getElementById('fs');
nuevohijo.removeChild(nuevohijo.lastChild);
}
cantidad--;
}
}
//esta funcion lo que hace es clonar el nodo en el que se encuantran los criterios de seleccion
function clonarNodos()
{
document.getElementById('fs').appendChild(document .createElement('br'));
var id=document.getElementById("campo");
var nuevos=id.cloneNode(true);
nuevos.style.id='campo'+cantidad;
nuevos.name='campo'+cantidad;
id=document.getElementById("fs");
id.appendChild(nuevos);
espaciar();
var id=document.getElementById("comparador");
var nuevos=id.cloneNode(true);
nuevos.style.id='comparador'+cantidad;
nuevos.name='comparador'+cantidad;
id=document.getElementById("fs");
id.appendChild(nuevos);
espaciar();
var id=document.getElementById("texto");
var nuevos=id.cloneNode(true);
nuevos.style.id='texto'+cantidad;
nuevos.name='texto'+cantidad;
nuevos.value="";
id=document.getElementById("fs");
id.appendChild(nuevos);
document.getElementById('fs').appendChild(document .createElement('br'));
document.getElementById('fs').appendChild(document .createElement('br'));
}
function espaciar() {
var espacio = document.createTextNode("\u00a0");
document.getElementById("fs").appendChild(espacio) ;
}
Y finalmente donde recibo los datos es este script:
#consulta_assist.php
<?php
echo $_GET["campo"];
echo $_GET["comparador"];
echo $_GET["texto"];
$i=1;
while($_GET["campo"."$i"] != "")
{
echo $_GET["opcion"."$i"];
echo $_GET["campo"."$i"];
echo $_GET["comparador"."$i"];
echo $_GET["texto"."$i"];
$i++;
}
if (isset($campo1))
{
echo "definido";
}
else
{
echo "NO DEFINIDO";
}
if (isset($campo2))
{
echo "definido";
}
else
{
echo "NO DEFINIDO";
}
?>
Los ultimos "if" de este script son para ver si me define el campo o no, lo que hago es clonar el fieldset de mi formulario, pero el problema cuando quiero recoger los datos enviados esta en que parece que no me define los campos, es decir que no existen, pero el codigo javascript anda perfectamente, me genera los campos sin problemas.
Bueno, agradeceria enormemente si me pudieran ayudar, lo postee aqui porque en realidad no se si es problema de php o de javascript. muchas gracias |