Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/08/2014, 18:53
Avatar de Basteri
Basteri
 
Fecha de Ingreso: noviembre-2008
Mensajes: 30
Antigüedad: 15 años, 6 meses
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.