Foros del Web » Programando para Internet » PHP »

crear condición para validar un estado

Estas en el tema de crear condición para validar un estado en el foro de PHP en Foros del Web. Saludos amigos de la comunidad tengo una duda como puedo crear una condición que los usuarios que tengan el estado ¡por asistir! no se puedan ...
  #1 (permalink)  
Antiguo 15/03/2017, 13:09
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
crear condición para validar un estado

Saludos amigos de la comunidad tengo una duda como puedo crear una condición que los usuarios que tengan el estado ¡por asistir! no se puedan registrarse en la inscripción de un proyecto, ya que es un requisito que el usuario haya asistido a la charla para poder ser inscrito a un proyecto. Les explico el sistema funciona de esta manera los usuarios hacen una pre- inscripción en el sistema para almacenar esos datos tengo dos tablas las cuales son:
Tabla Usuarios
Id, usuario, clave, fk_nivel, correo, cedula, nombres, apellidos

Tabla pre_inscripcion
Fk_cedula, fk_idcarrera, estado

Luego de eso tengo las siguientes tablas para hacer el registro de los proyectos y saber que alumnos están inscriptos en ese proyecto

Tabla: inscripción_proyectos
Id, titulo_proyecto, fk_departamento, fk_profesor, fk_cedula

Tabla: inscripción_alumnos
Id, fk_inscripción_proyectos, fk_cedula

Ahora mi duda es como puede hacer esa condición…
__________________
yoclens avilan
  #2 (permalink)  
Antiguo 15/03/2017, 13:25
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: crear condición para validar un estado

asumo que debes de registrar la asistencia a dicha charla en algún lado, con ello puedes hacer dicha validación
  #3 (permalink)  
Antiguo 15/03/2017, 13:40
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: crear condición para validar un estado

Cita:
Iniciado por sustentio Ver Mensaje
asumo que debes de registrar la asistencia a dicha charla en algún lado, con ello puedes hacer dicha validación
Si no la tiene, hágalo y así solventa su problema
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #4 (permalink)  
Antiguo 15/03/2017, 15:13
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: crear condición para validar un estado

Cita:
Iniciado por sustentio Ver Mensaje
asumo que debes de registrar la asistencia a dicha charla en algún lado, con ello puedes hacer dicha validación
en Tabla pre_inscripcion
Fk_cedula, fk_idcarrera, estado


hay manejo el estado cuando un a alumno hace una pre- inscripcion automáticamente el estado es Por Asistir, luego el administrador dependiendo si el usuario asistió o no asistió a la charla le cambia su estado a Asistió o NO Asistió o crees que debería crear otra tabla?

código que uso para insertar en inscripción_alumnos:

Código PHP:
Ver original
  1. <?php
  2.  if (isset ($_POST['guardar'])){
  3.  
  4. var_dump($_POST);
  5.  
  6.  
  7. $id=$_POST['id'];
  8. $idinscripcion_proyectos=$_POST['idinscripcion_proyectos'];
  9. $cedula=$_POST['cedula'];
  10. $nombres=$_POST['nombres'];
  11. $apellidos=$_POST['apellidos'];
  12.  
  13. $titulo_proyecto=$_POST['titulo_proyecto'];
  14. $iddepartamentos=$_POST['iddepartamentos'];
  15. $idprofesor=$_POST['idprofesor'];
  16. $idusuarios=$_POST['idusuarios'];
  17.  
  18.  
  19.  
  20.  
  21.         $sql_user="SELECT count(1) as item FROM pre_inscripcion WHERE estado IN('NO Asistio', 'Por Asistir') AND cedula='$cedula' LIMIT 1";
  22.         $res=mysql_query($sql_user,$link);
  23.         if (mysql_num_rows($res) > 0)
  24.  
  25.             {
  26.    
  27.                 echo "<div class='col s12 card-panel blue lighten-2 center'>
  28.                <h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
  29.                ¡ Ups Aviso: Disculpe Este(os) Usuario no Puede Inscribirse en proyecto ya que no Asistio a la Charla !
  30.                </h5>
  31.                </div>";
  32.                 //header("refresh:5;registrar_inscripcion.php");
  33.  
  34.           }
  35.  
  36.             else
  37.  
  38.           {
  39.  
  40.  
  41.               $sql="SELECT * FROM inscripcion_alumnos WHERE id='$id' LIMIT 1";
  42.               $res=mysql_query($sql,$link);
  43.               $nrows=mysql_num_rows($res);
  44.  
  45.    
  46.           if($nrows==0)
  47.             {
  48.  
  49.  
  50.              if (mysql_query("INSERT INTO inscripcion_proyectos (id,titulo_proyecto,iddepartamentos,idprofesor,idusuarios) VALUES
  51.                ('$id','$titulo_proyecto','$iddepartamentos','$idprofesor','$idusuarios')",$link));
  52.                   $last_id = mysql_insert_id();
  53.  
  54.  
  55.  
  56.                   for ($i = 0; $i < count($idinscripcion_proyectos); $i++)
  57.                         {
  58.                           foreach ($nombres as $key => $nombre)
  59.                               {
  60.  
  61.                   if (mysql_query("INSERT INTO inscripcion_alumnos (id,idinscripcion_proyectos,cedula,nombres,apellidos) VALUES
  62.                  ('$id','$last_id','$cedula[$key]','$nombres[$key]','$apellidos[$key]')",$link));
  63.  
  64.          
  65.  
  66.               }
  67.  
  68.  
  69.       }
  70.  
  71.               echo "<div class='col s12 card-panel teal lighten-2 center'>
  72.              <h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
  73.              ¡ Bien Hecho: Registro Insertado Correctamente !
  74.              </h5>
  75.              </div>";
  76.                 //header("refresh:5;registrar_inscripcion.php");
  77.     }
  78.      
  79.  
  80.        else
  81.  
  82.               echo "<div class='col s12 card-panel blue lighten-2 center'>
  83.              <h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
  84.              ¡ Ups Aviso: El Reegistro ya se encuenta Insertado !
  85.              </h5>
  86.              </div>";
  87.              //header("refresh:5;registrar_inscripcion.php");
  88.    
  89.           }
  90.  
  91.    }
  92. ?>

el único problema que tengo ahora es que se me activa el mjs de: ¡ Ups Aviso: Disculpe Este(os) Usuario no Puede Inscribirse en proyecto ya que no Asistió a la Charla ! que es lo que se quiere cuando los usuarios tiene el estado NO Asistio y Por Asisitir, pero en este caso los tres usuarios a registrar tienen el estado Asistió, lo que me faltaría es eso y cuando de ese tipo de mjs diga que cedula son las que no pueden registrarse en el mjs de alerta
__________________
yoclens avilan

Última edición por aviweb2015; 16/03/2017 a las 06:45 Razón: me falto algo
  #5 (permalink)  
Antiguo 16/03/2017, 07:51
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: crear condición para validar un estado

ya tiene el campo, ya tiene el status, no veo cual sea el problema, con ello puede perfectamente excluir a los no asistentes a la charla.

PD: hay evidentes fallos en cuanto a buenas prácticas en base de datos, le recomiendo reforzar este aspecto.
  #6 (permalink)  
Antiguo 16/03/2017, 09:57
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: crear condición para validar un estado

ya lo he puesto de varias forma, y nada
__________________
yoclens avilan
  #7 (permalink)  
Antiguo 16/03/2017, 11:08
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: crear condición para validar un estado

Cita:
Iniciado por aviweb2015 Ver Mensaje
ya lo he puesto de varias forma, y nada
¿analizaste lo que estas haciendo?, he ahí el problema, primero haces un count() de pre_incripción en donde devuelves el total de los que asistieron o no (estado IN('NO Asistio', 'Por Asistir')) además de filtar por cédula y comparas el retorno de registros devueltos (mysql_num_rows), eso NO tiene sentido, se supone que obtengas el valor del campo "estado" para la persona "cedula" y verifiques si el valor es "Por Asistir" para negarle el acceso.
  #8 (permalink)  
Antiguo 16/03/2017, 11:24
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: crear condición para validar un estado

y como debería ser la consulta
__________________
yoclens avilan
  #9 (permalink)  
Antiguo 16/03/2017, 11:41
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: crear condición para validar un estado

ya se lo dije:

"se supone que obtengas el valor del campo "estado" para la persona "cedula" y verifiques si el valor es "Por Asistir" para negarle el acceso"

es algo simple de hacer, porque yo no le voy a hacer el SQL a nadie
  #10 (permalink)  
Antiguo 16/03/2017, 11:50
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: crear condición para validar un estado

lo he modificado pero igual me arroja el mjs así tenga cualquier estado

Código PHP:
Ver original
  1. $sql_user="SELECT estado FROM pre_inscripcion WHERE estado='NO Asistio' AND estado='Por Asistir'  LIMIT 1";
  2.         $res=mysql_query($sql_user,$link);
  3.         if (mysql_num_rows($res) == 0)
__________________
yoclens avilan
  #11 (permalink)  
Antiguo 16/03/2017, 11:56
 
Fecha de Ingreso: septiembre-2015
Mensajes: 142
Antigüedad: 8 años, 7 meses
Puntos: 13
Respuesta: crear condición para validar un estado

a ver no e leido mucho el tema , pero quieres obtener el estado de una persona ( ASISTIO , NO ASISTIO )

ya sustentio te explico como hacerlo :
Cita:
"se supone que obtengas el valor del campo "estado" para la persona "cedula" y verifiques si el valor es "Por Asistir" para negarle el acceso"
te dice : obtén el estado para la persona "x" con su cédula.

esa query que haces no tiene sentido :

Código SQL:
Ver original
  1. SELECT estado FROM pre_inscripcion WHERE estado='NO Asistio' AND estado='Por Asistir'  LIMIT 1"


tienes que obtener el estado , pasando la cédula de la persona.

suponga que esta es tu tabla de prescripción

id cedula nombre fecha estado
1 - 12912912 - Fulano - 02/02/2000 - NO
2 - 13030303 - Fulano2 -02-10-2000 - SI

Vas a buscar en esa tabla :(en español )

selecciona el estado de la persona "X" donde su cédula es : 13030303
te va a traer el estado de Fulano2
  #12 (permalink)  
Antiguo 16/03/2017, 12:06
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: crear condición para validar un estado

es evidente que no tiene idea de lo que hace :

"SELECT estado FROM pre_inscripcion WHERE estado='NO Asistio' AND estado='Por Asistir' LIMIT 1"

¿dónde filtras por la cédula?
¿estado='NO Asistio' AND estado='Por Asistir'?: esto es Imposible, Fuera de lógica

y para completar:

"if (mysql_num_rows($res) == 0)"

¿dónde haces el FETCH?

Recomiendo analizar y poner más empeño en lo que hace.
  #13 (permalink)  
Antiguo 16/03/2017, 12:07
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: crear condición para validar un estado

Código PHP:
Ver original
  1. $sql_user="
  2. SELECT estado
  3. FROM pre_inscripcion
  4. /* la comparación en estado es estricta, cuidado con las tildes */
  5. WHERE (estado='NO Asistio' OR estado='Por Asistir')  AND cedula='".$cedula."'
  6. LIMIT 1";
  7. $res=mysql_query($sql_user,$link);
  8.        
  9. if (mysql_num_rows($res) > 0)
  10. {
  11.     echo 'No asistió';
  12.     return;
  13. }
  14. else
  15. {
  16.     echo 'Sí asistió';
  17.     return;
  18. }
__________________
Unset($vida['malRollo']);
  #14 (permalink)  
Antiguo 16/03/2017, 12:13
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: crear condición para validar un estado

@xerifandtomas eso No funciona, debido a que asista o no la persona, devolverá 1 registro, y estás comparando el total de registros, NO el valor de estado.
  #15 (permalink)  
Antiguo 16/03/2017, 12:18
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: crear condición para validar un estado

Según veo yo el código y lo que comenta el compañero, no se pretende extraer una lista con los registros que asistieron o no, si no más bien consultar si un usuario dado asistió o no a una clase determinada.


Esto igualmente tiene un problema sin resolver, ¿ Cómo identificas el curso del que quieres saber si asistió?
Por qué la consulta anterior te dirá que no asistió desde el momento en que no asiste una vez. Por lo que deberás implicar también el PK o FK del curso al que asistió o no.
__________________
Unset($vida['malRollo']);
  #16 (permalink)  
Antiguo 16/03/2017, 12:20
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: crear condición para validar un estado

Cita:
Iniciado por sustentio Ver Mensaje
@xerifandtomas eso No funciona, debido a que asista o no la persona, devolverá 1 registro, y estás comparando el total de registros, NO el valor de estado.
El valor del estado se está comparando en el SQL
__________________
Unset($vida['malRollo']);
  #17 (permalink)  
Antiguo 16/03/2017, 12:22
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: crear condición para validar un estado

Cita:
Iniciado por xerifandtomas Ver Mensaje
El valor del estado se está comparando en el SQL
no sirve, por que estás comparando si no asistió O por asistir y eso devolverá siempre 1 registro, afuera comparas total de registros, en conclusión NO sirve.
  #18 (permalink)  
Antiguo 16/03/2017, 12:24
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: crear condición para validar un estado

@xerifandtomas gracias por tu ejemplo lo he implementado pero igual me sigue registrando el problema es que si un o varios usuarios tienen el estado No Asistio y Por Asistir no pueden registrarse al proyecto pero si tienen el estado Asistio si pueden registrarse al proyecto, actualmente el código es este implementando tu ejemplo ah en la bd el estado no lo estoy guardando con tilde:

Código PHP:
Ver original
  1. <?php
  2.  if (isset ($_POST['guardar'])){
  3.  
  4. //var_dump($_POST);
  5.  
  6.  
  7. $id=$_POST['id'];
  8. $idinscripcion_proyectos=$_POST['idinscripcion_proyectos'];
  9. $cedula=$_POST['cedula'];
  10. $nombres=$_POST['nombres'];
  11. $apellidos=$_POST['apellidos'];
  12.  
  13. $titulo_proyecto=$_POST['titulo_proyecto'];
  14. $iddepartamentos=$_POST['iddepartamentos'];
  15. $idprofesor=$_POST['idprofesor'];
  16. $idusuarios=$_POST['idusuarios'];
  17.  
  18.  
  19.  
  20. $sql_user="SELECT estado FROM pre_inscripcion WHERE (estado='NO Asistio' OR estado='Por Asistir')  AND cedula='".$cedula."' LIMIT 1";
  21. $res=mysql_query($sql_user,$link);
  22.        
  23. if (mysql_num_rows($res) > 0)
  24.  
  25.        {
  26.                 echo "<div class='col s12 card-panel blue lighten-2 center'>
  27.                <h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
  28.                ¡ Ups Aviso: Disculpe Este(os) Usuario no Puede Inscribirse en proyecto ya que no Asistio a la Charla !
  29.                </h5>
  30.                </div>";
  31.                 //header("refresh:5;registrar_inscripcion.php");
  32.                 return;
  33.  
  34.               }
  35.  
  36.  
  37.               else
  38.  
  39.           {
  40.  
  41.  
  42.               $sql="SELECT * FROM inscripcion_alumnos WHERE id='$id' LIMIT 1";
  43.               $res=mysql_query($sql,$link);
  44.               $nrows=mysql_num_rows($res);
  45.  
  46.    
  47.           if($nrows==0)
  48.             {
  49.  
  50.  
  51.              if (mysql_query("INSERT INTO inscripcion_proyectos (id,titulo_proyecto,iddepartamentos,idprofesor,idusuarios) VALUES
  52.                ('$id','$titulo_proyecto','$iddepartamentos','$idprofesor','$idusuarios')",$link));
  53.                   $last_id = mysql_insert_id();
  54.  
  55.  
  56.  
  57.                   for ($i = 0; $i < count($idinscripcion_proyectos); $i++)
  58.                         {
  59.                           foreach ($nombres as $key => $nombre)
  60.                               {
  61.  
  62.                   if (mysql_query("INSERT INTO inscripcion_alumnos (id,idinscripcion_proyectos,cedula,nombres,apellidos) VALUES
  63.                  ('$id','$last_id','$cedula[$key]','$nombres[$key]','$apellidos[$key]')",$link));
  64.  
  65.          
  66.  
  67.               }
  68.  
  69.  
  70.       }
  71.  
  72.               echo "<div class='col s12 card-panel teal lighten-2 center'>
  73.              <h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
  74.              ¡ Bien Hecho: Registro Insertado Correctamente !
  75.              </h5>
  76.              </div>";
  77.                 //header("refresh:5;registrar_inscripcion.php");
  78.     }
  79.      
  80.  
  81.        else
  82.  
  83.               echo "<div class='col s12 card-panel blue lighten-2 center'>
  84.              <h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
  85.              ¡ Ups Aviso: El Reegistro ya se encuenta Insertado !
  86.              </h5>
  87.              </div>";
  88.              //header("refresh:5;registrar_inscripcion.php");
  89.    
  90.           }
  91.  
  92.    }
  93. ?>
__________________
yoclens avilan
  #19 (permalink)  
Antiguo 16/03/2017, 12:29
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: crear condición para validar un estado

Cita:
Iniciado por xerifandtomas Ver Mensaje
Según veo yo el código y lo que comenta el compañero, no se pretende extraer una lista con los registros que asistieron o no, si no más bien consultar si un usuario dado asistió o no a una clase determinada.


Esto igualmente tiene un problema sin resolver, ¿ Cómo identificas el curso del que quieres saber si asistió?
Por qué la consulta anterior te dirá que no asistió desde el momento en que no asiste una vez. Por lo que deberás implicar también el PK o FK del curso al que asistió o no.
tengo una tabla pre-inscripcion en esa tabla guardo cedula,idcarreras, estado donde el estado es el objetivo, me explico antes de inscribirlo al proyecto tengo que hacer la consulta si ese o esos usuarios asistieron a la charla, si los usuarios asistieron al a la charla su estado lo cambia el administrador manualmente a Asistio, pero si x usuarios no asistieron a la charla el administrador cambia el estado a No Asisitio, el estado Por Asisitir se guarda automaticamente cuando el usuario se pre inscribe en el sistema
__________________
yoclens avilan
  #20 (permalink)  
Antiguo 16/03/2017, 12:36
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: crear condición para validar un estado

Cita:
Iniciado por sustentio Ver Mensaje
no sirve, por que estás comparando si no asistió O por asistir y eso devolverá siempre 1 registro, afuera comparas total de registros, en conclusión NO sirve.
Obviamente eso es lo que se pretende, si no asistió devolverá 1, si asistió devolverá 0, para que quiero saber más.



Te falta identificar el proyecto, como se relaciona tu tabla pre_inscripcion, es decir en que campo de la tabla identificas a que proyecto pertenece ese registro?


Básicamente añade ese campo a la consulta
Código SQL:
Ver original
  1. SELECT estado
  2. FROM pre_inscripcion
  3. WHERE (estado='NO Asistio' OR estado='Por Asistir')  AND cedula='".$cedula."'
  4. /* añade otro and con el campo identificador de proyecto ue no me queda claro cual es */
  5. AND fk_proyecto=$numero_proyecto
  6. LIMIT 1
__________________
Unset($vida['malRollo']);
  #21 (permalink)  
Antiguo 16/03/2017, 12:41
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: crear condición para validar un estado

A ver que no te estoy entendiendo. Intenta ser un poco más claro.


¿ Quieres traer una lista de usuarios y después saber cuales de ellos asistieron a un curso/charla determinado ?
O
¿ Quieres saber si un usuario determinado asistió a un curso/charla determinado?
__________________
Unset($vida['malRollo']);
  #22 (permalink)  
Antiguo 16/03/2017, 12:46
 
Fecha de Ingreso: septiembre-2015
Mensajes: 142
Antigüedad: 8 años, 7 meses
Puntos: 13
Respuesta: crear condición para validar un estado

lo que quiere es verificar si "X" persona asistió o no a la charla , por eso mi comentario mas arriba.
necesita simplemente la cédula para extraer el estado de x persona.

ya sustentio se le explico!
  #23 (permalink)  
Antiguo 16/03/2017, 13:04
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: crear condición para validar un estado

te explico amigo:

tabla usuarios:

id, usuario, clave, idnivel, correo, cedula, nombres, apellidos

tabla pre_inscripcion

cedula, idcarreras, estado

la relación en estas dos tablas es la cédula, cuando el usuario se pre-inscribe en el sistema su estado es Por Asistir, porque Por Asistir porque nada mas se a pre-inscrito en el sistema todavía no asistido a la charla, luego de que ya están pre inscritos todos los usuarios el admin cuando convoque a los usuarios a la charla ya que es un requisito asisistir a la charla para poder inscribirse en el proyecto, entonces el admin valida el estado de los que asistieron a la charla, si asistieron su estado cambia a Asistio, si no asistieron su estado cambia a No Asisitio.

ahora las otras tablas

tabla inscripcion_proyectos

id, titulo_proyecto, iddepartamentos, idprofesor,idusuario (este idusuarios es el responsable de hacer el registro del proyecto, pude ser el administrador o la secretaria)

tabla inscripcion_alumnos
id,idinscripcion_proyectos,cedula

cual es la relación en estas dos tablas es el id de la tabla inscripcion_proyectos con el idinscripcion_proyectos de la tabla inscripcion_alumnos asi se cuales alumnos pertenecen a ese proyecto es me funciona todo bien.

ahora el detalle es este cuando valla hacer la inscripción de un proyecto necesita hacer la consulta antes de insertar si esos usuarios cumplen con el requisito, cual es el requisito si los usuarios tienen el estado Asisitio pueden inscribirse al proyecto, pero si los usuarios tienen el estado No Asisitio o Por Asisitir no pueden inscribirse al proyecto ya que es un requisito haber aisistido a la charla y hay es cuando debe salir el mjs

¡ Ups Aviso: Disculpe Este(os) Usuarios: c.i: 12345678, 14569878,14789541 no Puede Inscribirse en proyecto ya que no Asistieron a la Charla !
__________________
yoclens avilan
  #24 (permalink)  
Antiguo 16/03/2017, 14:37
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: crear condición para validar un estado

Cita:
Iniciado por sustentio Ver Mensaje
es evidente que no tiene idea de lo que hace :

"SELECT estado FROM pre_inscripcion WHERE estado='NO Asistio' AND estado='Por Asistir' LIMIT 1"

¿dónde filtras por la cédula?
¿estado='NO Asistio' AND estado='Por Asistir'?: esto es Imposible, Fuera de lógica

y para completar:

"if (mysql_num_rows($res) == 0)"

¿dónde haces el FETCH?

Recomiendo analizar y poner más empeño en lo que hace.



he modificado la consulta quedanso asi pero ahora no me deja registrar asi x usuarios tenga cualquier estado

Código PHP:
Ver original
  1. $sql_user="SELECT * FROM  pre_inscripcion WHERE estado = (estado ='Por Asistir' OR estado = 'No Asistio')  AND cedula='$cedula' LIMIT 1";
  2.         $res=mysql_query($sql_user,$link);
  3.         $nrows=mysql_num_rows($res);
  4.  
  5.           if($nrows==0)
  6.  
  7.  
  8.             {
__________________
yoclens avilan
  #25 (permalink)  
Antiguo 16/03/2017, 14:47
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: crear condición para validar un estado

Cita:
Iniciado por sonystar_17 Ver Mensaje
lo que quiere es verificar si "X" persona asistió o no a la charla , por eso mi comentario mas arriba.
necesita simplemente la cédula para extraer el estado de x persona.

ya sustentio se le explico!
Entiendo lo que dices en tu comentario anterior.
Pero hasta ahora las sentencias que habéis mostrado responden de a la pregunta
¿ha asistido o no X persona a alguna charla, cualquiera de ellas ?

Cuando entiendo que la pregunta que se debe responder es: ¿ a asistido o no X persona a la charla Y o a la charla del proyecto Z?

Desglosemos un poco el tema, sólo por curiosidad.
¿ Un usuario puede asistir a una, a varias o a ninguna charla?
¿ A una charla pueden asistir uno, varios o ningún usuario ?

Si ambas respuestas son SÍ,
podemos deducir que esiste una relación N:N entre las entidades usuarios y charlas
derivada de la asistencia.

Por lo que necesitaremos 3 tablas mínimo para representar el modelo, corrijanme equivoco.

usuarios
PK_usuario
Resto de atributos

charlas
PK_charla
Resto de atributos

asistencias
PK_asistencia
FK_usuario
FK_charla
estado
Resto de atributos

Añadamos el proyecto.
proyectos
PK_proyecto
resto de atributos


¿Un usuario puede acceder al proyecto si participo en una charla, cualquiera de ellas
o solo puede aceder al proyecto si participo en la charla especifica del proyecto?

Si la respuesta es, si participo en cualquiera de las charlas, la que sea:
Código SQL:
Ver original
  1. SELECT * FROM asistencias WHERE FK_usuario=susarioX AND estado=asistio LIMIT 1
si devuelve almenos un registro es que asistio almeno a 1 charla,
de lo contrario no asistio a ninguna

Si la respuesta es, si participo en una charla especifica, la del proyecto:
- Debemos añadir primero esa relacion entre charlas y proyectos ( una charla pertenece a un proyecto)
¿ Un proyecto puede tener una, varias o ninguna charla ? SI, una, varias o ninguna
¿ Una charla puede pertenecer a mas de un proyecto ? NO, solo a un proyecto

charlas
PK_charla
FK_proyecto
Resto de atributos

Ahora podemos preguntar ¿ El usuario X asitio a la charla del proyecto Z ?
Código SQL:
Ver original
  1. SELECT * FROM  asistencias
  2. INNER JOIN charlas ON asistencias.FK_charla=charlas.PK_charla
  3. WHERE asistencias.FK_usuario=X AND charlas.FK_proyecto=Z AND estado=asistio

--------------------

Lo que no termino de entender en tu enunciado es esta ultima relacion entre el proyecto, la charla y el usuario.
Tus relaciones son ambiguas y tus requerimientos poco precisos.
No pretendo sarmonearte ni mucho menos, pero es dificil, dar una respuesta certera cuando
la definicion del proyecto es ambigua, poco precisa o los requerimientos estan mal planteado
o no son claros.

---------------------
Veamos tu caso:

usuarios ( Almacena los usuarios del sistema )
id ( identificador unico )
cedula ( ¿es un PK de usuarios, es unico?, para que quieres el id entonces )
resto de atributos

pre_inscripcion ( Almacena los usuarios pre_inscritos a un proyecto)
(donde esta el PK)
cedula (FK tabla usuarios)
idcarreras ( a que hace referencia, de donde sale, es el PK)
estado (representa el estado; asite, no asiste, por asistir)

inscripcion_alumnos
id
(PK)
idinscripcion_proyectos ( FK tabla inscripcion_proyectos)
cedula (FK tabla usuarios)

inscripcion_proyectos
id
(PK)
resto de campos

Claramente viendo esto, en tus tablas falta determinar de forma clara y concisa tus requerimientos:
Un usuario cuando esta preinscrito. ¿Que significa? ¿ para que esta preinscrito ? ¿ par un proyecto, para todos los proyectos ? ¿ esiste una relacion entre proyectos y preinscritos?

En fin necesitas pulir este aspecto como bien han comentado.
por otro lado si respondes a estas preguntas y alas del ejemplo quizas pueda o podamos ayudarte con un ejemplo mas preciso.
__________________
Unset($vida['malRollo']);

Última edición por xerifandtomas; 16/03/2017 a las 14:55
  #26 (permalink)  
Antiguo 16/03/2017, 15:23
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: crear condición para validar un estado

me explico cuando el usuario hace la pre-inscripcion en el sistema el estado es por Asistir, porque por asistir porque se supone que solamente se ha pre-inscrito en el sistema ahora cuando el admin o secretaria convocan la la charla que es una sola charla hay se determina su estado final para los usuarios que seria(Por Asistir, No Asistio o Asistio), ahora cuando el administrador o secretaria valla hacer la inscripción formal al proyecto e instructora x cedula de los usuarios que están registrado en el sistema hay es donde debe haber la consulta si x usuarios cumplen con el requisito para inscribirse en un proyecto todo funciona bien amigo el único problema es ese que necesito saber si los usuarios cumplen esa condición porque si los usuarios no cumplen con esa condición todos se pueden registrar en un cualquier proyecto cosa que no esta permitido porque debes asistir a la charla para poder ser inscrito a un proyecto
__________________
yoclens avilan

Etiquetas: condición, estado, registro, usuario
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 14:59.