Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problemas con INSERT

Estas en el tema de Problemas con INSERT en el foro de Bases de Datos General en Foros del Web. Buenos dias, estoy intentando dar de alta un medico en una aplicación que estoy creando, y estoy cogiendo datos en el formulario de distintas tablas, ...
  #1 (permalink)  
Antiguo 30/05/2011, 04:48
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 8 meses
Puntos: 0
Problemas con INSERT

Buenos dias, estoy intentando dar de alta un medico en una aplicación que estoy creando, y estoy cogiendo datos en el formulario de distintas tablas, por ejemplo:
Código:
<td colspan="4"><strong>Provincia: </strong></td>
     		
 <td><label>
  <select name="provincia" id="provincia">
 <?php
 $consulta="SELECT * FROM provincias";
 $resultado=mysql_query($consulta);
 while($row=mysql_fetch_array($resultado)){
echo "<option value='".$row['provincia']."'>".$row['provincia']."</option>";
      	 }
       ?>
   </select>
</label></td>
Y ahora tendria para insertar los datos, que me dice medico insertado correcto pero no lo inserta, me da un error del tipo:

"You have an error in your SQL syntax; check the manual for the ryght syntax to use near 'id_laboral, id_entidad, id_estudio, observaciones, id_tipo VALUES' at line 4. UNknown column personas.2 in 'field list' ".
Código:
if((strlen($dni)!=8)and(strlen($t_fijo)!=9)and(strlen($t_movil)!=9)and(strlen($nass)!=12) and ($colegiado==null)and (strlen($colegiado)!=5)){?>
  			<script language="JavaScript">
				alert("La longitud del DNI debe ser de 8 caracteres,los teléfonos deben tener 9,el NASS 12 y el número de colegiado no puede ser nulo(5 caracteres).");
			</script>
  		<?php }
  		else{ //INSERTAMOS LOS DATOS EN LA TABLA SI TODO ESTA CORRECTO
  			//CON UPPER PASAMOS TODO A MAYUSCULAS
  		
  			$sql="INSERT INTO personas (nombre, apellido1, apellido2, dni, letra, id_nacionalidad,sexo,
  			calle, numpiso, escalera, cp, id_municipio,
  			codprov, t_fijo, t_movil,t_trabajo, email, id_estudio
  			id_laboral, id_entidad, id_estudio,observaciones, id_tipo 
  		 	VALUES 
  			(upper('$nombre'),upper('$apel1'),upper('$apel2'),upper('$dni'),'$letra',$rownac('id_nacionalidad'),upper('$sexo'),
  			upper('$calle'),'$numcalle','$piso',upper('$escalera'),'$cpostal',upper('$municipio'),
  			upper('$provincia'),'$t_fijo','$t_movil',$t_trabajo, '$email', '$id_estudio',
  			$rowsi('id_situacion'),$rowen('id_entidad')',$rowes('id_estudio'),upper('$observaciones'),'1')";
  			$resultado=mysql_query($sql);
  			echo mysql_error();
  			$sql2="INSERT INTO medicos (num_colegiado, id_persona, id_especialidad)
  			VALUES 
  			('$colegiado',personas.$id_persona,'$rowesp(especialidad)' )";
  			$resultadomedico=mysql_query($sql2);
  			echo mysql_error();
  		 		
  		
  		?>
Gracias!
  #2 (permalink)  
Antiguo 30/05/2011, 05:37
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Problemas con INSERT

Te falta un paréntesis que se cierra antes de VALUES
  #3 (permalink)  
Antiguo 30/05/2011, 05:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problemas con INSERT

Mira bien esto:
Código MySQL:
Ver original
  1. INSERT INTO medicos (num_colegiado, id_persona, id_especialidad)
  2. ('$colegiado', personas.$id_persona, '$rowesp(especialidad)' )
¿Ves ese "personas.$id_persona"? Bueno esto hace que cuando la consulta queda creada queda algo como "personas.2".
¿Por qué incluiste ese "personas."?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 30/05/2011, 05:46
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Problemas con INSERT

He cambiado ambas cosas, y aun asi, me sigue dando un error:
column count doesn't match value count at row 1
Código:
$sql="INSERT INTO personas (nombre, apellido1, apellido2, dni, letra, id_nacionalidad,sexo,
 calle, numpiso, escalera, cp, id_municipio,
 codprov, t_fijo, t_movil,t_trabajo, email,
id_laboral, id_entidad, id_estudio,id_tipo) 
 VALUES 
(upper('$nombr'),upper('$apel1'),upper('$apel2'),'$dnim',upper('$letram'),$rownac('id_nacionalidad'),upper('$sexom'),
  			upper('$calle'),'$numcalle','$piso',upper('$escalera'),'$cpostal','$municipiom',
  			'$codpprov','$t_fijom','$t_movilm','$t_trabajom', '$emailm', 
  			$rowsi('id_situacion'),$rowen('id_entidad'),$rowes('id_estudio'),'1')";
  			$resultado=mysql_query($sql);
  			echo mysql_error();
  			$sql2="INSERT INTO medicos (num_colegiado, id_persona, id_especialidad)
  			VALUES 
  			('$colegiado','$id_persona','$rowesp(especialidad)' )";
  			$resultadomedico=mysql_query($sql2);
  			echo mysql_error();
  #5 (permalink)  
Antiguo 30/05/2011, 05:48
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Problemas con INSERT

Es que lo que quiero que introduzca es el id_persona que ha generado al dar de alta en la tabla personas, por eso puse personas.
Ahora se supone que no me coinciden el numero de valores de la tabla y los valores que quiero insertar, voy a intentar solucionarlo
  #6 (permalink)  
Antiguo 30/05/2011, 06:00
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Problemas con INSERT

Ya me da de alta, ahora tengo problemas a la hora de recoger datos de las consutlas de otras tablas, no me las almacena, ni haciedno $rowesp(especialidad) ni simplemente '$especialidad' ya que dde esta ultima forma solo me coge los datos de entrada a la aplicacion. ¿Que es lo que tengo que poner exactamente?
  #7 (permalink)  
Antiguo 30/05/2011, 06:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problemas con INSERT

Tengo la impresión de que estás haciendo un "batido" de cosas entre el PHP y el SQL. Sería mejor que tomaras un tutorial más detallado, como los que tienen las FAQs de PHP y veas cómo sugieren implementarlo desde allí.
Además es mejor que tengas una visión más clara del SQL y de su interacción con la librería de PHP.
Como sea, algunos tips:
- La cantidad de columnas del VALUE debe ser la misma indicada en la invocación de la tabla en el INSERT.
- Si no se indican las columnas en la invocación de la tabla, hay que poner un valor por cada columna que la tabla tenga.
- Si realizas un INSERT a una tabla que genera un ID autoincremental, y ese valor necesitas ponerlo en otra tabla, debes primero recuperar el valor generado. Esto lo puedes hacer son un SELECT o bien en PHP con la función mysql_insert_id().
- Si las tablas tienen una dependencia definida por claves foráneas, las tablas referenciadas (de donde se evalúan las FK) deben ser llenadas primero.
- Si realizaste un INSERT, la forma de saber si tuvo éxito desde el PHP, el result de la ejecución debe ser TRUE.
- Un INSERT no se puede leer simplemente leyendo un registro cualquiera. Debes realizar una consulta específica (no se entiende a qué te refieres con ese "$rowesp(especialidad)").
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 31/05/2011, 01:12
 
Fecha de Ingreso: septiembre-2007
Mensajes: 101
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Problemas con INSERT

Ahora me almacena las cosas correctamente, a excepción de aquellos id que hay que cogerlos de otras tablas y consutlas que se han realizado, aver si me explico...
tengo el formulario, por ejemplo de uno de ellos...la consulta del dato para mostrar en el fromulario es :

Código:
<select name="nacionalidadm" id="nacionalidadm">
<?php
$consultanac="SELECT * FROM nacionalidad";
$resultadonac=mysql_query($consultanac);
while($rownac=mysql_fetch_array($resultadonac)){
    echo <option value='".$rownac['nacionalidad']."'>".$rownac['nacionalidad']."</option>
}

?>
</select>
Como este, tengo 5 datos más de esta forma, y a la hora de insertarlo en la tabla quiero coger el id_nacionalidad, pero no me guarda los datos de manera correcta, no se como tengo que hacerlo, dentro de la tabla nacionalidad tengo los datos
  • Id_nacionalidad
  • Nacionalidad

Código:
$sql="INSERT INTO personas (nombre, apellido1, apellido2, dni, letra, id_nacionalidad,sexo,
 calle, numpiso, escalera, cp, id_municipio,
 codprov, t_fijo, t_movil,t_trabajo, email,
(MAS DATOS) VALUES 
(upper('$nombr'),upper('$apel1'),upper('$apel2'),'$dnim',upper('$letram'),$nacionalidadm,upper('$sexom'),
  			upper('$calle'),'$numcalle','$piso',upper('$escalera'),'$cpostal','$municipiom',
  			'$codpprov','$t_fijom','$t_movilm','$t_trabajom', '$emailm', 
  			(MAS DATOS);
  			$resultado=mysql_query($sql);
  			echo mysql_error();
  			$sql2="INSERT INTO medicos (num_colegiado, id_persona, id_especialidad)
  			VALUES 
  			('$colegiado','$id_persona','$rowesp(especialidad)' )";
  			$resultadomedico=mysql_query($sql2);
  			echo mysql_error();

Etiquetas: dostablas, insert, sql, bases-de-datos
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 07:49.