Foros del Web » Programando para Internet » PHP »

PHP OO Problema Ingresar multi campo de formulario en BD

Estas en el tema de Problema Ingresar multi campo de formulario en BD en el foro de PHP en Foros del Web. Hola y saludos a todos. Estoy haciendo unas practicas en las que genero una agenda telefónica y se me presento un problema les cuento. Tengo ...
  #1 (permalink)  
Antiguo 14/08/2014, 18:53
Avatar de Basteri  
Fecha de Ingreso: noviembre-2008
Mensajes: 30
Antigüedad: 16 años
Puntos: 0
Pregunta Problema Ingresar multi campo de formulario en BD

Hola y saludos a todos.

Estoy haciendo unas practicas en las que genero una agenda telefónica y se me presento un problema les cuento.

Tengo un formulario simple en HTML es el siguiente:

Código HTML:
<form method="post"  action="telefonos_proc.php">
  		<td></td>
		<td> <input type="text" name="nombre" placeholder="Nombre"></td>
        <td id="campos2"> <input type="text" name="tel[]" placeholder="Telefono"><span><a href="javascript:agregartels();">+</a></span></td>
        <td id="campos"><input type="text" name="email[]" placeholder="E-mail"> <span><a href="javascript:agregaremail();">+</a></span></td>

        <td> <input class='boton' type="submit"></td>
  </form> 
Por medio de los botones (+) y (-) y con la ayuda de jQuery agrego o quito campos para email y teléfonos según se requieran.

Al enviar este formulario se ejecuta el siguiente código PHP

Código PHP:
<?php
$contador
=0;
$bd= new SQLite3('agenda.db');
//Esta parte es para comprobar que no existan teléfonos duplicados, funciona bien cuando envió un solo teléfono aun no lo adapto para recibir varios teléfonos y comprobarlos
$resultado=  $bd->query("SELECT * FROM telefonos WHERE telefono='".$_POST['tel']."'");
while(
$fila=$resultado->fetchArray()){
    
$contador++;
    } 
    
$resultado=  $bd->query("SELECT * FROM agencia WHERE nombre='".$_POST['nombre']."'");
while(
$fila=$resultado->fetchArray()){
    
$contador++;
    } 
    
//En caso de que no exista procedo a ingresar los datos en las distintas tablas de la base de datos
if($contador==0){
//Primero ingreso el nombre para que le asigne un id la BD    
    
$resultado=  $bd->query("INSERT INTO agenda VALUES(NULL,'".$_POST['nombre']."')");
//Después consulto el id que se le asigno para relacionarlo con las demás tablas que contienen los teléfonos y los emails
    
$resultado=  $bd->query("SELECT * FROM agenda WHERE nombre='".$_POST['nombre']."'");
    
$fila2=$resultado->fetchArray();
//AQUI es donde esta el PROBLEMA
    
for($i=0;$i<=count($_POST['tel']); $i++){
        
$resultado=  $bd->query("INSERT INTO telefonos VALUES(NULL,'".$fila2['id']."','".$_POST['tel'][$i]."','0','0')");
    }
//AQUI tambien tengo problemas
    
for($i=0;$i<=count($_POST['email']); $i++){
        
$resultado=  $bd->query("INSERT INTO emails VALUES(NULL,'".$fila2['id']."','".$_POST['email'][$i]."')");
    }
 echo
'<script type="text/javascript"> window.location="telefonos.php"</script>';    
    }

else{ 
 echo
'El <strong>Nombre</strong> o el <strong>Telefono</strong> ya existen en la base de datos <br><br><a href=telefonos.php><button>Regresar</button></a>';
 }
?>
Bueno el problema surgió al meter los ciclos for para que recorrieran todos los emails o teléfonos que se envían. Me da las siguientes notificaciones.

Notice: Array to string conversion in C:\xampp\htdocs\php\telefonos_proc.php on line 4

Notice: Undefined offset: 1 in C:\xampp\htdocs\php\telefonos_proc.php on line 21

Notice: Undefined offset: 1 in C:\xampp\htdocs\php\telefonos_proc.php on line 24

***Entiendo que el primer error lo da porque la parte que comprueba el nombre no esta preparada para recibir un array
  • El resultado en la base de datos es el siguiente:
  • El nombre se agrega correcto
  • El teléfono (independientemente de si agrego uno o varios) se guarda solo el primero y agrega uno mas en blanco
  • El mail (independientemente de si agrego uno o varios) se guarda solo el primero y agrega uno mas en blanco

Me pueden tirar un cable de que es lo que estoy haciendo mal. muchas gracias de antemano y bonito día.
  #2 (permalink)  
Antiguo 16/08/2014, 14:40
Avatar de Basteri  
Fecha de Ingreso: noviembre-2008
Mensajes: 30
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema Ingresar multi campo de formulario en BD

Alguna ayuda?
  #3 (permalink)  
Antiguo 17/08/2014, 12:53
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 8 meses
Puntos: 1146
Respuesta: Problema Ingresar multi campo de formulario en BD

Prueba utilizar serialize antes de guardar los datos.
  #4 (permalink)  
Antiguo 18/08/2014, 14:08
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Problema Ingresar multi campo de formulario en BD

Quizas te interese revisar esta agenda hecha con sqlite completamente funcional. (aunque bastante fea por carencia de css, solo tiene lo basico e indispensable para funcionar.

La acabo de publicar alli porque es mas facil de mantenerla actualizada.

Si te agrada y quieres hacerle un css para que se vea mejor, estaria bueno que lo compartas para que otras personas puedan verlo.

Saludos.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Etiquetas: bd, campo, formulario, html, multi, select, sql, tabla
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 08:48.