Foros del Web » Programando para Internet » PHP »

Trabajando con pagos...

Estas en el tema de Trabajando con pagos... en el foro de PHP en Foros del Web. Estoy haciendo lo siguiente tengo un formulario donde elijo los meses que deseo pagar… seleccionándolos con un checkbox Este es el código 1.php Código PHP: ...
  #1 (permalink)  
Antiguo 06/01/2014, 12:19
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Trabajando con pagos...

Estoy haciendo lo siguiente tengo un formulario donde elijo los meses que deseo pagar… seleccionándolos con un checkbox
Este es el código 1.php
Código PHP:

<td><input type="checkbox\" name=\"clases[]\" value=\"".$pagos ['id_mensualidad']."\"></td> 
            </tr>"

        } 
        echo 
"<tr> 
            <td> 
             
<input type=\"submit\" value=\"Pagos realizados\"> 
            </td> 
            </tr>"

    } 
     
    echo 
"</table></form>"
?> 
Después de elegir los meses proceso otro archivo comprobar_pagos.php
Aquí muestro los meses elegidos… pero además de esto verifico que no tengan precedentes (meses previos obligatorios a pagar). Hasta acá voy bien… ejemplo si elijo Enero ,Febrero …
Enero no tiene precedente …. Febrero si (Enero)…
Entonces me muestra mis datos y una imagen si no tiene precedente pagar… en caso contrario bloquea el pago
Clave…..Mes….…Imagen
1………...Enero…..pagar.png
2………...Febrero...pagobloqueado.png
Bien hasta acá todo bien… pero tengo que hacer unos cambios…. Ejemplo si selecciono Febrero solamente me muestre la imagen de bloqueo (ya lo hace)… pero si selecciono Enero… y Febrero… es decir el mes y su precedente… no quede bloqueado sino que deje pagar (hasta ahora muestra en Enero pagar, Febrero bloqueado)….
Trabajo con dos tablas…
Mensualidades… y pagos…
Este es mi código
Código PHP:
comprobar_pagos.php
…if
(!isset($_POST['clases'])){    
    }
    
$clases $_POST['clases'];
    
    echo 
"<table>
            <tr>
            <td>Clave</td>
            <td>Mes</td>
                
            </tr>"
;
if ( !empty(
$_POST['clases']) && is_array($_POST['clases']))

    foreach(
$clases as $clase){
    
$q_clase =($clase);
$query_precedente "SELECT M.Mes FROM mensualidades AS M WHERE M.id_mensualidad= (SELECT MI.precede  FROM mensualidades AS MI where MI.id_mensualidad= '$q_clase')";

        
$query_precedente_detalle "SELECT M.Mes, M.precede FROM mensualidades AS M WHERE M.id_ mensualidad = (SELECT MI.precede FROM mensualidades AS MI, pagos AS CI WHERE and MI.id_mensualidad= CI.id_mensualidad = '$q_clase')";
        
        
$result_precedente = @mysql_query($query_precedente$connection) or die(mysql_error());
        
        
$filas = @mysql_num_rows($result_precedente);
        
$tiene_precedente true;
        if(
$filas == 0){
            
$tiene_precedente false;
        }else{
        
$precedente = @mysql_fetch_array($result_precedente);
        
$mes $precedente['Mes'];
            
$result_precedente_detalle = @mysql_query($query_precedente_detalle$connection) or die(mysql_error());
$filas = @mysql_num_rows($result_precedente_detalle);
if(
$filas == 0){
$errores[$clase] = "No se a registrado el pago previo del Mes de: $mes";
            
            }
                else{
                
$errores[$clase]='0';
            }
        }
        
        
$query_clase "SELECT * from mensualidades WHERE id_mensualidad = '$q_clase'";
        
        
$result_clase = @mysql_query($query_clase$connection) or die(mysql_error());
        
        
$filas = @mysql_num_rows($result_clase);
        if(
$filas != 0){
        
$clase = @mysql_fetch_array($result_clase);
$query_precedente_detalle "SELECT M.Mes, M.precede FROM mensualidades AS M WHERE M.id_ mensualidad = (SELECT MI.precede FROM mensualidades AS MI, pagos AS CI WHERE and MI.id_mensualidad= CI.id_mensualidad = '$q_clase')";
        
$result_precedente = @mysql_query($query_precedente$connection) or die(mysql_error());
        
$filas mysql_num_rows($result_precedente);
        
$tiene_precedente true;
            echo 
"<tr>
                     <td>"
.$clase['id_mensualidad']."</td>
            <td>"
.$clase['Mes']."</td>
         <td>"

        
$filas7='';
        
        if(
$filas == 0){
            
$tiene_precedente false;
            echo 
"<a href='addToCart.php?id={$clase['id_mensualidad']}&name={$clase['Mes']}' class='customButton'>";
            echo 
"<img src='images/Carrito.png' title='Pagar' />";
        }else{
            
$precedente mysql_fetch_array($result_precedente);
            
$materia $precedente['Mes'];
            
            
$result_precedente_detalle mysql_query($query_precedente_detalle$connection) or die(mysql_error());
            
$filas mysql_num_rows($result_precedente_detalle);
            if(
$filas == 0){
                
                echo 
"<img src='images/pagoBloqueado.png' title='Realice el Pago Previo' />";
            }
        }
            
"</td>        
                </tr>"
;
        }else{
            echo 
"<tr><td colspan=6>No seleccionó mes</td></td></tr>";
        }
    }
    
    echo 
"<tr>
            
        </tr>"
;
        
    
    echo 
"</table>";
    
    
?> 

Gracias
  #2 (permalink)  
Antiguo 06/01/2014, 12:44
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Trabajando con pagos...

Se me ocurre que podría contar el numero de check seleccionados... si es uno haga el proceso igual... en caso contrario a todos les habilite el pago... pero hay un problema si por ejemplo tengo 3 meses..
Enero
Febrero precedente Enero
Marzo precedente Febrero

si selecciono Enero... y Marzo y deja pagar... porque se selecciono mas de uno....
estaría mal... ya que se selecciono Marzo sin Febrero q es su precedente :s
  #3 (permalink)  
Antiguo 06/01/2014, 13:33
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Trabajando con pagos...

Como podría checar que en los seleccionados si hay uno con precedente... tambien lo halla seleccionado????
  #4 (permalink)  
Antiguo 06/01/2014, 16:04
 
Fecha de Ingreso: enero-2012
Ubicación: <?php echo"Los teques"; ?>/////estado miranda
Mensajes: 196
Antigüedad: 12 años, 3 meses
Puntos: 9
Respuesta: Trabajando con pagos...

que tal si agregas un poco de javascript, compruebas previamente si un mes tiene precedente, y en caso de que lo tengas obligas a que se cheque cuando chequen el otro, un ejemplo

Mes PRE Check
E N/A
F E
M F

y con el javascript, si marcas marzo, se marca automaticamente febrero, y por ende se marcaria enero, puedes hacer esto mismo con php, pero despues del codigo....

con unos if...
  #5 (permalink)  
Antiguo 06/01/2014, 16:23
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Trabajando con pagos...

Si lo estoy entendiendo bien, todo se reduce a que : una vez que se encuentre 1 mes sin seleccionar, todos los siguientes deben estar sin seleccionar.
  #6 (permalink)  
Antiguo 06/01/2014, 16:40
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Trabajando con pagos...

Cita:
Iniciado por omarinfinito Ver Mensaje
que tal si agregas un poco de javascript, compruebas previamente si un mes tiene precedente, y en caso de que lo tengas obligas a que se cheque cuando chequen el otro, un ejemplo

Mes PRE Check
E N/A
F E
M F

y con el javascript, si marcas marzo, se marca automaticamente febrero, y por ende se marcaria enero, puedes hacer esto mismo con php, pero despues del codigo....

con unos if...
Gracias pero javascript se me complica mucho :s
y con php solo tengo la idea pero no termino de "imaginar"... que modificar
  #7 (permalink)  
Antiguo 06/01/2014, 16:41
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Trabajando con pagos...

Cita:
Iniciado por dashtrash Ver Mensaje
Si lo estoy entendiendo bien, todo se reduce a que : una vez que se encuentre 1 mes sin seleccionar, todos los siguientes deben estar sin seleccionar.
Nop... lo que debo hacer es checar precedente ejemplo si seleeciono Enero, Febrero... deben poder pagarse los dos... si selecciono solo Enero se paga porque no tiene precedente... si selecciono solo Febrero se bloquea...
  #8 (permalink)  
Antiguo 06/01/2014, 17:13
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Trabajando con pagos...

Es exactamente lo que te he dicho."Si se encuentra solo Febrero, se bloquea" significa que una vez encontrado uno sin seleccionar (Enero), todo el resto debe estar sin seleccionar (por tanto, Febrero no puede estar seleccionado).
  #9 (permalink)  
Antiguo 06/01/2014, 17:22
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Trabajando con pagos...

Cita:
Iniciado por dashtrash Ver Mensaje
Es exactamente lo que te he dicho."Si se encuentra solo Febrero, se bloquea" significa que una vez encontrado uno sin seleccionar (Enero), todo el resto debe estar sin seleccionar (por tanto, Febrero no puede estar seleccionado).
Sip algo asi pero si no tiene precedente el mes seleccionado aunque sea uno solo seleccionado no se debe bloquear
  #10 (permalink)  
Antiguo 06/01/2014, 17:33
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Trabajando con pagos...

esta consulta es la que utilizo para mostrar la imagen para pagar o bloquear pago
$query_precedente = "SELECT M.Mes FROM mensualidades AS M WHERE M.id_mensualidad= (SELECT MI.precede FROMmensualidades AS MI where MI.id_mensualidad= '$q_clase')";


$query_precedente_detalle = "SELECT M.Mes, M.precede FROM mensualidades AS M WHERE M.id_ mensualidad = (SELECT MI.precede FROM mensualidades AS MI, pagos AS CI WHERE and MI.id_mensualidad= CI.id_mensualidad = '$q_clase')";
pero lo unico que hago es checar si hay precedente se bloquea...

que podría agregar para q aun teniendo precedente si esta seleccionado el mes... y su previo... ejemplo Enero y Febrero... se activen los dos

Última edición por Briss; 06/01/2014 a las 17:59
  #11 (permalink)  
Antiguo 06/01/2014, 18:19
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Trabajando con pagos...

Como puedo verificar que se selecciono un mes junto con su precedente

Etiquetas: formulario, mysql, select, sql, 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 09:33.