Foros del Web » Programando para Internet » PHP »

tablas dinamicas??

Estas en el tema de tablas dinamicas?? en el foro de PHP en Foros del Web. Saludos. Mi pregunta es la siguiente: Puedo generar una tabla dibamicamente?, me refiero a agregar tags <tr><td></td></tr> a una tabla? Es para hacer un presupuesto. ...
  #1 (permalink)  
Antiguo 21/11/2003, 20:15
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago
Mensajes: 105
Antigüedad: 20 años, 10 meses
Puntos: 1
tablas dinamicas??

Saludos.
Mi pregunta es la siguiente: Puedo generar una tabla dibamicamente?, me refiero a agregar tags <tr><td></td></tr> a una tabla?

Es para hacer un presupuesto. He intentado todo el dia y he llegado a esto:

Código PHP:
<table width="500" border="1">
<tr>
  <td>Cantidad</td><td>Detalle</td><td>P/Unit</td><td>Total</td>
</tr>
<?
function addVal($cant,$prod,$punit){
  
$total $cant $punit;
  echo 
"
  <tr>
    <td>$cant</td><td>$prod</td><td>$punit</td><td>$total</td>
  </tr>
  "
;
}


addVal($HTTP_POST_VARS["cant"],$HTTP_POST_VARS["prod"],$HTTP_POST_VARS["punit"]);

echo 
"</table>"
?>
<form name="imprimeEntrega" method="post" action="<?=$PHP_SELF?>">
  <input name="cant" type="text" id="cant">
  <input name="prod" type="text" id="prod">
  <input name="punit" type="text" id="punit">
  <input type="submit" name="Submit" value="Agregar">
</form>
Mediante el form, mando las variables. A la primera me anda bien, pero como veran a la segunda, los valores me los reemplaza. Ese es exactamente el problema que tengo, no quiero que los reemplace sino que, cree otro salto de tabla con su celda respectiva.

Realmente, estoy tirando la toalla y, me dirigo a uds, como ultima opcion.

Gracias de ante mano.
  #2 (permalink)  
Antiguo 21/11/2003, 22:27
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 20 años, 7 meses
Puntos: 0
El big problem

El problema es que no estas almacenando en ningun lado toda la tabla que tenias antes de agregar entendes.
Una vez que ejecutaste el codigo imprimis valores un html pero cuando queres agregar otro precisas saber donde estaban todos los anteriores.
Dos soluciones
o la tabla la bajas a un archivo o a una base de datos.
  #3 (permalink)  
Antiguo 21/11/2003, 22:34
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 20 años, 7 meses
Puntos: 0
A no para se me ocurrio como manejarlo en memoria
defini una funcion guardar la misma guarda un vector con todas tus otros datos, osea aparte de imprimir la tabla guardas en ese vector y cada ves que ejecutas el codigo pasas ese vector con todos los datos anteriores e impris la tabla desde ese vector osea

1) completo el formulario
2) guardo las variables en mi vector
3) imprimo vector y retorno a 1

acordaste que en el action = ruta.php?vector[]
creo que eso funciona para pasar todo el vector.
Saludos proba con eso por ahi no funca pero bue
  #4 (permalink)  
Antiguo 21/11/2003, 23:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Debes guarda tus datos temporalmente en algún médito tipo sessión o cookie (mejor que andar propagando arrays a todo momento.

Si guardas en tu sessión un array asociativo .. mejor para luego recorrelo e ir llamando a tu actual función addVal() que generas las filas de tu tabla (eso sí ... no se te olvide definir el <table> y cerrar </table> fuera del bucle que vas a usar para leer tu array que propagas en una sessión o cookie.

Los arrays $HTTP_POST_VARS sólo mantienen el valor de sus variables entre 1 a 1 script/llamada no "acomulan" ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 22/11/2003, 12:12
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago
Mensajes: 105
Antigüedad: 20 años, 10 meses
Puntos: 1

Saben que no me resulta.

Creé un array asociativo de esta forma:

Código PHP:
$a[$i]["cant"] = $HTTP_POST_VARS["cant"];
$a[$i]["prod"] = $HTTP_POST_VARS["prod"];
$a[$i]["punit"] = $HTTP_POST_VARS["punit"]; 
El valor de $i lo paso por URL , asi $i la inicializo en 0 la primera vez, y cada vez se va sumando 1 a $i. Corrijanme si estoy equivocado.

Si por el formulario recibo los valores de $HTTP_POST_VARS[], lo que hago cada vez que cargo el formulario es cambiar la posicion en el array determinada por $i, por lo que todos los ingresos deberian quedar correctamente guardados en ese array.

Ahora, como los muestro, asi:

Código PHP:
$x=0;
while (
$x $i){
  
addVal($a[$x]["cant"],$a[$x]["prod"],$a[$x]["punit"]);
  
$x++;

Las etiquetas <table></table> estan creadas antes de ese bucle.

Lo extraño es ke pareciera que la funcion addVal() estuviera mandando valores nulos a la funcion porque en la tabla se crean las filas, pero se agrega una fila y solo me muestra el ultimo ingreso de esta forma:



Asi, se crean filas y van quedando ceros acumulados hacia arriba, como si NO leyera los valores anteriores en el array. ¿ Porque sucedera esto?

Para mas detalle, incluyo el poco codigo que tiene esto:

Código PHP:
<table width="500" border="1">
<tr>
  <td>Cantidad</td><td>Detalle</td><td>P/Unit</td><td>Total</td>
</tr>
<?
if (!isset($_GET["i"])) $i=0;
else 
$i $_GET["i"];

echo 
"i = ".$i."<br>";

if (
$i 10) die ("Ha superado el maximo de entradas para la entrega");

function 
addVal($cant,$prod,$punit){
  
$total $cant $punit;
  echo 
"
  <tr>
    <td>$cant</td><td>$prod</td><td>$punit</td><td>$total</td>
  </tr>
  "
;
}


$a[$i]["cant"] = $HTTP_POST_VARS["cant"];
$a[$i]["prod"] = $HTTP_POST_VARS["prod"];
$a[$i]["punit"] = $HTTP_POST_VARS["punit"];


$x=0;
echo 
"x = ".$x."<br>";

while (
$x <= $i){
  
addVal($a[$x]["cant"],$a[$x]["prod"],$a[$x]["punit"]);
  
$x++;
}

echo 
"x = ".$x."<br>";
?>
</table>
<form name="imprimeEntrega" method="post" action="imprimeEntrega.php?i=<?=$i+1?>">
  <input name="cant" type="text" id="cant">
  <input name="prod" type="text" id="prod">
  <input name="punit" type="text" id="punit">
  <input type="submit" name="Submit" value="Agregar">
</form>
Gracias por las respuestas, espero me puedan seguir ayudando.

Saludos!

Última edición por tonny_bronson; 22/11/2003 a las 12:15
  #6 (permalink)  
Antiguo 22/11/2003, 17:53
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago
Mensajes: 105
Antigüedad: 20 años, 10 meses
Puntos: 1
He revisado el codigo cientos de veces y el problema esta en, que por alguna razon $a pierde los datos anteriores al ingreso que se esta haciendo, es por eso que cuando llamo a la funcion imprime filas nulas.

Porque el arreglo pierde sus valores?
  #7 (permalink)  
Antiguo 22/11/2003, 17:58
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago
Mensajes: 105
Antigüedad: 20 años, 10 meses
Puntos: 1
Como decia Cluster, habia que hacerlo con sessiones o cookies. Lo hice con sessiones y lo logre.

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 04:41.