Foros del Web » Programando para Internet » PHP »

Guardar el Id en una Base de Datos utilizando un Select de PHP

Estas en el tema de Guardar el Id en una Base de Datos utilizando un Select de PHP en el foro de PHP en Foros del Web. Hola, estoy con un proyecto en PHP con MySQL y necesito que al momento de crear registros en una tabla llamada Evaluadores uno de los ...
  #1 (permalink)  
Antiguo 09/11/2012, 14:41
 
Fecha de Ingreso: septiembre-2012
Mensajes: 26
Antigüedad: 11 años, 7 meses
Puntos: 2
Guardar el Id en una Base de Datos utilizando un Select de PHP

Hola, estoy con un proyecto en PHP con MySQL y necesito que al momento de crear registros en una tabla llamada Evaluadores
uno de los datos que pueda insertar sea Seccion y que al usuario le aparezca el contenido de la columna Nombre de esa tabla
en una lista desplegable pero que lo que se guarde en la tabla Evaluadores en realidad sea el IdSeccion y no el Nombre.

Ya estuve trabajando un buen rato con ello y lo unico que consigo es que en la columna de IdSeccion de la tabla Evaluadores
me aparezca un espantoso 0 y no el Id de la sección. Les dejo el código a ver si alguien me puede ayudar.

Este es donde creo el Select al momento que
entro al formulario para agregar
un evaluador, y efectivamente me aparece el contenido de la columna Nombre.

(Este formulario se llama Evaluadores.php)

Código PHP:
<?php
               
require_once ('conectar.php');
               
mysql_select_db($sistemaevaluacion$conex);
               
$sql "select Nombre,IdSeccion from secciones";

               
$query mysql_query($sql$conex) or die(mysql_error());
               
?>
               <select name="SelectSeccion">
               <?php
               
while ($row mysql_fetch_assoc($query))
              {           
              
?>
             <option value="<?php echo $row['IdSeccion']?>"> <?php echo $row['Nombre']?> </option>
              <?php
              

              
?>  
               </select>

Este es el codigo de la pagina desde la que se realizan las acciones sobre la base de datos.


Código PHP:
<?php
             
include ("conectar.php");
             
//Tomar los campos provenientes del Formulario
           
$Seccion $_POST['SelectSeccion'];

             
//Insertar campos en la Base de Datos

           
$resultado mysql_query("SELECT IdSeccion from secciones WHERE Nombre='$Seccion'");

           
$insertar mysql_query("INSERT INTO evaluadores(IdSeccion) VALUES ('{$resultado}')"$conex);

                   if (!
$insertar) {
           die(
"Fallo en la insercion de registro en la Base de Datos: " mysql_error());
           }
           
       
?>  
           <script language="javascript">
           alert("REGISTRO AGREGADO CON EXITO");
           </script>

           <?php
           
include "Evaluadores.php";
             
//Cerrar conexión a la Base de Datos
           
mysql_close($conex);
?>
Pensé que quizá era estrictamente necesario tener las tablas relacionadas
pero pensé que quizá con las clausulas asi como están se puede hacer
la operacion pero no estoy seguro, si alguien me puede orientar bienvenido
sea.

Espero haberlo dejado lo mas claro posible, busco y busco y no encuentro como hacer que me aparezca el Id y no ese 0 !
  #2 (permalink)  
Antiguo 09/11/2012, 15:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Guardar el Id en una Base de Datos utilizando un Select de PHP

mysql_query() jamás devuelve un valor, devuelve un apuntador a los resultados, debes extraer el valor de dichos resultados y usar entonces el valor obtenido.

Curiosamente lo haces bien en el primer script pero olvidaste esa parte en el segundo.

Consulta el manual, no muerde.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/11/2012, 15:57
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Guardar el Id en una Base de Datos utilizando un Select de PHP

Debes de sacar los datos de la consulta, no puedes utilizar la consulta de esa forma
deberias de hacer algo asi:

Código MySQL:
Ver original
  1. $resultado = mysql_query("SELECT IdSeccion from secciones WHERE Nombre='$Seccion'");
  2. $rs=mysql_fetch_array($resultado);
  3.  
  4.  
  5.            $insertar = mysql_query("INSERT INTO evaluadores(IdSeccion) VALUES (". $rs['idSeccion'] .")", $conex);

Espero te sirva
__________________
Lo imposible solo cuesta un poco mas
  #4 (permalink)  
Antiguo 13/11/2012, 10:56
 
Fecha de Ingreso: septiembre-2012
Mensajes: 26
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Guardar el Id en una Base de Datos utilizando un Select de PHP

Hola, gracias a ambos por sus respuestas, no había respondido antes por que
me frustré bastante con esto que parece ser algo muy simple y no me ha
resultado todavía.

Jandrogdz utilicé tu codigo para agregar el registro de IdSeccion y me dió un
error, después quise modificar tu código para poder añadir los demás datos
que componen esa tabla y me resultó un error, creo que no he colocado
correctamente las variables en la consulta.

Código PHP:
<?php
             
include ("conectar.php");
             
//3. Tomar los campos provenientes del Formulario
           
$Nombre $_POST['Nombre'];
           
$Seccion $_POST['SelectSeccion'];
           
$Usuario $_POST['Usuario'];
           
$Clave $_POST['Clave'];
           

        
$resultado mysql_query("SELECT IdSeccion from secciones WHERE Nombre='$Seccion'");
                
$rs=mysql_fetch_array($resultado);
          
               
$insertar mysql_query("INSERT INTO evaluadores(Nombre, IdSeccion, Usuario, Clave) 
               VALUES ('{$Nombre}',"
.$rs['IdSeccion'].",'{$Usuario}','{$Clave}')"$conex);
     
              
           if (!
$insertar) {
           die(
"Fallo en la insercion de registro en la Base de Datos: " mysql_error());
           }           
       
?>

A ver si alguien pudiera ayudarme a ajustarlo para que me tome todos los registros correctamente.
Y bueno, además estuve buscando soluciones en otros sitios y me encontré una solución que traté de adaptar a mi codigo

Código PHP:
<?php
             
include ("conectar.php");
             
//3. Tomar los campos provenientes del Formulario
           
$Nombre $_POST['Nombre'];
           
$Seccion $_POST['SelectSeccion'];
           
$Usuario $_POST['Usuario'];
           
$Clave $_POST['Clave'];             
               
               
$resultado mysql_query("SELECT IdSeccion FROM secciones WHERE Nombre='$Seccion'");
               
$SeccionId mysql_result($resultado,0); 
               
//Se supone que esta última linea hace que no se tome como 0 el valor en la BD

     
               
$insertar mysql_query("INSERT INTO evaluadores(Nombre, IdSeccion, Usuario, Clave) VALUES ('{$Nombre}','{$SeccionId}','{$Usuario}','{$Clave}')"$conex);
           if (!
$insertar) {
           die(
"Fallo en la insercion de registro en la Base de Datos: " mysql_error());
           }           
       
?>
Lo probé y al igual que con otras soluciones que he tratado de darle al problema, me sigue mostrando el 0 en la BD, ayudenme por faaaaaa es importante
  #5 (permalink)  
Antiguo 15/11/2012, 15:31
 
Fecha de Ingreso: septiembre-2012
Mensajes: 26
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Guardar el Id en una Base de Datos utilizando un Select de PHP

Me he dado cuenta de que en esta parte:

Código PHP:
<option value="<?php echo $row['IdSeccion']?>"> <?php echo $row['Nombre']?> </option>
Si en ambas partes pongo IdSeccion asi:


Código PHP:
<option value="<?php echo $row['IdSeccion']?>"> <?php echo $row['IdSeccion']?> </option>
Y en la página que procesa las consultas quito esto:

Código PHP:
$resultado mysql_query("SELECT IdSeccion from secciones WHERE Nombre='$Seccion'");
                
$rs=mysql_fetch_array($resultado); 

Si me inserta el Id correctamente pero yo necesito que me aparezca por Nombre en la lista desplegable si o si, ¿será que está mal esa consulta? ya le di muchas vueltas
y no se que onda :C
  #6 (permalink)  
Antiguo 15/11/2012, 17:04
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Guardar el Id en una Base de Datos utilizando un Select de PHP

bueno men parece ser que esta bien todo a lo mejor puede ser que una coma o algo te este fallando igual te dejo un ejemplo de uno que yo hice

Código PHP:
Ver original
  1. <select name="producto">
  2.                         <?php
  3.                         $sqlProductos = $conexion->query("SELECT * FROM Producto");
  4.                         while($rowProducto = $sqlProductos->fetch_object())
  5.                         {
  6.                         ?>
  7.                             <option value="<?php echo $rowProducto->productoID; ?>"><?php echo $rowProducto->producto; ?></option>
  8.                         <?php
  9.                         }
  10.                         ?>
  11.                          </select>

y donde recibes los datos me parece que esta bien
__________________
Lo imposible solo cuesta un poco mas

Etiquetas: combo, control, mysql, select
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 10:50.