Foros del Web » Programando para Internet » PHP »

Tema repetido no consigo como resolver Ayuda por favor

Estas en el tema de Tema repetido no consigo como resolver Ayuda por favor en el foro de PHP en Foros del Web. Hola amigos del foro, tengo este código para insertar varios registros a la vez, la idea es insertar minimo un registro y máximo 10, el ...
  #1 (permalink)  
Antiguo 29/04/2009, 14:57
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Tema repetido no consigo como resolver Ayuda por favor

Hola amigos del foro, tengo este código para insertar varios registros a la vez, la idea es insertar minimo un registro y máximo 10, el problema es que si solo mando dos datos de registro, incrusta en la BD los dos datos enviados y los otros 8 los envia vacios.

Cómo hago para que los vacios no los ingrese en la BD???

Acá les coloco el código y de ante mano muchas gracias
Código PHP:
     $imagenes =$_POST['imagen_noticia']; 
     
for (
$i=0$i<count($_POST['imagen_noticia']); $i++) 

     
$titulos =$_POST['titulo']; 
     
for (
$i=0$i<count($_POST['titulo']); $i++) 

$result mysql_query("INSERT INTO imagenes_gal (titulo,imagen) VALUES ('$titulos[$i]','$imagenes[$i]')",$conexion);                       
     
$id=mysql_insert_id(); 
         


  #2 (permalink)  
Antiguo 29/04/2009, 15:02
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Tema repetido no consigo como resolver Ayuda por favor

Si usas un foreach te pasa lo mismo?
Intenta cambiando los for por foreach, ya que me inmagino que envias dos arreglos de noticias y titulos de máximo 10, pero sería bueno ver el codigo donde generas estos, ya que si lo tienes estaticos, el tamaño del arreglo siempre sera 10.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 01/05/2009, 10:29
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Tema repetido no consigo como resolver Ayuda por favor

Gracias The_web_saint por tu respuesta, si me sucede lo mismo de las dos maneras.

Agrego el codigo del formulario que me manda los valores a ver en que me puedes ayudar

Formulario.php
Código PHP:
<form action="enviar.php" method="post" 

<
input type="file" name="imagen_noticia[]" /><br />
<
input type="text" name="titulo[]" /><br />
<
input type="file" name="imagen_noticia[]" /><br />
<
input type="text" name="titulo[]" /><br />
<
input type="file" name="imagen_noticia[]" /><br />
<
input type="text" name="titulo[]" /><br />
<
input type="file" name="imagen_noticia[]" /><br />
<
input type="text" name="titulo[]" /><br />
<
input type="submit" name="Submit" value="Enviar">  
</
form
enviar.php
Código PHP:
     $imagenes =$_POST['imagen_noticia'];  
      
for (
$i=0$i<count($_POST['imagen_noticia']); $i++)  
{  
     
$titulos =$_POST['titulo'];  
      
for (
$i=0$i<count($_POST['titulo']); $i++)  
{  
$result mysql_query("INSERT INTO imagenes_gal (titulo,imagen) VALUES ('$titulos[$i]','$imagenes[$i]')",$conexion);                        
     
$id=mysql_insert_id();  
          
}  

Como comentaba arriba al hacer el insert, si vienen campos vacios igual los ingresa a pesar que la tabla imagenes_gal tiene un id_imagen auto_increment y titulo e imagen son NOT NULL.

Gracias nuevamente por tu ayuda
  #4 (permalink)  
Antiguo 02/05/2009, 05:06
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Tema repetido no consigo como resolver Ayuda por favor

Hola colocolino73 !!!!
Fijate este ejemplo!!! Lo que hace es agregar filas a medida que necesites, o sea vos pedis un minimo de 1 fila y max 10 .. Con este ejemplo podes tener un min de 1 y max depende de la cantidad que agregues !!!!!!!!! Espero te Sirva !!!, Solo le falta la parte donde haces el insert ... Ah este que te mando trabaja sobre la misma pagina, veo que vos mandas los datos a otra pagina !!!

Saludos, Ricardo ...

Código PHP:
<?php
if(isset($_POST['ok'])){

for (
$i=1;$i<=$_POST["var_cont"];$i++)
 {
echo 
"Numero de Fila: " ; echo $i; echo "<br>";
echo 
" Codigo: "; echo $_POST["code_$i"];
echo 
" Nombre: "; echo $_POST["name_$i"];
echo 
" Cantidad: "; echo $_POST["cant_$i"];echo "<br>";

 }

}
?>

<html>
<head>
<title>PRUEBA AGREGAR FILAS</title>
</head>

<body>
<form id="form" name="form" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" onsubmit="asigna()">

<br>

<table border="1" id="tabla" bordercolor="#FFCC33" cellspacing="1">
<tr colspan="13" align="left">
<td align="center"><font color="1166FF" size="3"><b>EJEMPLO !!!</b></font></td>
</tr>
<tr align="center">
<td valign="top"><input type="button" name="b1" value="[+]" onClick="addRowX()">
<input type="button" name="b2" value="[-]" onClick="borrar()"></td>
<td><font color="blue" size="1">COD</font></td>
<td><font color="blue" size="1">NOMBRE</font></td>
<td><font color="blue" size="1">CANTIDAD</font></td>
</tr>

<tr>

<td>&nbsp;</td>
<td><input type="text" size="4" name="code_1" /></td>
<td><input type="text" size="25" name="name_1"/></td>
<td><input type="text" size="8" name="cant_1"/></td>
<input type="hidden" name="var_cont">
</tr>
</table>


<table border="1" id="tabla_f2" bordercolor="#6B238E" align="center">
<tr>
<td><input type="submit" name="ok" id="ok" value="GUARDAR" /></td>
</tr>
</table>

</body>
</html>


<script language='JavaScript'>
var cont=1;
function addRowX()  //Esta la funcion que agrega las filas :
{

cont++;
var indiceFila=1;
myNewRow = document.getElementById('tabla').insertRow(-1);
myNewRow.id=indiceFila;
myNewCell=myNewRow.insertCell(-1);
myNewCell.innerHTML='<td><input type="text" size="4" name="code_'+cont+'" /></td>';
myNewCell=myNewRow.insertCell(-1);
myNewCell.innerHTML='<input type="text" size="25" name="name_'+cont+'"/>';
myNewCell=myNewRow.insertCell(-1);
myNewCell.innerHTML='<input type="text" size="8" name="cant_'+cont+'"/>';
indiceFila++;

}
//////////////Borrar() ///////////
function borrar() {
var table = document.getElementById('tabla');
if(table.rows.length > 3)
    {
    table.deleteRow(table.rows.length -1);
cont--;
    }
}

////////////FUNCION ASIGNA VALOR DE CONT PARA EL FOR DE MOSTRAR DATOS ////////
function asigna()
{
valor=document.form.var_cont.value=cont;
//alert('funcion asigna, valor cont:'+valor)
}
</script>
__________________
Mail: [email protected]
  #5 (permalink)  
Antiguo 03/05/2009, 11:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Tema repetido no consigo como resolver Ayuda por favor

Hola Colote, Gracias por tu respuesta y tu ejemplo, el cual es excelente, el problema que tengo es que visualmente el formulario me cambia completamente... y la idea es hacer el formulario lo mas cómodo al usuario para que aparezcan los 10 input y que el usuario vea que es solo 10 los que puede ingresar máximo.
No importa cuantos coloque al final el usuario (claro manteniendo la idea principal) pero que visualmente se mantenga el aspecto del formulario.

Gracias nuevamente por tu respuesta.
  #6 (permalink)  
Antiguo 04/05/2009, 15:46
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Tema repetido no consigo como resolver Ayuda por favor

Bueno si es asi, deberas validar dentro del ciclo si los valores de los input estan vacios, antes de insertar.

De esta forma si no llena los 10 podras saber cuales insertar y cuales no.
O simplemente incluir en el formulario un arreglo de checkbox, los cuales si estoy seguro q solo se envian los que estan chekeados, asi puedes saber cuales guardar.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
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 14:15.