Foros del Web » Programando para Internet » PHP »

Problema con un insert

Estas en el tema de Problema con un insert en el foro de PHP en Foros del Web. Buenas, quisiera saber si alguien podría ayudarme con un insert... Lo que pasa es que tengo un formulario para insertar varios datos al mismo tiempo ...
  #1 (permalink)  
Antiguo 03/12/2011, 07:50
Avatar de JoSe__MiGuEl__  
Fecha de Ingreso: octubre-2011
Ubicación: Colombia
Mensajes: 51
Antigüedad: 12 años, 6 meses
Puntos: 0
Información Problema con un insert

Buenas, quisiera saber si alguien podría ayudarme con un insert... Lo que pasa es que tengo un formulario para insertar varios datos al mismo tiempo mediante un for; esto me lo hace bien porque recorro las posiciones de los input, pero cuando intento insertar un input que solo esta una vez en el formulario este lo que hace primero es insertarse pero con los demás campos vacíos y ya en la siguiente fila se inserta normalmente este es mi código:
Código PHP:
<?php
include('conexion.php');

    
$tabla $_POST['vereda'];

for(
$x=0;$x<=10;$x++){

        
$ficha $_POST['ficha'];
        
$direc $_POST['direc'];

    if(isset(
$_POST["doc".$x])){
    
        
$apells $_POST['apells'.$x];
        
$noms $_POST['noms'.$x];
        
$tipdc $_POST['tipdc'.$x];
        
$doc $_POST['doc'.$x];
        
$fech $_POST['fech'.$x];
        
$edad $_POST['edad'.$x];
        
$parent $_POST['parent'.$x];
        
$estado $_POST['estado'.$x];
        
$discap $_POST['discap'.$x];
        
$afilia $_POST['afilia'.$x];
        
$enti $_POST['enti'.$x];
        
$esque $_POST['esque'.$x];
        
$stud $_POST['stud'.$x];
        
$nivel $_POST['nivel'.$x];
        
$salud $_POST['salud'.$x];
        
$deport $_POST['deport'.$x];
        
$program $_POST['program'.$x];
        
$cultura $_POST['cultura'.$x];
        
$sisbn $_POST['sisbn'.$x];
        

        
    
            
// Con esta sentencia SQL insertaremos los datos en la base de datos
            
mysql_query("INSERT INTO $tabla (nro_ficha, direc, apellidos, nombre, tipo_doc, num_doc, fech_nac, edad, parent, stad_civ, discap, afil_salud, enti_afil_salud, esq_vac, estudia, lv_scolar, prog_salud, prac_deport, benef_sociales, prog_cult, encues_sisbn) values ('$ficha', '$direc', '$apells', '$noms', '$tipdc', '$doc', '$fech', '$edad', '$parent', '$estado', '$discap', '$afilia', '$enti', '$esque', '$stud', '$nivel', '$salud', '$deport', '$program', '$cultura', '$sisbn')",$conexion);

            
$my_error mysql_error($conexion);

            if(!empty(
$my_error)) {

                echo 
"<center><font face='arial'><h3> Ha habido un error al insertar los valores. $my_error <br><br></h3>"

            } else {

            echo 
"<center><font face='arial'><h3>Los datos han sido introducidos satisfactoriamente <br><br></h3>";
            
header ("location: form_datos.html");
            }
        
    }
}
Agradezco mucho la ayuda que me puedan brindar.
__________________
\m/_ JoSe _\m/
  #2 (permalink)  
Antiguo 03/12/2011, 11:57
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Problema con un insert

que es esto? $_POST["doc".$x].
poné el formulario para verlo
__________________
la la la
  #3 (permalink)  
Antiguo 03/12/2011, 12:05
Avatar de JoSe__MiGuEl__  
Fecha de Ingreso: octubre-2011
Ubicación: Colombia
Mensajes: 51
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema con un insert

truman_truman te posteo el código de forma resumida ya que es muy extenso ya que con este puedo insertar 10 registros a la misma vez...
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>RECOLECCIÓN DE INFORMACION SECRETARIA DE BINESTAR SOCIAL</title>
<script language='javascript' src="calendario/popcalendar.js"></script> 
<link rel="stylesheet" href="style/style.css" type="text/css"></link>
</head>

<body>
<h1 align="center">RECOLECCIÓN DE INFORMACION SECRETARIA DE BINESTAR SOCIAL</h1>
<form id="form1" name="form1" method="post" action="insert.php">
<p>&nbsp;</p>

<table width="1347" border="1">
  <tr>
    <th width="187" scope="col">Numero de Ficha</th>
    <th width="224" scope="col">Dirección</th>
    <th width="224" scope="col">Vereda</th>
  </tr>
  <tr>
    <th scope="col"><input name="ficha" type="text" id="ficha" /></th>
    <th scope="col"><input name="direc" type="text"  id="direc" /></th>
    <th scope="col"><select name="vereda" id="vereda">
        <option selected="selected"></option>
        <option value="canaan">Canaán</option>
        <option value="cascabel">Cascabel</option>
        <option value="chaguani">Chaguaní</option>
        <option value="cedron">El Cedrón</option>
        <option value="plan">El Plan</option>
        <option value="arboleda">La Arboleda</option>
        <option value="dolores">La Dolores</option>
        <option value="germania">La Germania</option>
        <option value="herradura">La Herradura</option>
        <option value="linda">La Linda</option>
        <option value="morron">Morrón</option>
        <option value="mulatico">Mulatico</option>
        <option value="mulato">Mulato</option>
        <option value="ptbonito">Patio Bonito</option>
        <option value="snfransisco">San Francisco</option>
        <option value="tacamocho">Tacamocho</option>
      </select></th>
  </tr>
</table>

<p>&nbsp;</p>

<table width="100%" height="90%" border="1" align="center">
  <tr>
    <th width="62" height="60" scope="col">Apellidos</th>
    <th width="61" scope="col">Nombres</th>
    <th width="126" scope="col">Tipo de documento</th>
    <th width="72" scope="col">Nro del documento</th>
    <th width="72" scope="col">Fecha de nacimiento</th>
    <th width="34" scope="col">Edad</th>
    <th width="74" scope="col">Parentesco</th>
    <th width="50" scope="col">Estado civil</th>
    <th width="89" scope="col">Discapacidad</th>
    <th width="67" scope="col">Afiliación a salud</th>
    <th width="60" scope="col">Entidad de afiliación</th>
    <th width="74" scope="col">Esquema vacunación</th>
    <th width="50" scope="col">Estudia</th>
    <th width="76" scope="col">Nivel escolaridad</th>
    <th width="80" scope="col">Programa en salud</th>
    <th width="58" scope="col">Practica algún deporte</th>
    <th width="81" scope="col">Beneficiario programas sociales</th>
    <th width="76" scope="col">Programas Casa de la cultura</th>
    <th width="77" scope="col">Encuestado en el sisben</th>
    </tr>
  <tr>
    <th height="26" scope="col"><input name="apells1" type="text" id="apells1" size="12" /></th>
    <th scope="col"><input name="noms1" type="text" id="noms1" size="12" /></th>
    <th width="7" nowrap="nowrap" scope="col"><select name="tipdc1" id="tipdc1" style="width:81%">
        <option selected="selected"> </option>
        <option>No tiene</option>
        <option>Cédula de Ciudadanía</option>
        <option>Tarjeta de Identidad</option>
        <option>Cédula de Extranjería</option>
        <option>Registro Civil</option>
        </select></th>
    <th scope="col"><input name="doc1" type="text" id="doc1" size="9" /></th>
    <th scope="col"><input name="fech1" type="text" id="fech1" size="9" onClick="popUpCalendar(this, form1.fech1, 'yyyy-mm-dd');" /></th>
    <th scope="col"><input name="edad1" type="text" id="edad1" size="9" /></th>
    <th scope="col"><select name="parent1" id="parent1" style="width:81%">
        <option selected="selected"> </option>
        <option>Jefe</option>
        <option>Madre cabeza de hogar</option>
        <option>Cónyuge</option>
        <option>Hijos</option>
        <option>Nietos</option>
        <option>Padres</option>
        <option>Hermanos</option>
        <option>Yerno o Nuera</option>
        <option>Abuelos</option>
        <option>Suegros</option>
        <option>Tios</option>
        <option>Sobrinos</option>
        <option>Primos</option>
        <option>Cuñados</option>
        <option>Otros parientes</option>
        <option>No parientes</option>
        <option>Servicio domestico</option>
        </select></th>
    <th scope="col"><select name="estado1" id="estado1">
        <option selected="selected"> </option>
        <option>Unión libre</option>
        <option>Casado</option>
        <option>Viudo</option>
        <option>Separado</option>
        <option>Divorciado</option>
        <option>Soltero</option>
        </select></th>
    <th scope="col"><select name="discap1" id="discap1">
   	  <option selected="selected"> </option>
      <option>Si</option>
      <option>No</option>
      </select></th>
    <th scope="col"><select name="afilia1" id="afilia1" style="width:81%">
        <option selected="selected"> </option>
        <option>No tiene</option>
        <option>Régimen subsidiado</option>
        <option>Régimen especial</option>
        <option>Régimen contributivo</option>
        <option>Municipio</option>
        </select></th>
    <th scope="col"><select name="enti1" id="enti1" style="width:81%">
        <option selected="selected"> </option>
        <option>No tiene</option>
        <option>EPS-S</option>
        <option>Comfenalco</option>
        <option>SALUDCOOP EPS</option>
        <option>CAFESALUD EPS</option>
        <option>NUEVA EPS</option>
        <option>FMP</option>
        <option>Otros</option>
        </select></th>
    <th scope="col"><select name="esque1" id="esque1" style="width:81%">
        <option selected="selected"> </option>
        <option>Si</option>
        <option>No</option>
        </select></th>
    <th scope="col"><select name="stud1" id="stud1" style="width:81%">
        <option selected="selected"> </option>
        <option>Si</option>
        <option>No</option>
        </select></th>
    <th scope="col"><select name="nivel1" id="nivel1" style="width:81%">
        <option selected="selected"> </option>
        <option>Ninguno</option>
        <option>Primaria incompleta</option>
        <option>Primaria completa</option>
        <option>Bachillerato incompleto</option>
        <option>Bachillerato completo</option>
        <option>Técnica</option>
        <option>Tecnología</option>
        <option>Profesional</option>
        <option>Otros</option>
        </select></th>
    <th scope="col"><select name="salud1" id="salud1" style="width:81%">
        <option selected="selected"> </option>
        <option>No tiene</option>
        <option>Control de crecimiento</option>
        <option>Vacunación</option>
        <option>Planificación familiar</option>
        <option>Hipertensión</option>
        <option>Citologias</option>
        </select></th>
    <th scope="col"><select name="deport1" id="deport1" style="width:81%">
        <option selected="selected"> </option>
        <option>Ninguno</option>
        <option>Fútbol</option>
        <option>Baloncesto</option>
        <option>Voleibol</option>
        <option>Micro fútbol</option>
        <option>Otro</option>
        </select></th>
    <th scope="col"><select name="program1" id="program1" style="width:81%">
        <option selected="selected"> </option>
        <option>Ninguno</option>
        <option>Mana</option>
        <option>Adultos mayores</option>
        <option>Familias en acción</option>
        <option>Hogares comunitarios</option>
        <option>CORED</option>
        <option>RNA</option>
        <option>Restaurante escolar</option>
        </select></th>
    <th scope="col"><select name="cultura1" id="cultura1" style="width:81%">
        <option selected="selected"> </option>
        <option>No</option>
        <option>Danzas</option>
        <option>Música</option>
        <option>Artes plásticas</option>
        <option>Artes aplicadas</option>
        <option>Sistemas</option>
        <option>Biblioteca</option>
        </select></th>
    <th scope="col"><select name="sisbn1" id="sisbn1" style="width:81%">
        <option selected="selected"> </option>
        <option>Si</option>
        <option>No</option>
        </select></th>
    </tr>
</table>
<p>&nbsp;</p>
<input type="submit" value="Enviar"></input>
</form>
</body>
</html> 
Bueno la cosa con esto es que la parte de el numero de ficha y la dirección se insertan en la bd con los de mas campos pero vacíos, y en la fila de abajo con todos los campos insertado; y eso es lo que quiero evitar que haga.
__________________
\m/_ JoSe _\m/
  #4 (permalink)  
Antiguo 03/12/2011, 13:32
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Problema con un insert

Bueno, entiendo lo que querés hacer, pero hay otra forma más resumida de hacerlo
los inpute no deben llamarse así:

name="apells1"

sino así:

name="apells[]"

esto digamos que los convierte en un array, entonces para recuperar sus valores
lo haces así:

dentro del for
$_POST[apells][$x]
así con todos los campos
cada vez que $x se incremente estarás recogiendo los valores de las "filas" del formulario
__________________
la la la
  #5 (permalink)  
Antiguo 03/12/2011, 20:10
Avatar de JoSe__MiGuEl__  
Fecha de Ingreso: octubre-2011
Ubicación: Colombia
Mensajes: 51
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema con un insert

truman_truman pero aun así en la forma que me dices, me sigue insertando así

1 Jamaica (todo lo de mas vació)
1 Jamaica adad sfsf Tarjeta de Identidad (aparir de esta fila todo se inserta bien)

Lo que yo busco hacer es que el numero de la ficha y la dirección se inserten determinando el numero de las otras filas que se insertan conjuntamente, no se si me entiendas.
__________________
\m/_ JoSe _\m/
  #6 (permalink)  
Antiguo 04/12/2011, 00:32
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con un insert

El problema no es tanto la forma en que asignas los nombres a los campos, no es lo correcto/recomendable/óptimo, pero funciona, el problema es que estás comparando si existe $_POST['doc' .$x], siendo campo de texto, siempre va a estar definido, entonces, necesitas verificar si tiene algún contenido; empty() te servirá:

Código PHP:
Ver original
  1. if( ! empty($_POST['doc' . $x])) {
  2.      // Aquí realizas el proceso para insertar
  3. }
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 04/12/2011, 17:12
Avatar de JoSe__MiGuEl__  
Fecha de Ingreso: octubre-2011
Ubicación: Colombia
Mensajes: 51
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema con un insert

Triby muchísimas gracias con tu aporte logre resolverlo como quería que quedara la verdad es que no me acordaba de que se podía utilizar el empty... De nuevo muchísimas gracias.
__________________
\m/_ JoSe _\m/

Etiquetas: insert, php+mysql
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 23:09.