Guardar campos dinamicos en php a bd mysql

Cerrado
flaka - 27 ago 2009 a las 00:24
Darkghardian Mensajes enviados 1 Fecha de inscripción lunes, 17 de marzo de 2014 Estatus Miembro Última intervención lunes, 17 de marzo de 2014 - 17 mar 2014 a las 08:20
Hola a todos, mi inconveniente es el siguiente, lo que pasa es que yo agrego campos dinamicos con codigo en javascript , haciendo que el usuario solamente con un boton me agrege campos automaticamentea el formulario.
que es lo que pasa, el me los agregar bien bonito y todo, pero al momento de darles guardar, no me estan guardando en la bd mysql.
sera que me podrian colaborar con ese pequeño inconveniente porfa, miren que es de suma urgencia.
pues estoy trabando con este codigo, aqui se los dejo para que me ayuden.
de antemano muhcas gracias por su colaboracion.
:)
**
<html>
<head>
<title>Agregar campos</title>
</head>

<body>
<form id="gencampo" name="gencampo" action="<?php echo $gencampo['precuntas.php'];?>" method="post" onSubmit="asigna()">
<input type="text" name="pregunta" value="">
<br>
<table border="0" id="tabla" cellspacing="1">
<tr colspan="13" align="left">
<td align="center"><font color="#CC66CC" size="3"><b></b></font></td>
</tr>
<tr align="left">
<td valign="top"><input type="button" name="b1" value="Agregar" onClick="camponuevo()">
<input type="button" name="b2" value="Quitar" onClick="borrar()" >
<input type="submit" name="b3" id="b3" value="Guardar"></td>
<td><font color="blue" size="1">Respuesta</font></td>
<td><font color="blue" size="1">Opcion Generada</font></td>
</tr>
<tr>
<input type="hidden" name="var_cont">
</tr>
</table>

</form>

<script language='JavaScript'>
var cont=0;
function camponuevo() //Esta la funcion que agrega los campos :
{

cont++;
var indiceFila=1;
campof = document.getElementById('tabla').insertRow(-1);
campof.id=indiceFila;
campo=campof.insertCell(-1);
campo.innerHTML='<td><input type="text" size="50" name="respuesta"></td>';
campo=campof.insertCell(-1);
campo.innerHTML='<td><input type="radio" name="opc"></td>';
indiceFila++;

}

function borrar() {
var table = document.getElementById('tabla');
if(table.rows.length > 3)
{
table.deleteRow(table.rows.length -1);
cont--;
}
}

function asigna()
{
valor=document.gencampo.var_cont.value=cont;
alert('yurany dice,cantidad de preguntas:'+valor)
<?php
$pregunta=$_POST["pregunta"];
$resp=$_POST["respuesta"];
$opcion=$_POST["opc"];
?>

}

</script>
</body>
</html>

3 respuestas

Amigos yo tambien tengo ese problema porque creo una tabla y en cada celda creo campos de texto con INNERHTML y ahora que voy a enviar el formulario a mi archivo PHP, me dice que no encuentra los campos con el Id que cree dinamicamente.... estoy requetebarada.... y no he podido resolver el problema, agradezco a las personas que me puedan colaborar....
4
Alfin pude resolver este dilema, aca te dejo un ejemplo: con esta instrucción (document.getElementById('TablaMed').rows[i].cells[j].childNodes[0].value) obtengo el valor de la caja de texto dinamica que se encuentra dentro de la tabla dinamica. hay que utilizarla con un bucle que me valla recorriendo la tabla y despues ir armando una cadena de texto con esta instruccion (textos = textos + document.getElementById('TablaMed').rows[i].cells[j].childNodes[0].value + '-';), ya teniendo la cadena es mas facil meterla a nuestra base de datos fraccionandola por filas: bueno esto explicandolo así es bastante enrredao, mejor te mando el código y lo prueban amigos

archivo Untitled-5.php donde voy creando mi tabla dinamica

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script>
var contLin = 1, tr, td, tabla;
function agregar() {
alert (contLin);
document.getElementById("OcultoContLin").value = contLin;
//var
tabla = document.getElementById('TablaMed');
tr = tabla.insertRow(tabla.rows.length);
td = tr.insertCell(tr.cells.length);
td.innerHTML = "<input type='text' size='20' name='t" + contLin + "1' id='t" + contLin + "1' value='t" + contLin + "1'>";
//alert (document.getElementById(td.innerHTML).id);
td = tr.insertCell(tr.cells.length);
td.innerHTML = "<input type='text' size='3' name='t" + contLin + "1' id='t" + contLin + "2' value='t" + contLin + "2'>";
td = tr.insertCell(tr.cells.length);
td.innerHTML = "<input type='text' size='10' name='t" + contLin + "1' id='t" + contLin + "3' value='t" + contLin + "3'>";
td = tr.insertCell(tr.cells.length);
td.innerHTML = "<textarea cols='15' rows='1' id='t" + contLin + "4'>t" + contLin + "4";
contLin++;

}

function eliminarultima() {
ultima = document.all.TablaMed.rows.length - 1;

if(ultima > 0){
document.all.TablaMed.deleteRow(ultima);
contLin--;
document.getElementById("OcultoContLin").value = contLin-1;
}
}

function datosTextos() {
var textos = '';
for (var i=1;i<document.getElementById('TablaMed').rows.length;i++){
for (var j=0;j<4;j++){
if (j==3){
textos = textos + document.getElementById('TablaMed').rows[i].cells[j].childNodes[0].value;
}else{
textos = textos + document.getElementById('TablaMed').rows[i].cells[j].childNodes[0].value + '-';
}
}
textos = textos + '/';
}
alert(textos);
document.getElementById("OcultoDatoTabla").value = textos;
}

</script>

<style type="text/css">
<!--
.Estilo1 {font-size: 12px}
.TEXTO { font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
font-style: normal;
line-height: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
color: #FFFFFF;
}
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="get" action="Untitled-6.php">
<table width="372" border="1" id="TablaMed">
<tr class="Estilo1">
<td width="149">Nombre de Medicamento </td>
<td width="28">Cant</td>
<td width="58">Dosis</td>
<td width="109">Observacion</td>
</tr>
</table>
<p>
<input name="AgregaMed" type="button" id="AgregaMed" value="+" onclick="agregar()" />
<input name="EliminarMed" type="button" id="EliminarMed" value="-" onclick="eliminarultima()" />
<input name="OcultoContLin" type="text" size="3" id="OcultoContLin" style="visibility:visible" />
<input name="Mostrar" type="button" id="Mostrar" value="mostrar" onclick="datosTextos()" />
<input name="OcultoDatoTabla" type="text" size="40" id="OcultoDatoTabla" style="visibility:visible" />
<input name="cadena" type="submit" id="cadena" value="cadena"/>
</p>
</form>
<p> </p>
</body>
</html>





ahora un archivo Untitled-6.php que me recibe la cadena y me la envia a mi base de datos
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<?php
$cadena = $_GET['OcultoDatoTabla'];
$partes = explode("/",$cadena); // divide una cadena segun separador
array_pop($partes); // elimina el ultimo elemento del array
for($i=0;$i<=(count($partes)-1);$i++){
$subpartes = explode("-",($partes[$i]));
/* CONEXION PARA LA TABLA DE MEDICAMENTOS */
$conexion4 = mysql_connect("localhost", "root", "");
mysql_select_db("veterinaria", $conexion4);
$consulta4= "insert into veterinaria.medicamentos values ('NULL', '$subpartes[0]', '$subpartes[1]', '$subpartes[2]','$subpartes[3]','1')";
mysql_query($consulta4, $conexion4);
}


/*for($i=0;$i<=(count($partes));$i++)
{
echo $partes[$i];
echo "<br>";
}*/

/*echo "<pre>";
var_dump($partes);
echo "</pre>";*/

/*$i = 0;
foreach($partes as $v) {
print "\$a[$i] => $v<br>";
$i++;
}*/
?>

<body>
</body>
</html>
amigos la tabla de mi base de datos que usé tiene los mismos campos que la tabla que creo dinamicamente, solo que el ultimo campo de esta tabla es una llave foranea que lleva el id de otra tabla por eso le coloque (1) para rellenar ahí a manera de ejemplo y el primer campo que es autonumerico por eso tene NULL
0
muy buen aporte grax
0
jajaja no entendi muy bien lo de la parte de Untitled-6.php puedes explikarmelo :(
0
Bueno el Untitled-6.php es porque yo trabajo el codigo que me enlaza con la base de datos aparte,

el Untitled-6.php recibe los valores de la variables del formulario que se encuentran en Untitled-5.php, hace la conexion con la base de datos y envía la información a MySql,

Es mas cuando presiono el boton enviar del formulario el Untitled-5.php, me envia todas las variables del formulario a Untitled-6.php usando el metodo GET

<form id="form1" name="form1" method="get" action="Untitled-6.php">

yo manejo dos archivos .php

Espero que te haya servido, cualquier inquietud me avisas. bye
0
Muy buen aporte amigo justo era lo que estaba buscando, pero ahora tengo otra pregunta, que pasa si quiero eliminar una fila que no sea la ultima, porque ejemplo si tengo 5 filas y quiero eliminar la 2...
0
Hola

tengo la misma duda... si sabes algo me puedes enviar un correo a: camposretamales@gmail.com
2
laurenceHR Mensajes enviados 1 Fecha de inscripción sábado, 5 de febrero de 2011 Estatus Miembro Última intervención sábado, 5 de febrero de 2011 2
5 feb 2011 a las 06:04
q estas tratando de hacer con esta parte del codigo...

function asigna()
{
valor=document.gencampo.var_cont.value=cont;
alert('yurany dice,cantidad de preguntas:'+valor)
<?php
$pregunta=$_POST["pregunta"];
$resp=$_POST["respuesta"];
$opcion=$_POST["opc"];
?>

}

????

xq pones el codigo php dentro de la funcion js ¿? ... =/
2