Foros del Web » Programando para Internet » PHP »

¿Por que se guarda un 0 en la Base de Datos?

Estas en el tema de ¿Por que se guarda un 0 en la Base de Datos? en el foro de PHP en Foros del Web. Hola, estoy haciendo un proyecto en PHP y manejo la base de datos en MySQL y necesito que al momento de crear registros en una ...
  #1 (permalink)  
Antiguo 14/11/2012, 11:46
 
Fecha de Ingreso: septiembre-2012
Mensajes: 26
Antigüedad: 11 años, 7 meses
Puntos: 2
¿Por que se guarda un 0 en la Base de Datos?

Hola, estoy haciendo un proyecto en PHP y manejo la base de datos en 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 tengo realizada la consulta SELECT para el Nombre y efectivamente en la lista desplegable me aparece el contenido de esa columna, además los otros datos del formulario que se almacenan por medio de un input también se guardan pero lo unico que no se me está almacenando es el Id que quiero guardar, lo que aparece en la BD es un 0 donde debería estar esa Id. Les dejo el codigo que trae las consultas a ver si alguien logra ver algo que yo no haya hecho bien D:

(Este formulario se llama Evaluadores.php)

Código:
<?php
             include ("conectar.php");
//Tomar los campos provenientes del Formulario

           $Nombre = $_POST['Nombre'];
           $Seccion = $_POST['SelectSeccion'];
           $Usuario = $_POST['Usuario'];
           $Clave = $_POST['Clave'];
             
//Insertar campos en la Base de Datos         
             
               
               $resultado = mysql_query("SELECT IdSeccion FROM secciones WHERE Nombre='$Seccion'");
               $SeccionId = mysql_result($resultado);
          
               $insertar = mysql_query("INSERT INTO evaluadores(Nombre, IdSeccion, Usuario, Clave) //Esos son los campos de la tabla evaluadores
               VALUES ('{$Nombre}','{$SeccionId}','{$Usuario}','{$Clave}')", $conex);
     
           if (!$insertar) {
           die("Fallo en la insercion de registro en la Base de Datos: " . mysql_error());
           }           
       ?>
Puede ser que se deba a algún tipo de erorr en las relaciones de la BD o ¿una consulta asi se puede realizar sin que las tablas estén relacionadas?

Cualquier ayuda es bienvenida
  #2 (permalink)  
Antiguo 14/11/2012, 13:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿Por que se guarda un 0 en la Base de Datos?

Cita:
SelectSeccion
es el value del select.

Luego te aconsejo que hagas lo siguiente al construir el select o lista desplegable en el html

<option value="<?php echo $id;?>"><?php echo $nombreSeccion;?></option>

(Cambia $id y $nombreSeccion por la forma que estes usando)

Con esto el usuario verá los nombres de las secciones pero estará mandando el id de estas con lo que te ahorras una query y podras guardar directemente lo que te llega por POST.

A aprte de esta solución que creo que es mejor de cara a reducir lo que le pides al servidor de bbdd. Te esta fallando por que mysql_result requiere un segundo parametro el numero de row a leer (manual) en este caso seria 0.

Código PHP:
Ver original
  1. $SeccionId = mysql_result($resultado,0);
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 14/11/2012 a las 13:33
  #3 (permalink)  
Antiguo 14/11/2012, 14:24
Avatar de llorcasantana  
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: ¿Por que se guarda un 0 en la Base de Datos?

y por que no pones en la tabla que id sea autoincrement ????
  #4 (permalink)  
Antiguo 15/11/2012, 03:34
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: ¿Por que se guarda un 0 en la Base de Datos?

En el problema que plantea, no hace diferencia que el ID de la tabla sea o no autoincremental.
Es un tema de proceso en PHP, no de MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: cero, muestra, 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 19:18.