Foros del Web » Programando para Internet » PHP »

Problema con tablas dinamicas y BD

Estas en el tema de Problema con tablas dinamicas y BD en el foro de PHP en Foros del Web. Hola tengo el siguiente ejemplo de tablas dinamicas y me gustaria adaptarlo para que me permita ingresar informacion a una BD el codigo es el ...
  #1 (permalink)  
Antiguo 19/09/2005, 07:31
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta Problema con tablas dinamicas y BD

Hola tengo el siguiente ejemplo de tablas dinamicas y me gustaria adaptarlo para que me permita ingresar informacion a una BD el codigo es el siguiente:



Código PHP:
<html
<
head
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"
<
script language="javascript"

function 
AddRowsToTable() 

var 
tbl document.getElementById('tblSample'); 
var 
lastRow tbl.rows.length
var 
row tbl.insertRow(lastRow); 
var 
cellRight row.insertCell(0); 
cellRight.innerHTML="<input type='text' name='answers[]' id='answers' class='txtBoxStyle3' size='38'><a hre='#' onClick='DeleteRow(this)'> <img src='SIGDOC/ICONOS/SUBMIT.GIF' border='0'></a> <input type='radio' name='cierto' id='cierto'>"

function 
DeleteRow(x

while (
x.tagName.toLowerCase() !='tr'

if(
x.parentElement
x=x.parentElement
else if(
x.parentNode
x=x.parentNode
else 
return; 

var 
rowNum=x.rowIndex
while (
x.tagName.toLowerCase() !='table'

if(
x.parentElement
x=x.parentElement
else if(
x.parentNode
x=x.parentNode
else 
return; 

x.deleteRow(rowNum); 


function 
RemoveRowFromTable(rowid) { 
//alert("sadfs"); 
var tbl document.getElementById(iteration); 
//var lastRow = tbl.rows.length; 
//if (lastRow > 1) 
tbl.deleteRow(rowid); 



function 
este() 

for(var 
0;document.forms.formulario.answers.length;y++) 


document.formulario.answers[y].focus(); 



</script> 
</head> 

<body> 
<form name="formulario" method="post" onSubmit="return verificar(this)" action="Formulariodinamico.php"> 
<table cellpadding="0" cellspacing="0" align="left" width="304" border="0"> 
<tr> 
<td> 
<table cellpadding="0" cellspacing="0" width="100%" align="center" border="0"> 
<tr class="texforms"> 
<td align="left">Respuestas:&nbsp;<input name="button" type=button onClick="AddRowsToTable();este();return false;" value="+" class="Buttonforms"></td> 
</tr> 
</table> 
</td> 
</tr> 
<tr> 
<td> 

<table cellpadding="1" cellspacing="0" width="100%" id="tblSample" border="0"> 
<tr> 
<td> 
<input type="text" name="answers[]" id="answers" class="txtBoxStyle3" size="38"> 
              <img src="SIGDOC/ICONOS/SUBMIT.GIF" width="25" height="25" border="0" > 
              <input type="radio" name="cierto" id="cierto"> 
</td> 
</tr> 
<tr> 
<td> 
<input type="text" name="answers[]" id="answers" class="txtBoxStyle3" size="38"> 
              <img src="SIGDOC/ICONOS/SUBMIT.GIF" width="25" height="25" border="0" > 
              <input type="radio" name="cierto" id="cierto"> 
</td> 
</tr> 
</table> 

</td> 
</tr> 
</table> 

</form> 
</body> 
</html> 
La tabla en la cual deseo ingresar la informacion es:

Los campos que se van agregar pertenecen a una tabla

Ejemplo:

CREATE TABLE contabilizacion
(
idcont int NOT NULL AUTO_INCREMENT,
numdoc varchar(5) NOT NULL,
codcuenta varchar(8) NOT NULL,
nitcontab varchar(11) NOT NULL,
indcucontab varchar(2) NOT NULL,
debito double,
credito double,
detacontab text,
vrbase double,
naturaleza char(1),
PRIMARY KEY (idcont),
INDEX (numdoc),
FOREIGN KEY (numdoc) REFERENCES documento(numdoc) ON UPDATE CASCADE ON DELETE CASCADE,
INDEX (codcuenta),
FOREIGN KEY (codcuenta) REFERENCES cuentas(codcuenta) ON UPDATE CASCADE ON DELETE CASCADE
) TYPE = INNODB;



Lo que se desea es ir llenando los campos y amedida que se necesite otro formulario dar clic en el boton agregar formulario para llenar un nuevo registro. Al final dar clic en el boton agregar inserte todos los campos en la tabla.

Por otro lado al dar clic en el boton eliminar borre los formularios deseados.


Gracias por la colaboracion;
  #2 (permalink)  
Antiguo 19/09/2005, 08:02
Avatar de thunder-ion  
Fecha de Ingreso: diciembre-2004
Mensajes: 106
Antigüedad: 19 años, 4 meses
Puntos: 0
Uy... innoDB o parecidos..

Mira bien que los servers donde alojes tu Website admitan este tipo de tablas. Comen mucha memoria y muchos proveedores no las activan.

Saludos.
  #3 (permalink)  
Antiguo 19/09/2005, 09:35
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Bueno ...bueno

Oye y sobre el formulario dinamico que??

No te me desvies de la inquietud. OK

  #4 (permalink)  
Antiguo 19/09/2005, 11:22
Avatar de thunder-ion  
Fecha de Ingreso: diciembre-2004
Mensajes: 106
Antigüedad: 19 años, 4 meses
Puntos: 0
Solo era un pequeña nota
  #5 (permalink)  
Antiguo 19/09/2005, 13:38
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Desacuerdo No existe nadie que me pueda ayudar ????


help me....

  #6 (permalink)  
Antiguo 19/09/2005, 13:51
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
bueno, sr. higi... lo que requiere es cambiar el javascript y crear el PHP para el procesamiento.
en cuanto al js debe estar familiarizado con el para modificarlo, el codigo que muestra solo inserta una columna a la tabla si esto esta bien para usted solo modifique el codigo que genera el "input" para que genere los campos que necesita.
Recordar poner los nombres con "[]" ejem: name="campo[]".

por lo del PHP se trabajaria igual que un formulario normal, la unica diferencia es que al
recojer el valor de una de los campos como por ejemplo $_POST['answers'] esto devolvera un array con todos los input llamados "answer[]" generados en la forma, y siguiendo esta tonica con los demas campos. esto solo invlucraria recorrer esos valores para el procesamiento.

por si las dudas estare posteando un ejemplo mas tarde...
cuando tenga mas tiempo libre, estoy en el trabajo .
  #7 (permalink)  
Antiguo 19/09/2005, 15:23
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
De acuerdo En espera del ejemplo practico...

Hola Vaalegk gracias por la ayuda que me puedas brindar. Estoy en espera del ejemplo practico para orientarme un poco.

La verdad lo necesito de caracter U.

No bromeo ... me estan presionando.

Gracias.
  #8 (permalink)  
Antiguo 20/09/2005, 06:20
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Solicitando tu ayuda

Hola Vaalegk en espera de tu colaboracion ....
  #9 (permalink)  
Antiguo 20/09/2005, 07:45
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
Bueno solo modifique un poco lo que posteaste checkealo, la parte que mas te interesa esta al final el php bastante corto pero demestra el concepto.

Código PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">

data="<input type='text' name='answers[]' id='answers' class='txtBoxStyle3' size='38'><a hre='#' onClick='DeleteRow(this)'> <img src='SIGDOC/ICONOS/SUBMIT.GIF' border='0'></a> <input type='radio' name='cierto' id='cierto'>";

function AddRowsToTable(code) //no necesario pero en caso de que quieras agregar otra cosa
{
var tbl = document.getElementById('tblSample');
var lastRow = tbl.rows.length;
var row = tbl.insertRow(lastRow);
var cellRight = row.insertCell(0);
cellRight.innerHTML=code;
}
function DeleteRow(x)
{
while (x.tagName.toLowerCase() !='tr')
{
if(x.parentElement)
x=x.parentElement;
else if(x.parentNode)
x=x.parentNode;
else
return;
}
var rowNum=x.rowIndex;
while (x.tagName.toLowerCase() !='table')
{
if(x.parentElement)
x=x.parentElement;
else if(x.parentNode)
x=x.parentNode;
else
return;
}
x.deleteRow(rowNum);
}

function RemoveRowFromTable(rowid) {
//alert("sadfs");
var tbl = document.getElementById(iteration);
//var lastRow = tbl.rows.length;
//if (lastRow > 1)
tbl.deleteRow(rowid);
}


function este() //ARREGLAR
{
    elem=document.all?document.all.answers:document.getElementById('answers');
    if(elem.length){
        elem[elem.length].focus();
    }else{
        elem.focus();
    }
}
</script>
</head>

<body>
<form id="formulario" name="formulario" method="post" action="<?=$_SERVER['PHP_SELF']?>">
<table cellpadding="0" cellspacing="0" width="304" border="0">
    <tr>
        <td>
        Respuestas:&nbsp;<input name="button" type="button" onClick="AddRowsToTable(data);este();return false;" value="+" class="Buttonforms"></td>
        
        </td>
    </tr>
    <tr>
        <td>
            <table cellpadding="1" cellspacing="0" width="100%" id="tblSample" border="0">
            </table>
        </td>
    </tr>
    <tr>
        <td>
        <hr>
        <input type="submit">
        </td>
    </tr>
</table>
<hr>
<?php
//obtener valores de answers
$answers=isset($_POST['answers'])?$_POST['answers']:array();

//answers
echo('<b>Valores de answers[]</b>:<br>');
foreach(
$answers as $ans){
    echo(
$ans.' <br>');
}

?>
</form>
</body>
</html>
  #10 (permalink)  
Antiguo 20/09/2005, 09:47
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta Se me presento un error

El error se me presenta cada vez que inserto un campo de texto y dice:

En linea 56

'elem[...] es nulo o no es un objecto

... disculpa lo inexperto pero en que parte llamo e inserto los campos en mi base de datos.

.... si tengo tengo 10 item con diferentes datos ???

de esta forma lo hacia antes ...

Código PHP:

$conn 
conectar(); // Llama a la funcion de conexion a la BD
         
$sql1 = ("select c.idcont from contabilizacion c where c.idcont <> null or c.idcont = null or c.idcont > 0");         

$respu1 mysql_query($sql1); 
$res1 mysql_num_rows($respu1);

if(
$res1 == 0){

$sql1 "insert into contabilizacion (idcont, numdoc, codcuenta, nitcontab, indcucontab, debito, credito, vrbase, detacontab, naturaleza) values ('$idcont', '$numdoc', '$codcuenta', '$nitcontab', '$indcucontab', '$debito', '$credito', '$vrbase', '$detacontab', '$naturaleza')";
$respu1 mysql_query($sql1); 
}



Como lo haria ahora ???? ** teniendo presente que ahora no solo voy a insertar un item sino todos los que vaya agregando ..... hasta N.

Gracias por tu colaboracion;
  #11 (permalink)  
Antiguo 20/09/2005, 11:09
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
ups cometi un error en JS aqui esta arregaldo

function este()
{
elem=document.all?document.all.answers:document.ge tElementById('answers');
if(elem.length){
elem[elem.length-1].focus();
}else{
elem.focus();
}
}

para insertar en la db debes poner el codigo de insercion dentro del ciclo donde recojes los valores en tu caso, el codigo acabas que postear. el como obtener los valores a insertar es con la notacion de array es decir envez de $idcont es $idcont[indice].
  #12 (permalink)  
Antiguo 20/09/2005, 11:26
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
De acuerdo Ok el error ya tuvo solucion...

Oye mil gracias. el error ya esta solucionado... intentare con el segundo caso.

Espero funcione.
  #13 (permalink)  
Antiguo 20/09/2005, 13:03
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta Como agrego nuevos campos

Hola Vaalegk

Oye donde agrego los nuevos campos que deseo en mi formulario dinamico y como los inserto en mi BD. teniendo encuenta que uno de ellos se autoincrementa.

Gracias.

no he podico lograrlo

......
  #14 (permalink)  
Antiguo 21/09/2005, 08:50
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Sonrisa Vaalegk Ayuda ... Help me.

Hola Vaalegk... me puedes ayudar ???

Te lo agradeceria.

  #15 (permalink)  
Antiguo 21/09/2005, 13:07
 
Fecha de Ingreso: agosto-2005
Mensajes: 192
Antigüedad: 18 años, 7 meses
Puntos: 0
Necesito ... ayuda ...

Existe alguien que me pueda colaborar????

Gracias ... mil gracias.

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




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