Foros del Web » Programando para Internet » PHP »

Formulario con IF

Estas en el tema de Formulario con IF en el foro de PHP en Foros del Web. Saludos, tengo una consulta con respecto a un formulario que estoy haciendo: Estoy desarrollando un sistema en PHP y MySQL y tengo que condicionar un ...
  #1 (permalink)  
Antiguo 23/12/2014, 11:44
 
Fecha de Ingreso: febrero-2006
Mensajes: 85
Antigüedad: 18 años, 9 meses
Puntos: 0
Formulario con IF

Saludos, tengo una consulta con respecto a un formulario que estoy haciendo:
Estoy desarrollando un sistema en PHP y MySQL y tengo que condicionar un formulario antes de que los datos pasen a la tabla.

Me explico. El usuario debe ingresar el producto que ha comprado para que se apruebe su compra. Y en este paso hay distintas condiciones de la tarjeta.

Por ejemplo, si la tarjeta comienza con (a modo de ejemplo)

123456 entonces es de Bc Premios
789456 entonces es de Platino
456789 Élite

el formulario es el siguiente:

Código HTML:
<form name="form1"  method="post" action="carrito_final.php"><table width="42%" border="0">
        <tr>
          <td width="45%">
            <input type="radio" name="radio" id="radio" value="1">
          BcPremios          </td>
          <td width="55%">&nbsp;</td>
        </tr>
        <tr>
          <td><input type="radio" name="radio" id="radio" value="2">
          Platino          </td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><input type="radio" name="radio" id="radio" value="3">
          Élite          </td>
          <td>&nbsp;</td>
        </tr>
        
        <tr>
          <td colspan="2">&nbsp;</td>
        </tr>
        <tr>
          <td colspan="2">Primeros 6 números de tarjeta BC</td>
        </tr>
        <tr>
          <td colspan="2"><input type="text" name="tarjeta" id="tarjeta"></td>
        </tr>
        <tr>
          <td colspan="2">Últimos 4 dígitos</td>
        </tr>
        <tr>
          <td colspan="2"><input type="text" name="tarjeta2" id="tarjeta2"></td>
        </tr>
        <tr>
          <td colspan="2">
            <input type="submit" name="button" id="button" value="Seleccionar">
          </td>
        </tr>
      </table>
      </form> 
Entonces luego de seleccionar en los radio button las opciones (Bc Premios, Platino y Elite) el cliente debe poner los primeros 6 dígitos de su tarjeta y es ahí en donde a la hora de hacer click en "Seleccionar" el sistema debe hacer la validación y si el número no corresponde con la opción que puso la consulta no puede hacerse.

Alguien podría ayudarme con esto, la verdad es que estoy algo confundido. Pues los datos no deben pasar a la tabla al menos que las condiciones se cumplan.

Desde ya gracias!

Gracias!
  #2 (permalink)  
Antiguo 23/12/2014, 11:49
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Formulario con IF

Y el código php que tienes para esto que estas explicando ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 23/12/2014, 12:45
 
Fecha de Ingreso: febrero-2006
Mensajes: 85
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Formulario con IF

Hola, gracias por tu respuesta, estoy en eso, por eso mi consulta, para ver si alguien ya hizo algo similar anteriormente o tiene alguna opción.
  #4 (permalink)  
Antiguo 23/12/2014, 12:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Formulario con IF

¿Confundido por qué?

Yo sólo entiendo que debes hacer ciertas comparaciones.

Código PHP:
Ver original
  1. function validarTarjeta($code) {
  2.   if (substr($code, 0, 5) === '12345') {
  3.     return [true, 'A'];
  4.   }
  5.  
  6.   if (substr($code, 0, 3) === 'xyz') {
  7.     return [true, 'B'];
  8.   }
  9.  
  10.   return [false, '?'];
  11. }
  12.  
  13. $tarjeta = '29384927349872394';
  14. list($esValida, $tipo) = validarTarjeta($tarjeta);
  15.  
  16. if ($esValida) {
  17.   echo "La tarjeta $tipo ($tarjeta) es válida";
  18. } else {
  19.   // ERROR
  20. }

¿Qué tiene de complejo eso?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 23/12/2014, 13:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Formulario con IF

Cita:
Iniciado por arcangelcross Ver Mensaje
Hola, gracias por tu respuesta, estoy en eso, por eso mi consulta, para ver si alguien ya hizo algo similar anteriormente o tiene alguna opción.
El 99,99% de los que desarrollan en PHP han tenido que hacer metodos de validación como el que describes. La mayoría de las veces (de acuerdo a lo que explicas) se usa Ajax, no PHP puro y simple, pero en definitva siempre se hace algo así.
Lo que te plantean que postees es aquello que realmente te está causandio dudas, pueso en FDW la idea es colaborar con los problemas de desarrollo, no proveer códigos a ciegas y de arriba.

¿Has creado alguna parte de esa validación que describes?
¿Algún intento mínimo?

Es más facil ayudar cuando quien preguntya muestra lo que intentó, así no describimso caminos y soluciones que ya se intentaron..

Postea el código, o explicita las dudas cocnretas. Así podremos guiarte mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 23/12/2014 a las 13:13
  #6 (permalink)  
Antiguo 23/12/2014, 15:02
 
Fecha de Ingreso: febrero-2006
Mensajes: 85
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Formulario con IF

Gracias por sus respuestas. Esto es lo que he hecho hasta ahora:

Código PHP:
Ver original
  1. <?php
  2.    
  3.      if($_POST) {
  4.      //var_dump($_POST);
  5.      $tarjeta = $_POST["tarjeta"];
  6.      $radio = $_POST["radio"];
  7.    
  8.  //var_dump($tarjeta);
  9.      
  10.  $claseTarjeta = "";
  11.  
  12.      if ($tarjeta == "456337" OR $tarjeta == "456338" OR
  13.          $tarjeta == "517784" OR $tarjeta == "493823" OR
  14.          $tarjeta == "541254" OR $tarjeta == "493824" OR
  15.          $tarjeta == "514006" OR $tarjeta == "529164" OR
  16.          $tarjeta == "529060" OR $tarjeta == "523592" AND
  17.          $radio == "1" )
  18.          {
  19.             $radio = 1;              
  20.        
  21.      }
  22.      
  23.      else {
  24.          echo "La tarjeta no coincide con el programa de lealtad ";
  25.          }
  26.      
  27.      if ($tarjeta == "410864" OR $tarjeta == "451418" OR
  28.          $tarjeta == "518439" OR $tarjeta == "524471"
  29.          AND   $radio == "2")
  30.          {
  31.             $radio = 2;              
  32.        
  33.      }
  34.      
  35.      else {
  36.          echo "La tarjeta no coincide con el programa de lealtad ";
  37.          }
  38.      
  39.  
  40.      if ($tarjeta == "552450" OR $tarjeta == "477280" OR
  41.          $tarjeta == "523587"  AND   $radio == "3")
  42.          {
  43.             $radio = 3;              
  44.        
  45.      }
  46.  
  47.  else {
  48.          echo "La tarjeta no coincide con el programa de lealtad ";
  49.          }
  50.      
  51.  
  52.      if ($tarjeta == "" ){
  53.         $msgTarjeta = "Ingrese los primeros seis dígitos de su tarjeta";
  54.         $claseTarjeta = "error";
  55.      }
  56.      
  57.      
  58.      }
  59.  
  60.     ?>

HTML:

Código HTML:
Ver original
  1. <form name="form1"  method="post" action="carrito_final.php">
  2.         <input type="radio" name="radio" id="radio2" value="<?php echo $radio; ?>">
  3.         <table width="42%" border="0">
  4.         <tr>
  5.           <td width="51%">
  6.         BN Premios          </td>
  7.           <td width="49%">&nbsp;</td>
  8.         </tr>
  9.         <tr>
  10.           <td><input type="radio" name="radio" id="radio" value="<?php echo $radio; ?>">
  11.           Platino          </td>
  12.           <td>&nbsp;</td>
  13.         </tr>
  14.         <tr>
  15.           <td><input type="radio" name="radio" id="radio" value="<?php echo $radio; ?>">
  16.           Élite          </td>
  17.           <td>&nbsp;</td>
  18.         </tr>
  19.        
  20.         <tr>
  21.           <td colspan="2">&nbsp;</td>
  22.         </tr>
  23.         <tr>
  24.           <td colspan="2">Primeros 6 números de tarjeta BN</td>
  25.         </tr>
  26.         <tr>
  27.           <td colspan="2"><input type="text" name="tarjeta" id="tarjeta" value="<?php echo $tarjeta; ?>"></td>
  28.         </tr>
  29.         <tr>
  30.           <td colspan="2">Últimos 4 dígitos</td>
  31.         </tr>
  32.         <tr>
  33.           <td colspan="2"><input type="text" name="tarjeta2" id="tarjeta2"></td>
  34.         </tr>
  35.         <tr>
  36.           <td colspan="2">
  37.             <input type="submit" name="button" id="button" value="Seleccionar">
  38.           </td>
  39.         </tr>
  40.       </table>
  41.       </form>


Si se valida, la página siguiente tiene esto:

Código PHP:
Ver original
  1. <?php if($_POST["radio"] == 1) {
  2.     ConfirmacionPago ($_POST["radio"]);
  3.     $contenido = 'Hola xxxxx;<br><br>Su solicitud de compra ha sido enviada....<br><p>';
  4.     $asunto = 'Solicitud de compra en ...';
  5.     EnvioCorreoHtml(ObtenerMailUsuario($_SESSION['MM_IdUsuario']), $contenido, $asunto)
  6.    
  7.    
  8.     ?>
  9.  
  10. //LO mismo para 2 y  3, sólo que cambia el mensaje
  11.  
  12. //Funcion ConfirmacionPago
  13.  
  14.  
  15. function ConfirmacionPago ($tipo_pago)
  16.  
  17. {  
  18.     global $database_conexion, $conexion;
  19.     mysql_select_db($database_conexion, $conexion);
  20.    
  21.      $insertSQL = sprintf("INSERT INTO compra (idUsuario, fechacompra, tipopago, totalpago, totalpuntos) VALUES (%s, NOW(), %s, %s, %s )",
  22.                        GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
  23.                        $tipo_pago,
  24.                        $_SESSION["TotalPrecio"],
  25.                        $_SESSION["TotalPuntos"]
  26.                        );
  27.  
  28.    $Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());
  29.    $ultimacompra = mysql_insert_id();  
  30.    ActualizacionCarrito($ultimacompra);
  31.    
  32.   }  
  33.  
  34.  
  35. function TextoFormaPago($TipoPago)
  36.  
  37. {
  38.     if ($TipoPago== 1) return " Bc Premios";
  39.     if ($TipoPago== 2) return " Platino";
  40.     if ($TipoPago== 3) return " Élite";
  41.    
  42.    
  43.    
  44.     }


Antes de hacer la validación me funcionaba todo. El problema es cuando intento validarlo con este código que hice.

Alguien me podría ayudar a ver en dónde está el error.

Ahora, en la pagina, el campo tarjeta me muestra el siguiente mensaje:


<br /><b>Notice</b>: Undefined variable: tarjeta in <b>C:\xampp\htdocs\xampp\mallfinal\carrito_pago.ph p</b> on line <b>100</b><br />

Lo extraño que esa variable la definí en $tarjeta = $_POST["tarjeta"];

Desde ya agradezco sus comentarios.

PD. La validación prefiero hacerla con PHP y no con Javascript porque prefiero que esta se haga en el lado del servidor y no en el lado del cliente.

Etiquetas: formulario, mysql, 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 14:42.