Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Insertar a BD con menú desplegable

Estas en el tema de Insertar a BD con menú desplegable en el foro de PHP en Foros del Web. Hola amigos del web. Tengo un problema al hacer un INSERT a la BD en el que tengo un menú desplegable. Os cuento. He puesto ...
  #1 (permalink)  
Antiguo 01/02/2014, 17:15
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 11 años, 4 meses
Puntos: 1
Insertar a BD con menú desplegable

Hola amigos del web.
Tengo un problema al hacer un INSERT a la BD en el que tengo un menú desplegable. Os cuento.

He puesto un desplegable en un form para insertar una cita en mi BD y en el desplegable aparecen todos los clientes mostrando apellidos, nombre. Al hacer el insert siempre me guarda en la BD el mismo nombre y apellidos. Ademas en la tabla tengo un campo que se llama idNombre donde debo pasar el id del cliente que selecciono en el menú desplegable.

El hecho es que me hace el INSERT pero siempre me inserta el primer cliente, inserta bien los campos pero siempre los datos del primero.

Les paso el código a ver si me pueden echar una mano con esto.
Se que hace tiempo lo hice pero me falla la memoria ahora mismo y no encuentro respuesta.

EL FORM
Código HTML:
Ver original
  1. <form action="<?php echo $row_Desplegable_clientes['']; ?>" method="post" name="form9" id="form9">
  2.   <table align="center">
  3.     <tr valign="baseline">
  4.       <td nowrap="nowrap" align="right">Nombre: </td>
  5.       <td><select name="Clientes" id="Clientes">
  6.         <?php
  7. do {  
  8. ?>
  9. <?php
  10. $apellidos=$row_Desplegable_clientes['txtApellidos'];
  11. $nombre=$row_Desplegable_clientes['txtNombre'];
  12. ?>
  13.         <option value="<?php echo $row_Desplegable_clientes['idCliente']?>"><?php echo $apellidos.", ".$nombre?></option>
  14.         <?php
  15. } while ($row_Desplegable_clientes = mysql_fetch_assoc($Desplegable_clientes));
  16.  $rows = mysql_num_rows($Desplegable_clientes);
  17.  if($rows > 0) {
  18.       mysql_data_seek($Desplegable_clientes, 0);
  19.       $row_Desplegable_clientes = mysql_fetch_assoc($Desplegable_clientes);
  20.   }
  21. ?>
  22.       </select></td>
  23.     </tr>
  24.     <tr valign="baseline">
  25.       <td nowrap="nowrap" align="right">Tratamiento: </td>
  26.       <td><input type="text" name="txtTratamiento" value="" size="32" /></td>
  27.     </tr>
  28.     <tr valign="baseline">
  29.       <td nowrap="nowrap" align="right">Comentario: </td>
  30.       <td><input type="text" name="txtComentario" value="" size="32" /></td>
  31.     </tr>
  32.     <tr valign="baseline">
  33.       <td nowrap="nowrap" align="right">Día: </td>
  34.       <td><input type="text" name="datDia" value="" size="32" /></td>
  35.     </tr>
  36.     <tr valign="baseline">
  37.       <td nowrap="nowrap" align="right">Hora: </td>
  38.       <td><input type="text" name="txtCita" value="" size="32" /></td>
  39.     </tr>
  40.     <tr valign="baseline">
  41.       <td nowrap="nowrap" align="right">&nbsp;</td>
  42.       <td>
  43.       <input type="submit" value="Insertar registro" />
  44.       </td>
  45.     </tr>
  46.   </table>
  47.   <input type="hidden" name="idNombre" value="<?php echo $row_Desplegable_clientes['idCliente']; ?>" />
  48.   <input type="hidden" name="txtNombre" value="<?php echo $row_Desplegable_clientes['txtNombre']; ?>" />
  49.   <input type="hidden" name="txtApellidos" value="<?php echo $row_Desplegable_clientes['txtApellidos']; ?>" />
  50.   <input type="hidden" name="MM_insert" value="form9" />
  51. </form>

EL INSERT
Código PHP:
Ver original
  1. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form9")) {
  2.   $insertSQL = sprintf("INSERT INTO Citas_tbl (idCita, txtNombre, txtApellidos, txtTratamiento, txtComentario, datDia, txtCita, idNombre) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
  3.                        GetSQLValueString($_POST['idCita'], "int"),
  4.                        GetSQLValueString($_POST['txtNombre'], "text"),
  5.                        GetSQLValueString($_POST['txtApellidos'], "text"),
  6.                        GetSQLValueString($_POST['txtTratamiento'], "text"),
  7.                        GetSQLValueString($_POST['txtComentario'], "text"),
  8.                        GetSQLValueString($_POST['datDia'], "date"),
  9.                        GetSQLValueString($_POST['txtCita'], "text"),
  10.                        GetSQLValueString($_POST['idNombre'], "int"));

Yo he estado dándole un montón de vueltas porque el error creo que debe estar en el menú, que estoy mostrando dos campos (apellidos, nombre) y al hacer el INSERT como que no encuentra los campos por separado y lo hace mal.

Aunque si que guarda los apellidos en los apellidos, el nombre en el nombre, y el idCliente en el idNombre .... pero con los valores del primer cliente siempre.

Muchas gracias por adelantado. Estaré conectado por aqui.
  #2 (permalink)  
Antiguo 01/02/2014, 19:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Insertar a BD con menú desplegable

Lo que pasa es que estás tomando la información de los input hidden y no del select; lo que deberías hacer es tomar el valor de $_POST['Clientes'] y consultar la base de datos para extraer nombre y apellidos... lógicamente, esos input hidden no te son de utilidad y es más conveniente quitarlos.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 01/02/2014, 19:56
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Insertar a BD con menú desplegable

Cita:
Iniciado por Triby Ver Mensaje
Lo que pasa es que estás tomando la información de los input hidden y no del select; lo que deberías hacer es tomar el valor de $_POST['Clientes'] y consultar la base de datos para extraer nombre y apellidos... lógicamente, esos input hidden no te son de utilidad y es más conveniente quitarlos.
Lo que pasa es que no sé dónde implementarlo. Es decir, he probado cambiando el INSERT de esta manera:
Código PHP:
Ver original
  1. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form9")) {
  2.   $insertSQL = sprintf("INSERT INTO Citas_tbl (idCita, txtNombre, txtApellidos, txtTratamiento, txtComentario, datDia, txtCita, idNombre) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
  3.                        GetSQLValueString($_POST['idCita'], "int"),
  4.                        GetSQLValueString($_POST['Clientes'], "text"),
  5.                        GetSQLValueString($_POST['Clientes'], "text"),
  6.                        GetSQLValueString($_POST['txtTratamiento'], "text"),
  7.                        GetSQLValueString($_POST['txtComentario'], "text"),
  8.                        GetSQLValueString($_POST['datDia'], "date"),
  9.                        GetSQLValueString($_POST['txtCita'], "text"),
  10.                        GetSQLValueString($_POST['Clientes'], "int"));

Con este INSERT me pone en los tres campos el id del cliente, lo que me soluciona el último campo pues necesito el Id. En los campos nombre y apellidos me guarda tambien el id y no el nombre o los apellidos.

Intenté hacerlo llamando a una función que me devolviese el nombre y los apellidos pero no logro incluirla en el INSERT.

Alguna idea de cómo debo hacerlo??
  #4 (permalink)  
Antiguo 01/02/2014, 20:06
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Insertar a BD con menú desplegable

Cita:
Iniciado por Triby Ver Mensaje
Lo que pasa es que estás tomando la información de los input hidden y no del select; lo que deberías hacer es tomar el valor de $_POST['Clientes'] y consultar la base de datos para extraer nombre y apellidos... lógicamente, esos input hidden no te son de utilidad y es más conveniente quitarlos.
Triby compañero, muchas gracias. Basándome en tu respuesta al fin di con la solución. Creé una consulta nuevo sacando los datos de S_POST["Clientes"] como me dijiste y perfecto. Muchas gracias de nuevo.

Etiquetas: bd, desplegable, mysql, registro, 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 21:19.