Foros del Web » Programando para Internet » PHP »

Cómo colocar un campo de justificación?

Estas en el tema de Cómo colocar un campo de justificación? en el foro de PHP en Foros del Web. Hola, buenas. Unos compañeros y yo estamos trabajando en un proyecto de la universidad y me ha tocado crear un cuadro de justificación cuando el ...
  #1 (permalink)  
Antiguo 02/02/2017, 13:34
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Cómo colocar un campo de justificación?

Hola, buenas. Unos compañeros y yo estamos trabajando en un proyecto de la universidad y me ha tocado crear un cuadro de justificación cuando el comprobando que se envía al sistema no es válido, me explico con esta imagen:



Como ven, hay dos opciones, aceptar el comprobante o NO aceptarlo, lo que quiero hacer es que al momento de dar click sobre "Comprobante No válido" me aparezca un cuadro aún lado donde se explique la razón por la cual no fue aceptado, cómo lo puedo hacer?, les dejo el código de esa sección:
Código:
<?php
$id = $_POST["id"];
$verificacion = $_POST["verificacion"];
$fecha=$_POST["fecha"];

include 'conexion.php';

//**************************************** Verificacion 1 ok, 2 no aprobado, 0 espera de verificacion, 4 sin movimientos  ****************************

//echo '<script language="javascript">alert("El valor de id es = '.$id.' ");</script>'; 


if($verificacion==3){
    //$tabla=$mysqli->query("update asistente set verificacion=".$verificacion." where id=".$id);
   
    $tabla=$mysqli->query("select c.idCurso, c.cupo, c.nombreCurso, c.claveCurso from curso c inner join curso_asistente ca 
        on c.idCurso=ca.idCurso where ca.idUsuario='".$id."'");
    //checar cupo del grupo!!!
    $cursosLlenos ="";
    $cursosIns ="";    
    //agregar asistente al curso!!!
    
    while($row = $tabla->fetch_array()) { 

        //Versiòn 2: Se calcula la capacidad
        /*$inscritos = $mysqli->query("select verificacion from asistente inner join curso_asistente on curso_asistente.idUsuario = asistente.folio && curso_asistente.idCurso = '".$row[0]."' && asistente.verificacion=3");*/

        $inscritos = $mysqli->query("select inscrito from curso_asistente where idCurso = '".$row[0]."' && inscrito=1 ");


        $NumInscritos = mysqli_num_rows($inscritos);
        $capacidad = $row[1] - $NumInscritos; //cupo menos inscritos

        if($capacidad>0){
            $inscribir = $mysqli->query("update curso_asistente set inscrito=1 where (idUsuario='".$id."' && idCurso='".$row[0]."')");
            $cursosIns .= " + ".htmlentities($row[2])."<br>";
        }else{

            $cursosLlenos .= " - ".htmlentities($row[2])."<br>";
            //$mysqli->query("delete from curso_asistente where nomCurso='".$row[0]."' and idUsuario='".$id."'");
            /*$mysqli->query("update curso set claveCurso='".$row[3]."_X' where 
                claveCurso='".$row[3]."' and year ='".$fecha."'");*/
                
        }
       
    }

    $tabla=$mysqli->query("update asistente set verificacion=".$verificacion." where folio='".$id."'");
    $tabla=$mysqli->query("update factura set verificacion=1 where idUsuario='".$id."'");

    session_start();

    $nombreUser = $_SESSION["nombreU"];
    $tabla=$mysqli->query("update asistente set verificadoPor='".$nombreUser."' where folio='".$id."'");

}else if($verificacion==2){ //SI ES RECHAZADO
    $tabla3=$mysqli->query("update asistente set verificacion=".$verificacion." where folio='".$id."'");
    $tabla3=$mysqli->query("update factura set verificacion=0 where idUsuario='".$id."'");

    session_start();

    $nombreUser = $_SESSION["nombreU"];
    $tabla=$mysqli->query("update asistente set verificadoPor='".$nombreUser."' where folio='".$id."'");
}



    //////////////////Se agrega nuevo codigo para enviar correo electronico de confirmacion
    include "config.php";
    require 'class.phpmailer.php';  
    $mail = new PHPMailer();
    //Luego tenemos que iniciar la validaci&oacute;n por SMTP:
    $mail->IsSMTP();
    $mail->SMTPAuth = true;
    $mail->Host = $host; // SMTP a utilizar. Por ej. smtp.elserver.com
    $mail->Username = $Username; // Correo completo a utilizar
    $mail->Password = $password; // Contrase&ntilde;a
    $mail->Port = $port; // Puerto a utilizar
    $mail->SMTPSecure = $smtpSecure;
    //Con estas pocas l&iacute;neas iniciamos una conexi&oacute;n con el SMTP. Lo que ahora deber&iacute;amos 
    //hacer, es configurar el mensaje a enviar, el //From, etc.
    //$mail->From = "[email protected]"; // Desde donde enviamos (Para mostrar)
    $mail->FromName = $fromName;
    //$tabla=$mysqli->query("Select * from asistente where id='".$id."'");
    $tabla=$mysqli->query("Select * from asistente where folio='".$id."'");
    //Estas dos l&iacute;neas, cumplir&iacute;an la funci&oacute;n de encabezado (En mail() usado de esta forma: “From: Nombre <[email protected]>”) de //correo.

    while($row = $tabla->fetch_array()){

        $mail->AddAddress($row[6]); // Esta es la direcci&oacute;n a donde enviamos //SE cambio row 7 por row 6.
        $mail->AddBCC("[email protected]", $name = "Adrian Vazquez");  // Esta es la copia oculta que se envia.
        $mail->IsHTML(true); // El correo se env&iacute;a como HTML
        $mail->Subject = "Inscripcion CONFIRMADA a la SNIDM - Universidad de Sonora"; // Este es el titulo del email.

        if($verificacion==3){
            $body = "<strong> Hola ".$row[0].",<br><br> 
            Este correo es para confirmar que tu inscripci&oacute;n a la Semana Nacional de Investigaci&oacute;n y 
            Docencia en Matem&aacute;ticas ha sido registrada EXITOSAMENTE. </strong><br><br>";
        }else if($verificacion==2 && $row[10]==0 ){ //si NO es becado
            $mail->Subject = "Inscripcion DENEGADA a la SNIDM - Universidad de Sonora"; // Este es el titulo del email.            
            $body = "<strong> Hola ".$row[0].",<br><br> 
            Este correo es para informar que tu inscripci&oacute;n a la Semana Nacional de Investigaci&oacute;n y 
            Docencia en Matem&aacute;ticas NO est&aacute; COMPLETA. Lamentablemente no se pudo visualizar bien la imagen del comprobante de pago. Te invitamos a que realices de nueva cuenta la inscripci&oacute;n.  </strong><br><br>";

 
        }else if($verificacion==2 && $row[10]==1){//si es becado
            $mail->Subject = "Inscripcion DENEGADA a la SNIDM - Universidad de Sonora"; // Este es el titulo del email. 
             $body = "<strong> Hola ".$row[0].",<br><br> 
            Este correo es para informar que tu inscripci&oacute;n a la Semana Nacional de Investigaci&oacute;n y 
            Docencia en Matem&aacute;ticas NO est&aacute; COMPLETA. Lamentablemente no se pudo visualizar bien la imagen de tu credencial. Te invitamos a que realices de nueva cuenta la inscripci&oacute;n. </strong><br><br>";
        
        }
  #2 (permalink)  
Antiguo 02/02/2017, 13:35
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Cómo colocar un campo de justificación?

Código:
$body .= "<span><strong>Cursos Seleccionados:</strong></span><br>";

        $cursoSelec = $mysqli->query("select curso.nombreCurso from curso
                            inner join curso_asistente on curso.idCurso = curso_asistente.idCurso
                            where idUsuario='".$id."'"); //Solo los cursos seleccionados.
        /*$tabla = $mysqli->query("select curso.nombreCurso from curso_asistente 
                            inner join curso on curso.idCurso = curso_asistente.idCurso
                            where idUsuario='".$id."'");

        */
         while($curso=$cursoSelec->fetch_array()){
                $body .= " + ".htmlentities($curso[0])."<br>";
            }

        $body .= "<span><strong>Cursos donde obtuvo cupo:</strong></span><br>" .$cursosIns;
        $body .="<span><strong>Cursos donde NO obtuvo cupo:</strong></span><br>" .$cursosLlenos;
            /*if( $tabla->num_rows > 0 ){
                  $tabla = $mysqli->query("select curso.nombreCurso from curso
                            inner join curso_asistente on curso.idCurso = curso_asistente.idCurso
                            where idUsuario='".$id."' && inscrito=1"); //Aqui se consideran las materias en las que fue aceptado.

            while($row=$tabla->fetch_array()){
                $body .= " + ".htmlentities($row[0])."<br>";
            }
            //else{
            //$body .="Desafortunadamente no pudo inscribirse en los siguientes cursos:<br>" .$cursosLlenos;
       //}
        }*/

        $body .= "<strong>Datos De registro:</strong><br>";
        $body .= "<strong>Folio</strong>:".$row[5]."<br>";
        $body .= "<strong>Nombre:</strong>".$row[0]." ".$row[1]." ".$row[2]."<br>";
        $body .= "<strong>Registrado como:</strong>".$row[4]."<br>";
        $body .= "<strong>Instituci&oacute;n</strong>:".$row[3]."<br><br>";    
       
        if($row[11]=='1'){
            //$body.=    "<strong>Datos de facturaci&oacute;n:</strong><br>";
            $fac=$mysqli->query("Select * from factura where idUsuario='".$id."'");

            while($fact = $fac->fetch_array()){
                $body .= "<strong>Datos De Facturaci&oacute;n:</strong><br>";
                $body .= "<strong>Nombre</strong>:".$fact[0]."<br>";
                $body .= "<strong>Calle</strong>:".$fact[1]."<br>";
                $body .= "<strong>N&uacute;mero</strong>:".$fact[2]."<br>";    
                $body .= "<strong>Colonia</strong>:".$fact[3]."<br>";
                $body .= "<strong>C.P.</strong>:".$fact[4]."<br>";
                $body .= "<strong>Municipio</strong>:".$fact[5]."<br>";
                $body .= "<strong>Estado</strong>:".$fact[6]."<br>";
                $body .= "<strong>Pa&iacute;s</strong>:".$fact[11]."<br>";
                $body .= "<strong>R.F.C</strong>:".$fact[7]."<br>";
                if($fact[10]==1) $fact[10]="Si";
                else $fact[10]="No";
                $body .= "<strong>Iva desglosado: </strong>".$fact[10]."<br>";//quedo un 1 o un 0. Deberia mandarse un si o un no.
                $body .= "<strong>E-mail</strong>:".$fact[9]."<br><br>";
            }

        }
        $body .= "<span><br><br>Para cualquier consulta o correci&oacute;n, favor de comunicarse a [email protected]</span><br><br>";
        $body.="<br><br>";
        //$body .= "<span>Para cualquier consulta o correci&oacute;n comunicarse a [email protected]</span><br><br>";
        
        $body .= "<span style='color:rgb(68,68,68);font-size:22px;line-height:31px;' >Considera el medio ambiente antes de imprimir este correo</span><br><br><br><br>";
                 
        $mail->Body = $body; // Mensaje a enviar

        $exito = $mail->Send(); // Env&iacute;a el correo.

        //Enviar copia


        //Tambi&eacute;n podr&iacute;amos agregar simples verificaciones para saber si se envi&oacute;:
        if($exito){
            echo true;
            echo "Se envio";
        }else{
            echo $mail->ErrorInfo;
        }

    }
$mysqli->close();
header("Location:panelC.php?view=A1&fecha=".$fecha."");
?>
Supongo que sería agregarle algo después de esta parte:
Código:
}else if($verificacion==2){ //SI ES RECHAZADO
    $tabla3=$mysqli->query("update asistente set verificacion=".$verificacion." where folio='".$id."'");
    $tabla3=$mysqli->query("update factura set verificacion=0 where idUsuario='".$id."'");
Gracias de antemano !!
  #3 (permalink)  
Antiguo 02/02/2017, 14:43
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Cómo colocar un campo de justificación?

Hola Jose_A,

Para que aparezca un campo de texto al seleccionar el radiobutton, como mejor lo puedes hacer es con JQuery, teniendo que cuenta que, si se selecciona ese radiobutton aparezca y al deseleccionarlo también se borre el contenido para que, al recoger las variables desde PHP si no se ha seleccionado el radiobutton, la variable correspondiente al campo de texto, no tenga contenido, de esa forma te resultará más fácil de manejar a la hora de guardar.

Espero haberte ayudado.
  #4 (permalink)  
Antiguo 02/02/2017, 20:32
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Cómo colocar un campo de justificación?

Cita:
Iniciado por rbczgz Ver Mensaje
Hola Jose_A,

Para que aparezca un campo de texto al seleccionar el radiobutton, como mejor lo puedes hacer es con JQuery, teniendo que cuenta que, si se selecciona ese radiobutton aparezca y al deseleccionarlo también se borre el contenido para que, al recoger las variables desde PHP si no se ha seleccionado el radiobutton, la variable correspondiente al campo de texto, no tenga contenido, de esa forma te resultará más fácil de manejar a la hora de guardar.

Espero haberte ayudado.
Hola, gracias. No debería crear un nuevo campo en la base de datos para almacenar lo que colocaría ahí?
  #5 (permalink)  
Antiguo 03/02/2017, 03:38
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Cómo colocar un campo de justificación?

Hola Jose_A,

Obviamente. Eso no te lo mencionaba porque daba por hecho que ya lo tenías.
  #6 (permalink)  
Antiguo 03/02/2017, 14:16
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Cómo colocar un campo de justificación?

Cita:
Iniciado por rbczgz Ver Mensaje
Hola Jose_A,

Obviamente. Eso no te lo mencionaba porque daba por hecho que ya lo tenías.
Va, conocerás algún tutorial sobre ello que me sirva para hacer lo que busco?
  #7 (permalink)  
Antiguo 03/02/2017, 14:55
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Cómo colocar un campo de justificación?

Hola Jose_A,

Como entiendo que lo de añadir el campo a la base de datos ya lo sabes hacer, te paso enlaces de la otra parte:

https://www.google.es/?#q=mostrar+el...ton+con+jquery

https://www.google.es/?#q=vaciar+input+text+jquery

Espero que te sirvan, los he revisado por encima y tienen lo que tú necesitas, si ves que necesitas ayuda una vez hayas empezado, no dudes en publicar lo que llevas y se intentará ayudar en lo posible.
  #8 (permalink)  
Antiguo 03/02/2017, 15:29
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Cómo colocar un campo de justificación?

Se puede hacer con css
Código CSS:
Ver original
  1. <!DOCTYPE html>
  2. <html dir="ltr" lang="es-es">
  3.     <head>
  4.         <title></title>
  5.         <meta charset="utf-8">
  6.         <meta name="viewport" content="user-scalable=yes, width=device-width, initial-scale=1">
  7.         <style>
  8.             input[id="negar"] ~ textarea {
  9.                 display: none;
  10.             }
  11.  
  12.             input[id="negar"]:focus ~ textarea {
  13.                 display: inline;
  14.                 position: absolute;
  15.             }
  16.         </style>
  17.  
  18.     </head>
  19.     <body>
  20.        
  21.         <input type="radio" name="r"><br>
  22.         <input type="radio" name="r" id="negar">
  23.         <textarea>Escribe el por qué</textarea>
  24.  
  25.     </body>
  26. </html>
  #9 (permalink)  
Antiguo 03/02/2017, 16:40
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Cómo colocar un campo de justificación?

Cita:
Iniciado por mpozo Ver Mensaje
Se puede hacer con css
Código CSS:
Ver original
  1. <!DOCTYPE html>
  2. <html dir="ltr" lang="es-es">
  3.     <head>
  4.         <title></title>
  5.         <meta charset="utf-8">
  6.         <meta name="viewport" content="user-scalable=yes, width=device-width, initial-scale=1">
  7.         <style>
  8.             input[id="negar"] ~ textarea {
  9.                 display: none;
  10.             }
  11.  
  12.             input[id="negar"]:focus ~ textarea {
  13.                 display: inline;
  14.                 position: absolute;
  15.             }
  16.         </style>
  17.  
  18.     </head>
  19.     <body>
  20.        
  21.         <input type="radio" name="r"><br>
  22.         <input type="radio" name="r" id="negar">
  23.         <textarea>Escribe el por qué</textarea>
  24.  
  25.     </body>
  26. </html>
Pero con CSS no se puede vaciar el campo en el caso de que se deseleccione el radiobutton, por eso le recomendé JQuery.
  #10 (permalink)  
Antiguo 03/02/2017, 21:10
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Cómo colocar un campo de justificación?

Ya veo, entiendo. Mirando ambas opciones optaré por hacerlo con css puesto que mi nivel de programación no es la adecuada para usar JQuery. Veamos, no lo mencioné pero el sistema se nos fue puesto por nuestro maestro y nosotros debemos modificarlo, pero ya no supe como hacer este problema. Ya entiendo la base, con css me será más fácil, pero, ese código que me pasaron en dónde o en qué parte debería aplicarlo en el código que yo pasé?

Por favor, ocupo la ayuda ya que necesito enviar el sistema terminado al profesor este fin de semana :s

Se los agradecería mucho.
Saludos!
  #11 (permalink)  
Antiguo 04/02/2017, 05:12
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Cómo colocar un campo de justificación?

Cita:
Iniciado por rbczgz Ver Mensaje
Pero con CSS no se puede vaciar el campo en el caso de que se deseleccione el radiobutton, por eso le recomendé JQuery.
Eso es intrancendente. En caso que sé envie el formulario, hay que validar que radio fue checked.

Por cierto, la pseudo clase apropiada no es focus, sino checked

El código css lo insertas en el archivo donde está el html al que se le va a aplicar
  #12 (permalink)  
Antiguo 05/02/2017, 14:59
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Cómo colocar un campo de justificación?

Tengo dos días intentándolo pero la página deja de funcionar, algo estoy haciendo mal, de seguro es la posición en donde coloco el código. Esta es la página, sería tan amable alguien de entrar, y comentarme en qué parte del código deberé modificar para poder insertar el css que me han proporcionado?, ando perdido.
Pueden ingresar con el usuario: comite , la pass es el mismo.

Saludos!
  #13 (permalink)  
Antiguo 05/02/2017, 15:47
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Cómo colocar un campo de justificación?

Hola Jose_A,

En la página que muestras no se ve ningún radiobutton que es lo que mencionas desde el principio, solo se ve el botón "Cancelar", de todas formas el compañero mpozo te lo puso mucho más que claro como para que se vea dónde lo debes colocar.
  #14 (permalink)  
Antiguo 06/02/2017, 22:08
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Cómo colocar un campo de justificación?

Sí, perfecto. Lo estaba haciendo mal, pero ya quedó :3

Gracias !! Saludos.

Etiquetas: correo, fecha, html, mysql, registro, select, sql, 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 02:09.