Foros del Web » Programando para Internet » PHP »

Solución a un problema a la hora de insertar datos en una tabla

Estas en el tema de Solución a un problema a la hora de insertar datos en una tabla en el foro de PHP en Foros del Web. Hola buenas. Estoy con una aplicación tipo a un programa de facturación, datos de cliente por un lado y cuerpo de documento por otro. Lo ...
  #1 (permalink)  
Antiguo 20/02/2011, 09:31
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 1
Solución a un problema a la hora de insertar datos en una tabla

Hola buenas.

Estoy con una aplicación tipo a un programa de facturación, datos de cliente por un lado y cuerpo de documento por otro.

Lo que necesito es guardar los datos en dos tablas diferentes y por el momento eso si que lo hace.

El problema que en el cuerpo del documento no hay un numero concreto de lineas, cada vez se pueden introducir un numero diferente de lineas.

Lo he planteado agregando los datos desde un solo formulario con un While, el problema que tengo ahora es que a la hora de recoger los datos por POST solo me guarda la última linea que he introducido.

Pongo algo de codigo para que lo veais mas claro

Código PHP:
while($contar_n_aplicaciones<=$n_aplicaciones){    //contar el numero de veces que se muestra el formulario
<form.......>
<
input type="text" name="f_ejecucion">
el resto de los input
</form>

Mi pregunta es como puedo recoger todas las variables que envio para poder guardarlas en los diferentes registros dentro de la misma tabla?

Igual estoy planteando el tema mal y es mejor plantearlo de manera diferente.

Alguna idea?

Gracias.
  #2 (permalink)  
Antiguo 20/02/2011, 09:42
 
Fecha de Ingreso: agosto-2009
Mensajes: 216
Antigüedad: 14 años, 8 meses
Puntos: 3
Respuesta: Solución a un problema a la hora de insertar datos en una tabla

Hola, no sé si he entendido bien tu problema. El cuerpo es un texto...no? Por qué no guardas todo el texto directamente en un campo blob en la base de datos??
  #3 (permalink)  
Antiguo 20/02/2011, 10:03
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Solución a un problema a la hora de insertar datos en una tabla

Hola, el cuerpo son varios campos, de texto numericos y de fecha.

Haber si me puedo explicar un poco mejor, es algo parecido a una factura.



Cabecera:
Datos del cliente, Número de factura, nombre, fecha de factura, y algún dato más esos datos los guardo en una tabla y se guardan correctamente

Cuerpo de documento:
linea 1: dos campos de fecha, dos campos de texto y dos campos textarea
linea 2: dos campos de fecha, dos campos de texto y dos campos textarea
linea 3: dos campos de fecha, dos campos de texto y dos campos textarea
linea 4: dos campos de fecha, dos campos de texto y dos campos textarea
linea 5: dos campos de fecha, dos campos de texto y dos campos textarea

Esos datos los guardo en otra tabla con un id autonumerico y otro campo con el número de factura pasa saber a que factura pertenecen.

Pero lo que comentaba anteriormente, solo me guarda en este caso la linea 5.

Gracias por el interes
  #4 (permalink)  
Antiguo 21/02/2011, 05:03
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Solución a un problema a la hora de insertar datos en una tabla

Hola veo que no me he explicado muy bien.

Para que entiendan lo que quiero hacer he creado algo de codigo se lo pongo a continuacion.

pruebanuevo.php
Código PHP:
        <div class="div_cuerpo_contenido">
        
            <!-- recuperación datos de clientes -->
            <div class="div_datos_clientes">
                    
                <!-- formulario para dar de alta clientes -->
                <form name="pruebanuevo" action="./../panel/pruebanuevo.php" method="post">
                    
                    <div class="div_titulos_cliente">
                        Cuantas Veces:
                    </div>
                        
                    <div class="div_datos_cliente">
                        <input name="cuantas" type="text"/>
                      </div>
                    
                    <div class="div_titulos_cliente">
                        Nº Factura:
                    </div>
                        
                    <div class="div_datos_cliente">
                        <input name="nfactura" type="text"/>
                      </div>
                    
                    <div class="div_alta_cliente_boton">
                        <input type="submit" value="Cuantas Veces" />
                    </div>
               </form>
                    
                
                
                
                <?php
                
if(isset($_POST["cuantas"])){
                    
$cuantas=$_POST["cuantas"];
                    
$nfactura=$_POST["nfactura"];
                    
                    echo 
"<p>Lineas cuerpo de documento= $cuantas</p>";
                    echo 
"<p>Número de factura= $nfactura</p>";
                    
                
?>
                
                <!-- formulario para dar de alta clientes -->
                <form name="pruebanuevo" action="./../panel/pruebanuevo2.php" method="post">
                
                    <?php
                        $cuenta
=1;
                        
                        while(
$cuenta<=$cuantas){
                            
                    
?>
                    
                    
                    <div class="div_titulos_cliente">
                        Nombre:
                    </div>
                        
                    <div class="div_datos_cliente">
                        <input name="nombre" type="text"/>
                      </div>
                    
                    <?php
                            $cuenta
++;
                        }
                    
?>

                    
                    <div class="div_alta_cliente_boton">
                        <input type="hidden" name="cuantas" value="<?php echo $cuantas?>" />
                        <input type="hidden" name="nfactura" value="<?php echo $nfactura?>" />
                        <input type="submit" value="Dar de alta" />
                    </div>
                </form>
                
                <?php
                    
}
                 
?>
                
 
            </div>
La página que recoge los datos y los agrega a la base de datos es la siguiente

pruebanuevo2.php
Código PHP:
<?php session_start();

    if (empty (
$_SESSION["validado"])){
        
header ("location:./../index.php");
        
        }else{
            if(
$_SESSION["validado"]==1){
                include_once(
"./../includes/header.php");
                
                
//recoger los datos que llegan por $_POST
                
$cuantas=$_POST["cuantas"];
                
$nfactura=$_POST["nfactura"];
                
$nombre=$_POST["nombre"];
                
                
//agregar numero de veces y nombre de usuario
                
$sql="INSERT INTO prueba (cuantas, nfactura ,nombre) values ('$cuantas', '$nfactura', '$nombre')";
                
$r=mysql_query($sql$link);

                
header("location:./../panel/pruebanuevo.php?error=Correcto");
                
                }else{
                    
header("location:./../panel/pruebanuevo.php?error=fallo");
                    }
        }

?>
El problema es el que comentaba anteriormente que de todos los datos introducidos en el formulario solo me guarda en la BBDD la última linea del formulario.

Ejemplo:

Cuantas lineas: 3
Número de Factura: 389

Linea1: Carlos
Linea2: Juan
Linea3: Manolo

En la BBDD solo me guarda el número de lineas, el número de la factura y la linea3

Alquien me puede decir que estoy planteando mal?

Me imagino que el formulario solo me envia la última linea.

Gracias una vez más.
  #5 (permalink)  
Antiguo 21/02/2011, 05:16
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Solución a un problema a la hora de insertar datos en una tabla

No sé si he entendido muy bien lo que quieres hacer lo siento, pero si quieres ir línea por línea deberías decirle (mediante un while supongo) que vaya guardando los datos linea por lines sino solo te guarda el último valor como es lógico.
  #6 (permalink)  
Antiguo 21/02/2011, 06:05
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Solución a un problema a la hora de insertar datos en una tabla

Hola, gracias por guiarme en el buen camino, ya he solucionado el problema aqui lo dejo para compartirlo con el resto.

He utilizado un While en la página del formulario para hacer una variable dinamica.

Y he utilizado un array para recoger la información de esa variable y guardarla en la BBDD .

pruebanuevo2.php

Código PHP:
<?php session_start();

    if (empty (
$_SESSION["validado"])){
        
header ("location:./../index.php");
        
        }else{
            if(
$_SESSION["validado"]==1){
                include_once(
"./../includes/header.php");
                
                
//recoger los datos que llegan por $_POST
                
$cuantas=$_POST["cuantas"];
                
$nfactura=$_POST["nfactura"];
                
                
$cuenta=1;
                
                echo 
"<p>Lineas cuerpo de documento: $cuantas</p>";
                echo 
"<p>Número de factura: $nfactura</p>";
                
                while(
$cuenta<=$cuantas){
                    
$nombre=array($_POST["nombre$cuenta"]);
                    echo 
$nombreaux=$nombre[0];
                    echo 
"<br />";
                    
$cuenta++;
                    
                    
//agregar numero de veces y nombre de usuario
                    
$sql="INSERT INTO prueba (cuantas, nfactura ,nombre) values ('$cuantas', '$nfactura', '$nombreaux')";
                    
$r=mysql_query($sql$link);
            
                    }
    
                echo 
"Correcto";
                
//header("location:./../panel/pruebanuevo.php?error=Correcto");
                
                
}else{
                    
                    echo 
"Fallo";
                    
//header("location:./../panel/pruebanuevo.php?error=fallo");
                    
}
        }

?>

Muchas gracias una vez más.

Etiquetas: 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 22:22.