Foros del Web » Programando para Internet » PHP »

Tabla dinamica para sacar Cuenta en php??

Estas en el tema de Tabla dinamica para sacar Cuenta en php?? en el foro de PHP en Foros del Web. Hola de nuevo a todo... este ves les molesto para saber si alguien tiene alguna idea, recurso o script ya sea en php o ajax ...
  #1 (permalink)  
Antiguo 14/01/2010, 17:22
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Busqueda Tabla dinamica para sacar Cuenta en php??

Hola de nuevo a todo... este ves les molesto para saber si alguien tiene alguna idea, recurso o script ya sea en php o ajax que me pueda ayudar en lo quiero hacer, requiero un cuadro en donde se puedan agregar y eliminar filas con un menu despegables con años y sacar una cuenta y luego poder ser registrado en una base de datos.

AGREGADO: bueno gracias por su colaboracion pero analizando todo he estado pensado que seria bueno que fueramos por parte:

1. Las tablas a usar: yo voy a usar 2 tablas uno llamado vehículo que es en donde se cargara los datos y cuenta que es donde estar los datos para sacar la cuenta la base de datos se llamara REGISTRO

Código:
CREATE TABLE `vehiculo` (
`id` int(100) unsigned NOT NULL auto_increment,
`patente` varchar(100) default NULL,
`firstname` varchar(100) default NULL,
`cedularif` varchar(100) default NULL,
`tipov` varchar(100) default NULL,
`placa` varchar(10) default NULL,
`observacion` varchar(100) default NULL,
`calculado` varchar(100) default NULL,
`ceducalcu` varchar(100) default NULL,
`revisado` varchar(100) default NULL,
`cedurevisado` varchar(100) default NULL,
`revisado` varchar(100) default NULL,
`anioss` varchar(4) default NULL,
`aniosanu` varchar(100) default NULL,
`subtotal` varchar(4) default NULL,
`tasa` varchar(100) default NULL,
`total` varchar(4) default NULL,
`fecha` date NOT NULL, 
  PRIMARY KEY  (`id`),
  UNIQUE KEY `placa` (`placa`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
los datos en donde se volcara los datos al momento se hacer el registro sera:

Código:
`anioss` varchar(4) default NULL,
`aniosanu` varchar(100) default NULL,
`subtotal` varchar(4) default NULL,
`tasa` varchar(100) default NULL,
`total` varchar(4) default NULL,
* La tabla cuenta estaran los datos que vamos a usar en nuestro formulario dinamico:

Cita:
CREATE TABLE `cuenta` (
`id` int(100) unsigned NOT NULL auto_increment,
`anio` varchar(100) default NULL,
`precio` varchar(100) default NULL,
`fecha` date NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `placa` (`ano`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

El calculo seria asi: el año al seleccionarlo daria el valor de CO2 multiplicado por la variante de 20 que daria el resultado de CO3 para luego sumar con la TASA y daria el total como muestra la imagen.

Cada año tiene un valor diferente ya que ha variado el costo de los impuesto es decir que.

2006= 33,600
2007= 37,632
etc
etc..

Esta tabla tendría tres opciones

1. Tabla dinamica con php, java script o ajax
2. registro en la base de datos
3. calculo


NOTA: imagen referencia que realice para darme a explicar mucho mejor



Gracias por la ayuda que me puedan proporcionar... prometo subir lo script original para que todo lo puedan usar ya que no seria un trabajo de uno sino de varios de lo que estan en este foro..

PRIMER PASO: vamos ha hacer la tabla dinámica para que este pueda agregar y eliminar filas (si alguien puede hacer todo de una vez mejor pero mientras vamos por parte asi vamos aprendiendo)

He conseguido un formulario dinamico en donde puede agregar y quitar filas al parecer esta basado en DHTML claro hay que limpiarlo y enlazarlo a la base de datos, agregarles el menu desplegable y cuando uno seleccione un año el dato aparezca en el otro campo de texto que tiene alado (ya estoy trabajando eso) al al parecer era una factura online, asi que tengo que aplicar tecnología inversa

Código PHP:
<head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Calc</title>
<
script type="text/javascript">
<!--
num=0;
function 
crear(obj) {
num++;
fi document.getElementById('fiel'); // 1
contenedor document.createElement('div'); // 2
contenedor.id 'div'+num// 3

fi.appendChild(contenedor); // 4

ele document.createElement('input'); // 5
ele2 document.createElement('input'); // 5
ele3 document.createElement('input'); // 5
ele4 document.createElement('input'); // 5

ele.type 'text'// 6
ele.name 'item[]'// 6
ele.size 5;
contenedor.appendChild(ele); // 7

ele2.type 'text'// 6
ele2.name 'desc[]'// 6
ele2.size 100;
contenedor.appendChild(ele2); // 7

ele3.type 'text'// 6
ele3.name 'precio[]'// 6
ele3.size 7;
ele3.onkeyup = function(){addHiddenNeto(this.value)}
ele3.onfocus = function(){setHiddenNeto(this.value)}
contenedor.appendChild(ele3); // 7



ele4.type 'button'// 6
ele4.value 'Borrar'// 8
ele4.name 'div'+num// 8
ele4.id num;
ele4.onclick = function () {borrar(this.namethis.parentNode)} // 9
contenedor.appendChild(ele4); // 7
}

function 
borrar(objgetP) {
getP.childNodes[2].value;
if(
== ""){0;}
document.form1.neto.value parseFloat(document.form1.neto.value)-parseFloat(P);
fi document.getElementById('fiel'); // 1
fi.removeChild(document.getElementById(obj)); // 10
setNeto();
}
function 
addHiddenNeto(n){
if(
n==""){n=0;}
document.form1.neto.value document.form1.neto.value-document.form1.hiddenNeto.value;
document.form1.hiddenNeto.value n;
document.form1.neto.value roundNumber(eval(parseFloat(document.form1.neto.value)+parseFloat(document.form1.hiddenNeto.value)),2);
setNeto();
}
function 
setHiddenNeto(n){
if(
n==""){n=0;}
document.form1.hiddenNeto.value n;
setNeto();
}
function 
setNeto(){
if(
document.form1.descuento.value == ""){document.form1.descuento.value 0;}
document.form1.tsi.value roundNumber(parseFloat(document.form1.neto.value)-parseFloat(document.form1.descuento.value),2);
//Se tiene que calcular por 0.19 ya que la matematica para 19% es esa.
document.form1.tci.value roundNumber(parseFloat(document.form1.tsi.value)+(parseFloat(0.19) * parseFloat(document.form1.tsi.value)),2);
}
function 
roundNumber(rnumrlength) { // Arguments: number to round, number of decimal places
return Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
}
-->
</script>
</head>

<body>

<form name="form1" method="POST">
    <input type="hidden" name="hiddenNeto" value="0">
    <table width="960" height="208" border="0" align="center" bgcolor="#FFFFFF">
        <tr>
            <td colspan="9">
            <table width="881" border="0" align="center">
                <tr>
                    <td width="13">&nbsp;</td>
                    <td width="58">
                    <div align="center" class="Estilo4">
                        Item</div>
                    </td>
                    <td width="628">
                    <div align="center" class="Estilo4">
                        Descripción</div>
                    </td>
                    <td width="82">
                    <div align="center" class="Estilo4">
                        Precio</div>
                    </td>
                    <td width="78"><input name="button" type="button" onclick="crear(this)" value="Crear" /></td>
                </tr>
                <tr>
                    <td colspan="5"><fieldset id="fiel">&nbsp;</fieldset></td>
                </tr>
            </table>
            </td>
        </tr>
        <tr>
            <td width="86" rowspan="5">&nbsp;</td>
            <td width="102" rowspan="5">&nbsp;</td>
            <td width="102" rowspan="5">&nbsp;</td>
            <td width="102" rowspan="5">&nbsp;</td>
            <td width="102" rowspan="5">&nbsp;</td>
            <td width="102" rowspan="5">&nbsp;</td>
        </tr>
        <tr>
            <td width="113">
            <div align="right">
                &nbsp;</div>
            </td>
            <td class="Estilo45">Neto</td>
            <td><label>
            <input name="neto" type="text" id="neto" value="0" readonly> </label>
            </td>
        </tr>
        <tr>
            <td width="113">&nbsp;</td>
            <td class="Estilo45">Desc</td>
            <td>
            <input name="descuento" type="text" id="descuento" onkeyup="setNeto()"></td>
        </tr>
        <tr>
            <td width="113" height="24">&nbsp;</td>
            <td class="Estilo45" height="24">TSI</td>
            <td height="24"><input name="tsi" type="text" id="tsi" readonly></td>
        </tr>
        <tr>
            <td width="113" height="30">&nbsp;</td>
            <td class="Estilo45" height="30">TCI</td>
            <td height="30"><input name="tci" type="text" id="tci" readonly></td>
        </tr>
        </table>
</form>
<p>&nbsp; </p>

</body>

</html> 

Última edición por expecimen; 15/01/2010 a las 00:20
  #2 (permalink)  
Antiguo 14/01/2010, 18:01
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Tabla dinamica para sacar Cuenta en php??

hola. primero debes empezar a analizar como debe ser tu aplicacion, empieza a realizar la estructura de tu base de datos y tus tablas. algunos de los usuarios te daran las pautas de como debes hacerlo y todo eso, pero la idea no es que te hagan el trabajo, sino que aprendas investigando e intentes por tu cuenta. eso tenlo por seguro.

como te comente antes, debes analizar como va ser tu sistema, ver los pro y los contras, depurar tu codigo y si tienes algun problema de ello, con gusto te ayudare.

saludos.
  #3 (permalink)  
Antiguo 14/01/2010, 18:59
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Tabla dinamica para sacar Cuenta en php??

Cita:
Iniciado por esaenz22 Ver Mensaje
hola. primero debes empezar a analizar como debe ser tu aplicacion, empieza a realizar la estructura de tu base de datos y tus tablas. algunos de los usuarios te daran las pautas de como debes hacerlo y todo eso, pero la idea no es que te hagan el trabajo, sino que aprendas investigando e intentes por tu cuenta. eso tenlo por seguro.

como te comente antes, debes analizar como va ser tu sistema, ver los pro y los contras, depurar tu codigo y si tienes algun problema de ello, con gusto te ayudare.

saludos.
Ciertamente mi intención NO es que me hagan todo el trabajo, ya que esto es solo una parte de un gran y complejo sistema que he creado en donde hay sistemas de registro, login, generador de numeros de seguridad, modificación y búsqueda en la base de datos y bueno esto que solicito ya seria lo ultimo que necesito ya que quieren ingresar los datos de la cuenta segun el año en la base de datos ya que este tramite se paga anualmente y debe estar reflejada y registrada en la base de datos... solicito ya que nunca he trabajado con tablas dinamicas y al verdad esto ya es lo ultimo que me falta para podedr terminar todo y montarlo en la red y hacer un sistema de consulta... pero tomare en cuenta tu consejo y modificar el post y publicare la tabla de la base de datos
  #4 (permalink)  
Antiguo 14/01/2010, 19:55
Avatar de CdG
CdG
 
Fecha de Ingreso: marzo-2008
Mensajes: 114
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Tabla dinamica para sacar Cuenta en php??

una primera idea podría ser:

Código PHP:
Ver original
  1. <script language="JavaScript">
  2.     function calcularFila(action){
  3.         document.form.action = action;
  4.         document.form.submit();
  5.     }
  6. </script>
  7.  
  8. <form name="form" method="post" >
  9. <table>
  10.     <tr>
  11.         <th>años</th>
  12.         <th>monto anual</th>
  13.         <th>sub-total</th>
  14.     </tr>
  15.     <tr>
  16.         <td id="row1">
  17.             <select onChange="calcularFila('test.php?row=1&C02=valor1&C02=valor2');" name='anio' id='anio'>
  18.                 <option value='2006'>2006</option>
  19.                 <option value='2007'>2007</option>
  20.                 ..
  21.                 ..
  22.             </select>
  23.         </td>
  24.         <td>valor1</td>
  25.         <td>valor2</td>
  26.     </tr>
  27.     ......
  28.     ......
  29.     <tr id="n">
  30.         <td>
  31.             <select onChange="calcularFila('test.php?row=n&C02=valor1&C02=valor2');" name='anio' id='anio'>
  32.                 <option value='2006'>2006</option>
  33.                 <option value='2007'>2007</option>
  34.                 ..
  35.                 ..
  36.             </select>
  37.         </td>
  38.         <td>valor1</td>
  39.         <td>valor2</td>
  40.     </tr>
  41. </table>
  42. </form>

luego en test.php?row=&C02=valor1&C02=valor2 recibes el año con $_POST['anio']
__________________
no quiero ser un árbol y caminar
Jacinto Piedra
  #5 (permalink)  
Antiguo 14/01/2010, 20:21
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: Tabla dinamica para sacar Cuenta en php??

bueno. ya que has colocado tu tabla:

Código MySQL:
Ver original
  1. CREATE TABLE `vehiculo` (
  2. `patente` varchar(100) default NULL,
  3. `firstname` varchar(100) default NULL,
  4. `cedularif` varchar(100) default NULL,
  5. `tipov` varchar(100) default NULL,
  6. `placa` varchar(10) default NULL,
  7. `observacion` varchar(100) default NULL,
  8. `calculado` varchar(100) default NULL,
  9. `ceducalcu` varchar(100) default NULL,
  10. `revisado` varchar(100) default NULL,
  11. `cedurevisado` varchar(100) default NULL,
  12. `codes` varchar(100) default NULL,
  13. `fecha` date NOT NULL,
  14. PRIMARY KEY (`id`),
  15. UNIQUE KEY `placa` (`placa`)

lo primero que deberias hacer es:

1. un formulario con las interfaces para que puedas agregar los datos de tu tabla vehiculo.

2. un archivo procesar para que registre los datos de los vehiculos.

3. como mencionaste que vas a utilizar ajax, te recomiendo que investigues como se utiliza el ajax. pero te dare una idea de como se hace.

Código Javascript:
Ver original
  1. function objetoAjax(){
  2.    
  3.     var xmlhttp=false;
  4.     try {
  5.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  6.     } catch (e) {
  7.         try {
  8.            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  9.         } catch (E) {
  10.             xmlhttp = false;
  11.         }
  12.     }
  13.  
  14.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  15.         xmlhttp = new XMLHttpRequest();
  16.     }
  17.     return xmlhttp;
  18.    
  19. }
  20.  
  21. function agregar(){
  22.    
  23.     //donde se mostrará lo resultados
  24.     divresultado = document.getElementById('lista_vehiculos');
  25.    
  26.     //enviando valores.
  27.     idprod = document.frmcotizador.idproducto.value;
  28.     pu = document.frmcotizador.precio_unitario.value;
  29.     cant = document.frmcotizador.cantidad.value;
  30.  
  31.     ajax=objetoAjax();
  32.  
  33.     ajax.open("POST", "agregar_vehiculos.php",true);
  34.     ajax.onreadystatechange=useHttpResponse;
  35.     //muy importante este encabezado ya que hacemos uso de un formulario
  36.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  37.     //enviando los valores
  38.        ajax.send("idproducto="+idprod+"&precio_unitario="+pu+"&cantidad="+cant);  
  39.  
  40. }
  41.  
  42. function useHttpResponse() {
  43.  
  44.    if (ajax.readyState == 4) {
  45.          if(ajax.status == 200) {
  46.             divresultado.innerHTML=ajax.responseText;
  47.         }
  48.    }else{
  49.         divresultado.innerHTML = '<div align = "center"><br/><br/><br/><img src="./imagenes/loading.gif" border = "0"></div>';
  50.  
  51.    }
  52.  
  53. }

3. debes mostrar en tu sql, los vehiculos que han sido agregados.

Código PHP:
Ver original
  1. $sql_vehiculo = "SELECT * FROM vehiculo";
  2. $rpta_vehiculo = mysql_query($sql_vehiculo) or die(mysql_error());
  3.  
  4. while($row_vehiculo = mysql_fetch_array($rpta_vehiculo)){
  5. //colocas los campos de los vehiculos.
  6. }

la sentencia sql de borrar vehiculos es sencillo. solo le preguntas por el id del vehiculo (en este caso es tu id autoincrementado).

en la pagina de ribosomatic, hay un ejemplo de un mantenimiento de registros utilizando ajax.

saludos.

Etiquetas: dinamica, tablas
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 16:29.