Foros del Web » Programando para Internet » PHP »

filas incrementadas automaticamente y su insercion a mysql

Estas en el tema de filas incrementadas automaticamente y su insercion a mysql en el foro de PHP en Foros del Web. Hola chicos y chicas, tengo un problemita, resulta que tengo una página donde el campo datos no es fija, es decir que se puede ingresar ...

  #1 (permalink)  
Antiguo 22/07/2008, 09:59
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
filas incrementadas automaticamente y su insercion a mysql

Hola chicos y chicas, tengo un problemita, resulta que tengo una página donde el campo datos no es fija, es decir que se puede ingresar 2 datos, en otra tres, en otra cuatro, y asi sucesivamente.
El problema es que cuando vas generando filas automaticamente yo necesito los nombres de los campos para q despues lo inserte en una BD mysql.
Si alguien puede ayudarme por favor.........Gracias a todos.
  #2 (permalink)  
Antiguo 22/07/2008, 10:03
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 14 años, 5 meses
Puntos: 55
Respuesta: filas incrementadas automaticamente y su insercion a mysql

deberas de agregar al primary key un auto_increment para que se sume solo
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 22/07/2008, 10:10
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Ahh les paso a todos el código para generar filas automáticamente pero tengo problemas para rescatar los nombres de los campos generados.
Saludos.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript" type="text/javascript">
var upload_number=1;
function addFileInput() {
var i=0;
var d = document.createElement("div");
var file = document.createElement("input");
file.setAttribute("type", "text");
file.setAttribute("name", "campo1[]");
d.appendChild(file);
var file2 = document.createElement("input");
file2.setAttribute("type", "text");
file2.setAttribute("name", "campo2[]");
d.appendChild(file2);
var file3 = document.createElement("input");
file3.setAttribute("type", "text");
file3.setAttribute("name", "campo3[]");
d.appendChild(file3);
var file4 = document.createElement("input");
file4.setAttribute("type", "text");
file4.setAttribute("name", "campo4[]");
d.appendChild(file4);
var file5 = document.createElement("input");
file5.setAttribute("type", "text");
file5.setAttribute("name", "campo5[]");
d.appendChild(file5);
document.getElementById("moreUploads").appendChild (d);
upload_number++;
}
</script>
<title>Untitled Document</title>
</head>

<body>
<form name="form1" method="get" action="enviar.php">
<input name="campo1[]" type="text" id="campo1[]" />
<input name="campo2[]" type="text" id="campo2[]" />
<input name="campo3[]" type="text" id="campo3[]" />
<input name="campo4[]" type="text" id="campo4[]" />
<input name="campo5[]" type="text" id="campo5[]" />
<input type="button" name="button" id="button" value="Crear otra fila" onclick="addFileInput()"/>
<div id="moreUploads"></div>

<p>
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</p>
</form>
</body>
</html>

Bueno como podran ver mediante un script va generando los nuevos campos para la fila.
Necesito ayuda para insertar en una BD los datos q escribo en los campos generados, como lo hago con php????
  #4 (permalink)  
Antiguo 22/07/2008, 10:20
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

no se si ahora me entiendes pero ese es el problema q tengo
  #5 (permalink)  
Antiguo 22/07/2008, 10:33
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Tienes que meter la query dentro de un for para que lo haga con cada uno de los campos, yo lo tengo hecho para imágenes de la siguiente manera:

Código PHP:
    for($i=0$i<count($_FILES['foto']['name']); $i++) {
    
    
$conn db_connect();
    
$query =
        
"INSERT INTO
            tabla
        VALUES
            ('$id_foto', '$pie_foto')
        "
;
        } 
Adáptalo a lo tuyo y debería funcionarte
  #6 (permalink)  
Antiguo 22/07/2008, 10:35
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Cita:
Iniciado por emiliodeg Ver Mensaje
deberas de agregar al primary key un auto_increment para que se sume solo
Porfa una explicada mas a fondo, te lo agradezco mucho
  #7 (permalink)  
Antiguo 22/07/2008, 10:38
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Cita:
Iniciado por Anastasiaphp Ver Mensaje
Tienes que meter la query dentro de un for para que lo haga con cada uno de los campos, yo lo tengo hecho para imágenes de la siguiente manera:

Código PHP:
    for($i=0$i<count($_FILES['foto']['name']); $i++) {
    
    
$conn db_connect();
    
$query =
        
"INSERT INTO
            tabla
        VALUES
            ('$id_foto', '$pie_foto')
        "
;
        } 
Adáptalo a lo tuyo y debería funcionarte

Lo hare y muchas gracias por tu ayuda
  #8 (permalink)  
Antiguo 22/07/2008, 10:44
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 11
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Hola,
Tienes una redundancia a la hora de nombrar los campos:

Bien:
campo1, campo2 ...
ó
campo[],campo[]...

Mal:
campo1[],campo2[]...

Utilizalo de esta forma:
campo[],campo[]...

Y desde php para leer los campos haz esto:

Código PHP:
foreach($_POST[campo] as $key => $value)
{
$value mysql_real_escape_string($value);  
mysql_query ("INSERT INTO ... SET nombre_del_campo='$value' "); //adaptalo a las condiciones de tu web



Recuerda que para ver por pantalla lo que recibes por POST puedes hacer sencillamente esto:
Cita:
print_r($_POST);
  #9 (permalink)  
Antiguo 22/07/2008, 10:47
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Cita:
Iniciado por Anastasiaphp Ver Mensaje
Tienes que meter la query dentro de un for para que lo haga con cada uno de los campos, yo lo tengo hecho para imágenes de la siguiente manera:

Código PHP:
    for($i=0$i<count($_FILES['foto']['name']); $i++) {
    
    
$conn db_connect();
    
$query =
        
"INSERT INTO
            tabla
        VALUES
            ('$id_foto', '$pie_foto')
        "
;
        } 
Adáptalo a lo tuyo y debería funcionarte
Pero tengo otra duda como hago para insertarlo dentro de esta tabla:

nombre | apellido | direccion | celular | edad
--------------------------------------------------------------------
| | | |

es decir dentro del insert, donde esta el value necesito las variables que contienen los datos
  #10 (permalink)  
Antiguo 22/07/2008, 11:01
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Hola xbx, t cuento q funcionó tu ayuda muchísimas gracias por tu consejo pero una ayudita mas porfa, yo tengo 5 campos en mi tabla, entonces como los inserto en mi BD, porque el código funcionó pero me inserta en los cinco campos una sola palabra despues en otra fila nuevamente en los 5 campos la otra palabra y asi....
Porfa ayudame
  #11 (permalink)  
Antiguo 22/07/2008, 11:13
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

xbx, por favor solo esta ayuda mas.
Te lo agradezco muchísimo
  #12 (permalink)  
Antiguo 22/07/2008, 11:18
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Parece que no debes tener bien hecho el INSERT, ¿puedes postearlo?
  #13 (permalink)  
Antiguo 22/07/2008, 11:36
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

ahi va:

<?php

print_r($_POST);
foreach($_POST['campo'] as $key => $value)
{
$value = mysql_real_escape_string($value);
mysql_query ("INSERT INTO datos SET nombre='$value',apellido='$value',direccion='$valu e',celular='$value',edad='$value' ");
?>
  #14 (permalink)  
Antiguo 22/07/2008, 11:38
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

esque si todos los datos se almacena en $value como puedo ir insertando los datos en sus respectivos campos dentro la tabla???
  #15 (permalink)  
Antiguo 22/07/2008, 11:52
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

bueno mi insert esta mal pero como no logro la manera de corregir el error necesito ayuda, y muchas gracias a los interesados en mi caso.
  #16 (permalink)  
Antiguo 22/07/2008, 11:59
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 11
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Ya tengo la solucion, dejame elaborarla
  #17 (permalink)  
Antiguo 22/07/2008, 12:05
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Mira a ver si con el for funciona:

Código PHP:
for($i=0$i<count($_POST['campo']); $i++) { 
     
        
$query 
        
"INSERT INTO 
            datos 
        VALUES 
            ('$_REQUEST['nombre']', '$_REQUEST['apellido']','$_REQUEST['direccion']','$_REQUEST['celular']','$_REQUEST['edad']') 
        "

        } 
  #18 (permalink)  
Antiguo 22/07/2008, 12:06
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 11
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Perdon, pero ahora veo bien el codigo. Me equivoque, tienes que colocar los nombres de los campos asi:
campos[][campo1]
campos[][campo2]
...

foreach($_POST['campos'] as $key => $value)
{


$apellido = mysql_real_escape_string($value["campo1"]);
.
.
.
$edad= mysql_real_escape_string($value["campo5"]);

mysql_query ("INSERT INTO datos SET nombre='$nombre',apellido='$apellido'............. .. ");

}

Disculpa la demora!!!

Dime si te sireve
  #19 (permalink)  
Antiguo 22/07/2008, 12:06
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: filas incrementadas automaticamente y su insercion a mysql

No, no lo pruebes, no te va a funcionar, porque no va a hacer bien el conteo de $_POST (me refiero a lo mío, no a lo de xbx, que seguro que funciona)
  #20 (permalink)  
Antiguo 22/07/2008, 12:06
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

por favor necesito ayuda con mi insert
  #21 (permalink)  
Antiguo 22/07/2008, 12:27
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 11
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Cual es el problema?
  #22 (permalink)  
Antiguo 22/07/2008, 13:02
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

te cuento q funciona pero sigue con errores, porq en el 1º campo de la primera fila inserta y despues en blanco, en la segunda fila 2º campo inserta y despues todo vacío y asi sucesivamente, es decir que inserta datos en forma diagonal.
  #23 (permalink)  
Antiguo 22/07/2008, 13:15
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 11
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Es cierto

El script queda asi:

Código HTML:
<script language="javascript" type="text/javascript">

var upload_number=1;
function addFileInput() {
var i=0;
var d = document.createElement("div");
var file = document.createElement("input");
file.setAttribute("type", "text");
file.setAttribute("name", "campos["+upload_number+"][campo1]");
d.appendChild(file);
var file2 = document.createElement("input");
file2.setAttribute("type", "text");
file2.setAttribute("name", "campos["+upload_number+"][campo2]");
d.appendChild(file2);
var file3 = document.createElement("input");
file3.setAttribute("type", "text");
file3.setAttribute("name", "campos["+upload_number+"][campo3]");
d.appendChild(file3);
var file4 = document.createElement("input");
file4.setAttribute("type", "text");
file4.setAttribute("name", "campos["+upload_number+"][campo4]");
d.appendChild(file4);
var file5 = document.createElement("input");
file5.setAttribute("type", "text");
file5.setAttribute("name", "campos["+upload_number+"][campo5]");
d.appendChild(file5);
document.getElementById("moreUploads").appendChild (d);
upload_number++;
}

</script> 
Y el formulario queda asi:

Código HTML:
<form name="form1" method="get" action="enviar.php">
  <input name="campos[1][campo1]" type="text" id="campos[1][campo1]" />
  <input name="campos[1][campo2]" type="text" id="campos[1][campo2]" />
  <input name="campos[1][campo3]" type="text" id="campos[1][campo3]" />
  <input name="campos[1][campo4]" type="text" id="campos[1][campo4]" />
  <input name="campos[1][campo5]" type="text" id="campos[1][campo5]" />
  <input type="button" name="button" id="button" value="Crear otra fila" onclick="addFileInput()"/>
<div id="moreUploads"></div>  
  
<p>
  <label>
  <input type="submit" name="Submit" value="Enviar" />
  </label>
</p>
</form> 
Pruebalo! Seguro que funciona
  #24 (permalink)  
Antiguo 22/07/2008, 13:19
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

necesito mas ayuda porfa xbx
  #25 (permalink)  
Antiguo 22/07/2008, 13:26
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 11
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Si, no hay problema!

Haz probado lo que te acabo de pasar?

En qué falla?

Puedes pegar aqui tu codigo?
  #26 (permalink)  
Antiguo 22/07/2008, 13:27
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

ahora me sale error:

Array ( )
Warning: Invalid argument supplied for foreach() in C:\wamp\www\Incremento\enviar.php on line 5
  #27 (permalink)  
Antiguo 22/07/2008, 13:29
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 11
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Muéstranos tu foreach
  #28 (permalink)  
Antiguo 22/07/2008, 13:33
Avatar de javierito10  
Fecha de Ingreso: julio-2008
Ubicación: Potosí - Bolivia
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: filas incrementadas automaticamente y su insercion a mysql

este es enviar.php
<?php //conexion
print_r($_POST);
foreach($_POST['campos'] as $key => $value)
{
$nom = mysql_real_escape_string($value["campo1"]);
$ape = mysql_real_escape_string($value["campo2"]);
$dir = mysql_real_escape_string($value["campo3"]);
$celu = mysql_real_escape_string($value["campo4"]);
$ed = mysql_real_escape_string($value["campo5"]);
mysql_query ("INSERT INTO datos SET nombre='$nom',apellido='$ape',direc='$dir',celular ='$celu',edad='$ed' ");
}
?>

no se, tal vez hay error aqui en el insert
  #29 (permalink)  
Antiguo 22/07/2008, 13:35
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 11
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Ok..
No creo que el error este en el insert.

el print_r($_POST); saca por pantalla todo lo que viene en el POST. Puedes pegar eso aqui?

Entiendes?
  #30 (permalink)  
Antiguo 22/07/2008, 13:38
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 11 años, 9 meses
Puntos: 11
Respuesta: filas incrementadas automaticamente y su insercion a mysql

Ah!! un cambio:

<form name="form1" method="get" action="enviar.php">
<input name="campos[0][campo1]" type="text" id="campos[0][campo1]" />
<input name="campos[0][campo2]" type="text" id="campos[0][campo2]" />
<input name="campos[0][campo3]" type="text" id="campos[0][campo3]" />
<input name="campos[0][campo4]" type="text" id="campos[0][campo4]" />
<input name="campos[0][campo5]" type="text" id="campos[0][campo5]" />
<input type="button" name="button" id="button" value="Crear otra fila" onclick="addFileInput()"/>
<div id="moreUploads"></div>

<p>
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</p>
</form>
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 00:47.