1. Con una cuenta podrás:

    • Publicar preguntas y pedir ayuda
    • Crear tutoriales
    • Acceder a contenido privado
    • Convertirte en un Héroe de la web
    Cerrar notificación
  2. Eres nuevo en la comunidad y necesitas ayuda?
    Sigue estos pasos y recomendaciones antes de publicar tu duda:
    Cerrar notificación

Ayuda ¿Crear una variable que cuando el checkbox este activado o no?

Tema en 'PHP y MySQL' comenzado por Angel Paiba D&D, 1 de Enero de 2017.

  1. Angel Paiba D&D

    Angel Paiba D&D Miembro

    Se incorporó:
    7 de Enero de 2016
    Mensajes:
    70
    Me gusta recibidos:
    4
    Puntos de trofeos:
    8
    Género:
    Hombre
    Ocupación:
    Estudiante
    Localización:
    Venezuela
    Página web:
    Buenas Noches, quiero saber cuando un checkbox esta seleccionado pues hay un problema.

    PHP:
    if(isset($_POST['check1'])){
      $check1 = "TRUE";
      echo "esta activado el 1";
      }
    if(isset($_POST['check2'])){
      $check2 = "TRUE";
      }
    if(isset($_POST['check3'])){
      $check3 = "TRUE";
      }
    Es mi codigo efectivamente funciona bien detecta que esta en funcionamiento pero si agrego un else que vuelva a escribir la variable $check1 y la convierta en FALSE Que es cuando no esta seleccionada
    me sale este problema

    Undefined variable: check1

    Ahora explico lo que quieroe hacer, quiero crear un generador de contraseñas hay 3 checkbox que te dicen "Numero, Minúsculas, Mayúsculas" sirve para activar que en la contraseña que se generara salga Numeros minuculas y mayusculas, pero en el archivo donde se genera la "contraseña" hay una manera de activarla y desctivarla y es TRUE y FALSE, es algo como esto


    PHP:
    numbers = TRUE; //SERIA COMO VENIA
    numbers = $check1; //SERIA COMO TIENE QUE ESTAR SIN DAR ERROR
    "$check1" cuando este activado tiene que ser igual a "TRUE" // Funciona correctamente
    "$check1" cuando no este seleccionado tiene que ser igual a "FALSE" //Falla da error el antes mensionado
     
  2. Dawud

    Dawud Miembro conocido

    Se incorporó:
    4 de Abril de 2016
    Mensajes:
    518
    Me gusta recibidos:
    385
    Puntos de trofeos:
    63
    Género:
    Hombre
    Ocupación:
    Estudiante
    Localización:
    Villahermosa, Tabasco
    puedes utilizar el JS de esta forma, para verificar si esta activo y luego validarlo en PHP..

    Código (Javascript):
    <script type="text/javascript">
      function myFunction() {
        var t = document.getElementById("check1");
       
        if(t.checked==true){
        alert(t.checked);
        }else{
        alert(t.checked);
        }
    }
    </script>
     
    A AngelKrak le gusta esto.
  3. Angel Paiba D&D

    Angel Paiba D&D Miembro

    Se incorporó:
    7 de Enero de 2016
    Mensajes:
    70
    Me gusta recibidos:
    4
    Puntos de trofeos:
    8
    Género:
    Hombre
    Ocupación:
    Estudiante
    Localización:
    Venezuela
    Página web:
    Aun no entiendo como php sabrá que está activado
    Código (Text):
    <script type="text/javascript">
      function myFunction() {
        var t = document.getElementById("check1");
     
        if(t.checked==TRUE){
        alert(t.checked);
        }else{
        alert(t.checked==FALSE);
        }
    }
    </script>
     
  4. Dawud

    Dawud Miembro conocido

    Se incorporó:
    4 de Abril de 2016
    Mensajes:
    518
    Me gusta recibidos:
    385
    Puntos de trofeos:
    63
    Género:
    Hombre
    Ocupación:
    Estudiante
    Localización:
    Villahermosa, Tabasco
    Porque se lo tienes que definir... Además en tu condicional pregunta si la variable check1 con la funcion isset() el cual esta función verifica si la variable esta definida en el script de PHP que estas usando.. por ejemplo intenta poner check_01 sin definirla anteriormente POSTERIORMENTE agrega un else E imprime un echo "No se encuentra definida"; te notificará este mensaje ... Sin embargo puedo tener las siguiente variables:

    PHP:

    check1="";  //variable definida
    check2="";  //variable definida
    check3; //variable NO definida por falta de valor null.
    check4=""; //variable definida
    Hola1; //variable NO definida
    Hola2 =""; //variable definida
     
    Además eso haces en tu condicional en PHP
    Yo te mencione que lo puedes manejar con JS recuperando en una variable el valor del input seleccionado el cual si usas ajax puedes enviarlo a PHP el cual tienes que definir en tu hoja de PHP cuando esta activa o no a través de un condicional pero OJO que tenga dos valores en tu comparación para validar si esta activa o no... ya que solo verificas dicha variable... ademas sino puedes usar un value="activo" al momento de presionar el input recoje el valor y los envias a PHP a validar... puede hacer de varias formas...

    En internet puedes encontrar buscando tranquilamente varios ejemplos que también podrán ayudarte....
     
  5. Angel Paiba D&D

    Angel Paiba D&D Miembro

    Se incorporó:
    7 de Enero de 2016
    Mensajes:
    70
    Me gusta recibidos:
    4
    Puntos de trofeos:
    8
    Género:
    Hombre
    Ocupación:
    Estudiante
    Localización:
    Venezuela
    Página web:
    Listo, termine utilizando el mismo condigo, con el que empeze la solución era dejar así
    PHP:
    else{
    $check1 = "";
    }
    Ahora me da un error en otra parte que ya estaba pero me gustaria solucionarlo; <br /><b>Notice</b>: Undefined variable: password in

    el codigo es a´si
    PHP:
    if(isset($_POST['check1'])){
      $check1 = "TRUE";
    }else{
      $check1 = "";
    }

    if(isset($_POST['check2'])){
      $check2 = "TRUE";
    }else{
      $check2 = "";
    }

    if(isset($_POST['check3'])){
      $check3 = "TRUE";
    }else{
      $check3 = "";
    }

    if(isset($_POST['submit'])){
    // TRUE O FALSE EN LA OPCIÓN QUE QUIERAS AÑADIR
    $opc_letras = $check1; //  FALSE para quitar las letras
    $opc_numeros = $check2; // FALSE para quitar los números
    $opc_letrasMayus = $check3; // FALSE para quitar las letras mayúsculas
    $longitud = 4;
    $password = "";
    $letras ="abcdefghijklmnopqrstuvwxyz";
    $numeros = "1234567890";
    $letrasMayus = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $listado = "";
    if ($opc_letras == TRUE) {
        $listado .= $letras; }
    if ($opc_numeros == TRUE) {
        $listado .= $numeros; }
    if($opc_letrasMayus == TRUE) {
        $listado .= $letrasMayus; }
    str_shuffle($listado);
    for( $i=1; $i<=$longitud; $i++) {
    $password[$i] = $listado[rand(0,strlen($listado))];
    str_shuffle($listado);
    }
    foreach ($password as $dato_password) {
    }
      }
     
  6. gammafp

    gammafp
    Moderador
    Miembro del Equipo

    Se incorporó:
    12 de Enero de 2015
    Mensajes:
    773
    Me gusta recibidos:
    328
    Puntos de trofeos:
    63
    Género:
    Hombre
    Vale a parte de tu problema central en tu código he detectado unas cuantas malas prácticas que no deberías seguir.
    Primero: creas mas variables de las necesarias, en la primera parte cuando haces un if else para comprobar con el isset de que el check1..2..3 estan definidos.

    Segundo: esto ( if($opc_letras==TRUE) ) merece tabla porque lo que hace un if es comprobar si algo es TRUE o FALSE, por ejemplo si tienes ((2+2) == 4 ) el if comprobará si dos mas dos son cuatro y como son iguales pues es cierto y eso devolverá un TRUE (es cierto) y el if entrará.

    Si haces ( if($opc_letras==TRUE ) estas siendo muy redundante ya que anteriormente habías puesto la variable como true o false y solo basta hacer
    ( if($opc_letras) ) pero recuerda definir TRUE y no "TRUE" que es un string que luego el programa tendrá que trabajar un poco mas y pasarlo a boleano según tu caso.

    Tercero: la variable $password la asignas como si fuese un string ( "" ) pero luego le cambias su tipo y la pones como si fuese un array, lo que deberías hacer es declarar la variable $password como array, así: $password = [];

    Te he modificado el código agregando un operador ternario y refactorizandolo un poquito:

    PHP:
    <?php

    if (isset($_POST['submit'])) {

        // TRUE O FALSE EN LA OPCIÓN QUE QUIERAS AÑADIR
        $opc_letras = (isset($_POST['check1']))? TRUE : FALSE; //  FALSE para quitar las letras
        $opc_numeros = (isset($_POST['check2'])) ? TRUE : FALSE; // FALSE para quitar los números

        $opc_letrasMayus = (isset($_POST['check3'])) ? TRUE : FALSE; // FALSE para quitar las letras mayúsculas

        $longitud = 4;
        $password = [];
        $letras ="abcdefghijklmnopqrstuvwxyz";
        $numeros = "1234567890";
        $letrasMayus = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

        // esto se ha modificado el original era $listado = "";
        $listado = "No hay nada";

        if ($opc_letras) {
            $listado = ""; // Borrame
            $listado .= $letras;
        }
        if ($opc_numeros) {
            $listado = ""; // Borrame
            $listado .= $numeros;
        }

        for( $i=1; $i<=$longitud; $i++) {
            $password[$i] = $listado[rand(0,strlen($listado))];
            str_shuffle($listado);
        }
        foreach ($password as $dato_password) {
            echo $dato_password;
        }

      }
    Ahora puedes descargar el .zip mas abajo con un index que he creado de pruebas, para que pruebe jejej. Saludos.

    El código se puede mejorar aún mas.
     

    Archivos adjuntos:

    • prueba.zip
      Tamaño de archivo:
      959 bytes
      Visitas:
      2
    A Dawud le gusta esto.
  7. Angel Paiba D&D

    Angel Paiba D&D Miembro

    Se incorporó:
    7 de Enero de 2016
    Mensajes:
    70
    Me gusta recibidos:
    4
    Puntos de trofeos:
    8
    Género:
    Hombre
    Ocupación:
    Estudiante
    Localización:
    Venezuela
    Página web:
    Cuando están todos seleccionados no da un codigo conteniendo cada uno de los caracteres Mayuscylas minuculas numeros
     

Comparte esta página