Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Contar textbox con valor mayor de 0

Estas en el tema de Contar textbox con valor mayor de 0 en el foro de PHP en Foros del Web. Buenas, tengo varios textbox ( ahora mismo son 35) inicialmente todos tienen valor 0, luego el usuario va cambiando esos valores, tengo un textbox donde ...
  #1 (permalink)  
Antiguo 09/10/2016, 16:15
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años
Puntos: 1
Contar textbox con valor mayor de 0

Buenas, tengo varios textbox ( ahora mismo son 35) inicialmente todos tienen valor 0, luego el usuario va cambiando esos valores, tengo un textbox donde me varealizando la suma total .
Pero ahora también necesito que me cuente cuántos textbox tienen un valor >1, he estado y lo único que encuentro son códigos para contar los caracteres que hay dentro de un textbox.

Gracias de antemano
  #2 (permalink)  
Antiguo 09/10/2016, 17:13
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Contar textbox con valor mayor de 0

no lo probé pero ve como andas con esto:

Código Javascript:
Ver original
  1. function test(){
  2. var elems = document.getElementsByName("see");
  3. var ret = 0;
  4.     for(var k=0;k<elems.length;k++){
  5.         if(parseInt(elems[k].value) > 1){ ret++; }
  6.     }
  7. return ret;
  8. }

Código HTML:
Ver original
  1. <input type="text" name="see" value="0" />
  2. <input type="text" name="see" value="0" />
  3. ...
  4. <input type="text" name="see" value="0" />
  5. <input type="text" name="see" value="0" />

EDITO: Esto debe ir en js, pide que lo muevan :P


Última edición por alvaro_trewhela; 09/10/2016 a las 17:53
  #3 (permalink)  
Antiguo 11/10/2016, 07:04
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años
Puntos: 1
Respuesta: Contar textbox con valor mayor de 0

Gracias, lo he adaptado y va de maravillas, pero también tengo un problema, ahora todos los input tienen el mismo nombre y no sé como enviar la información por POST.
actualmente tengo esto:
Cita:
<script>
function test(){
//alert("Hola");
var elems = document.getElementsByName("tienda");
var ret = 0;
for(var k=0;k<elems.length;k++){
if(parseInt(elems[k].value) > 0){ ret++; }
}
/////return ret;
if( ret > 1){
alert(ret + ' Expediciones');
}
else{
alert(ret + ' Expedición');
}

}
</script>
<script type="text/javascript">
/**

* Funcion que se ejecuta cada vez que se añade una letra en un cuadro de texto

* Suma los valores de los cuadros de texto

*/

function sumar()
{
//var n1 = parseInt(document.sugerencias.nombre02.value);
var v1=verificar("nombre02");
var v2=verificar("nombre03");
var v3=verificar("nombre05");
var v4=verificar("nombre06");
var v5=verificar("nombre07");
var v6=verificar("nombre08");
var v7=verificar("nombre09");
var v8=verificar("nombre10");
var v9=verificar("nombre11");
var v10=verificar("nombre12");
var v11=verificar("nombre14");
var v12=verificar("nombre15");
var v13=verificar("nombre16");
var v14=verificar("nombre17");
var v15=verificar("nombre18");
var v16=verificar("nombre19");
var v17=verificar("nombre20");
var v18=verificar("nombre21");
var v19=verificar("nombre22");
var v20=verificar("nombre24");
var v21=verificar("nombre25");
var v22=verificar("nombre26");
var v23=verificar("nombre27");
var v24=verificar("nombre28");
var v25=verificar("nombre29");
var v26=verificar("nombre30");
var v27=verificar("nombre31");
var v28=verificar("nombre32");
var v29=verificar("nombre33");
var v30=verificar("nombre101");
var v31=verificar("nombre103");
var v32=verificar("nombre104");
var v33=verificar("nombre107");
// realizamos la suma de los valores y los ponemos en la casilla del

// formulario que contiene el total
document.getElementById("total").value=parseFloat( v1)+parseFloat(v2)+parseFloat(v3)+parseFloat(v4)+p arseFloat(v5)+parseFloat(v6)+parseFloat(v7)+parseF loat(v8)+parseFloat(v9)+parseFloat(v10)+parseFloat (v11)+parseFloat(v12)+parseFloat(v13)+parseFloat(v 14)+parseFloat(v15)+parseFloat(v16)+parseFloat(v17 )+parseFloat(v18)+parseFloat(v19)+parseFloat(v20)+ parseFloat(v21)+parseFloat(v22)+parseFloat(v23)+pa rseFloat(v24)+parseFloat(v25)+parseFloat(v26)+pars eFloat(v27)+parseFloat(v28)+parseFloat(v29)+parseF loat(v30)+parseFloat(v31)+parseFloat(v32)+parseFlo at(v33);
}

/**

* Funcion para verificar los valores de los cuadros de texto. Si no es un

* valor numerico, cambia de color el borde del cuadro de texto

*/

function verificar(id)
{
var obj=document.getElementById(id);
if(obj.value=="")
value="0";
else
value=obj.value;
if(validate_importe(value,1))
{
// marcamos como erroneo

obj.style.borderColor="#808080";
return value;
}else{
// marcamos como erroneo

obj.style.borderColor="#f00";
return 0;
}
}

/**

* Funcion para validar el importe

* Tiene que recibir:

* El valor del importe (Ej. document.formName.operator)

* Determina si permite o no decimales [1-si|0-no]

* Devuelve:

* true-Todo correcto

* false-Incorrecto

*/

function validate_importe(value,decimal)
{
if(decimal==undefined)
decimal=0;

if(decimal==1)
{
// Permite decimales tanto por . como por ,

var patron=new RegExp("^[0-9]+((,|\.)[0-9]{1,2})?$");
}else{
// Numero entero normal

var patron=new RegExp("^([0-9])*$")
}

if(value && value.search(patron)==0)
{
return true;
}
return false;
}
</script>
<script>
function checkSubmit() {
document.getElementById("enviar").value = "Enviando...";
document.getElementById("enviar").disabled = true;
return true;
}

</script>
<form id="sugerencias" name="sugerencias" method="post" action="sugerencias_send1.php" enctype="multipart/form-data" onsubmit="return checkSubmit();">
<div class="multiple">
<table width="1200" border="0">
<!--Inicio Tienda 02 -->
<tr>
<td width="216" style="font-size: 20px"><span style="color: #000; text-align: left;">Bultos para Tienda 02</span>:</td>
<td width="359"><span id="sprytextfield1">
<label>
<input type="text" name="tienda" id="nombre02" value="0" onkeyup="sumar();"/>
</label>
</span></td>
<td width="48">&nbsp;</td>

<!-- Fin tienda 02 -->
<!--Inicio Tienda 03 -->

<td width="216" style="font-size: 20px"><span style="color: #000; text-align: left;">Bultos para Tienda 03</span>:</td>
<td width="359"><span id="sprytextfield1">
<label>
<input type="text" name="tienda" id="nombre03" value="0" onkeyup="sumar();"/>
</label>
</span></td>
<td width="48">&nbsp;</td>
</tr>
<input type="submit" name="enviar" id="enviar" value="Enviar " />
</label>
</tr>
<tr>


</div>

</table>
</form>
<tr> <td style="font-size: 20px; color: #000;">Número de Bultos:</td>
<td>
<label>
<input style="font-family: Arial; font-size: 10pt; background-color: #00FF00; text-align:center" type="text" name="total" id="total" size="20" disabled value="0" readonly/>
</label>
</td>
</tr>
</label>
<tr>
<td>
<input class="botones" type="button" value="Número de Expediciones" onclick="test();"/>
</td>
</tr>
he probado a buscar alguna manera de pasarlo haciendo solo referencia al ID de cada input pero no veo nada.

he realizado pruebas pero ninguno me funciona
  #4 (permalink)  
Antiguo 11/10/2016, 10:21
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Contar textbox con valor mayor de 0

Creo que fuí yo quien entendió mal, lo quieres todo en php:

Código PHP:
Ver original
  1. <html>
  2.     <head>
  3.     </head>
  4.     <body>
  5.         <form method="post" action="">
  6.             <input type="text" name="see[]" value="0" /><br/>
  7.             <input type="text" name="see[]" value="0" /><br/>
  8.             <input type="text" name="see[]" value="0" /><br/>
  9.        
  10.             <input type="submit" value="GO!" name="send" />
  11.         </form><br/><br/>
  12.        
  13.         <?php
  14.  
  15.         if(isset($_POST["send"])){
  16.         $mayor1 = 0;
  17.             for($k=0;$k<sizeof($_POST["see"]);$k++){
  18.             echo $_POST["see"][$k]."<br/>";
  19.                 if(intval($_POST["see"][$k])>1){ $mayor1++; }
  20.             }
  21.         echo "Hay $mayor1 mayor que 1";
  22.         }
  23.         ?>
  24.        
  25.     </body>
  26. </html>

El truquito es ponerle [] al name, para que php lo "lea" como un array

de todos modos, te dejo tanto el js como el php:

Código HTML:
Ver original
  1.     <head>
  2.         <script type="text/javascript">
  3.         function test(){
  4.         var els = document.getElementsByName("see[]");
  5.         var r = 0;
  6.             for(var k=0;k<els.length;k++){
  7.                 if(parseInt(els[k].value)>1){ r++; }
  8.             }
  9.         return r;
  10.         }
  11.         </script>
  12.     </head>
  13.     <body>
  14.         <form method="post" action="">
  15.             <input type="text" name="see[]" value="0" /><br/>
  16.             <input type="text" name="see[]" value="0" /><br/>
  17.             <input type="text" name="see[]" value="0" /><br/>
  18.             <input type="submit" value="ACCION PHP!" name="send" />
  19.         </form><br/><br/>
  20.         <button onclick="alert(test());">ACCION JS!</button><br/><br/>
  21.        
  22.         <?php
  23.  
  24.         if(isset($_POST["send"])){
  25.         $mayor1 = 0;
  26.             for($k=0;$k<sizeof($_POST["see"]);$k++){
  27.             echo $_POST["see"][$k]."<br/>";
  28.                 if(intval($_POST["see"][$k])>1){ $mayor1++; }
  29.             }
  30.         echo "Hay $mayor1 mayor que 1";
  31.         }
  32.         ?>
  33.            
  34.     </body>
  35. </html>

edito: En vez de escribir a mano todos los inputs, te recomiendo usar un bucle for:

Código PHP:
Ver original
  1. $n=35; // nums de inputs.
  2.  
  3. for($k=0;$k<$n;$k++){
  4. echo '<input type="text" name="see[]" value="0" /><br/>';
  5. }


Última edición por alvaro_trewhela; 11/10/2016 a las 12:54
  #5 (permalink)  
Antiguo 11/10/2016, 13:40
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años
Puntos: 1
Respuesta: Contar textbox con valor mayor de 0

Gracias, por tu paciencia, he probado lo que me pones,, y hay una cosa el código de JavaScript que contaba aquellos inputs cuyo valor es mayor que cero no cuenta, siempre sale 0, lo he copiado tal cual para ver que no estaba haciendo nada mal.

Luego quiero explicar lo que hago actualmente con esto.
en esta hoja rellenan los inputs con el número de cajas que van a enviar, por eso tengo un input donde me suma el numero de cajas, pero también quieren el numero de expediciones que son "simplemente el recuento de inputs diferentes a cero".

una vez comprobado envío todos los valores de los inputs a otra hoja que envía un email con todos los envíos a cada centro.

Lo digo porque no veo muy bien como voy a recuperar cada variable , a veces me lio un poco con los arrays.

disculpa por las molestias
  #6 (permalink)  
Antiguo 11/10/2016, 14:19
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años
Puntos: 1
Respuesta: Contar textbox con valor mayor de 0

Vale ya he solucionado lo de contar así:

Código PHP:
<html>
    <head>
        
<script>
function test(){
    //alert("Hola");
var elems = document.getElementsByName("nombre[]");
var ret = 0;
    for(var k=0;k<elems.length;k++){
            if(parseInt(elems[k].value) > 0){ ret++; }
    }
/////return ret;
if( ret > 1){
alert(ret + '  Expediciones');    
}
else{
alert(ret + '  Expedición');    
}

}
</script>

       
    </head>
    <body>
        <form method="post" action="">
            <input type="text" name="nombre[]" value="0" /><br/>
            <input type="text" name="nombre[]" value="0" /><br/>
            <input type="text" name="nombre[]" value="0" /><br/>
           <input type="submit" value="ACCION PHP!" name="send" />
        </form><br/><br/>
  <!--      <button onclick="alert(test());">ACCION JS!</button><br/><br/>-->
        <input class="botones" type="button" value="Número de Expediciones"   onclick="test();"/>
        <?php
 
        
if(isset($_POST["send"])){
        
$mayor1 0;
            for(
$k=0;$k<sizeof($_POST["nombre"]);$k++){
            echo 
$_POST["nombre"][$k]."<br/>";
                if(
intval($_POST["nombre"][$k])>1){ $mayor1++; }
            }
        echo 
"Hay $mayor1 mayor que 1";
        }
        
?>
            
    </body>
</html>
ahora voy a darle vueltas para pasar esas variables
  #7 (permalink)  
Antiguo 11/10/2016, 14:41
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Contar textbox con valor mayor de 0

La cosa es que vayas entendiendo,

OK
  #8 (permalink)  
Antiguo 11/10/2016, 14:54
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años
Puntos: 1
Respuesta: Contar textbox con valor mayor de 0

bueno ya lo voy pasando a otra pagina, bien ahora lo que no sé es como paso

Código PHP:
<?php

        
if(isset($_POST["send"])){
        
$mayor1 0;
            for(
$k=0;$k<sizeof($_POST["nombre"]);$k++){


$fecha='10/10/2016';        
echo 
$cuerpo='
        <tr>
         <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><spanHelvetica LT Condensed"; font-size: 18px;"><span style="font-weight: bold">Tienda 02:</span>&nbsp; '
.$_POST["nombre"][$k].' '.' Bultos enviados el'.' '.$fecha.'</span> &nbsp; <spanHelvetica LT Condensed"; font-size: 18px;">&nbsp;</span></td>
        </tr>
        <tr>
         <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><spanHelvetica LT Condensed"; font-size: 18px;"><span style="font-weight: bold">Tienda 03:</span>&nbsp; '
.$_POST["nombre"][$k].' '.' Bultos enviados el'.' '.$fecha.'</span> &nbsp; <spanHelvetica LT Condensed"; font-size: 18px;">&nbsp;</span></td>
        </tr>
        <tr>
         <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><spanHelvetica LT Condensed"; font-size: 18px;"><span style="font-weight: bold">Tienda 05:</span>&nbsp; '
.$_POST["nombre"][$k].' '.' Bultos enviados el'.' '.$fecha.'</span> &nbsp; <spanHelvetica LT Condensed"; font-size: 18px;">&nbsp;</span></td>
        </tr>
        '
;
    }    }
?>
si lo pongo así recibo por cada todas las variables en cada línea y solo deseo rebir la primera en la primera , la segunda en la segunda , etc..

ya sé que se repite por el for.

Gracias por la paciencia
  #9 (permalink)  
Antiguo 11/10/2016, 15:10
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años
Puntos: 1
Respuesta: Contar textbox con valor mayor de 0

Buenas, ya lo tengo, luego pongo el resultado
  #10 (permalink)  
Antiguo 12/10/2016, 10:59
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Contar textbox con valor mayor de 0

Hola fab2160225,

Yo esto:

Cita:
Iniciado por fab2160225 Ver Mensaje
Código PHP:
<?php
echo $cuerpo='
        <tr>
         <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><spanHelvetica LT Condensed"; font-size: 18px;"><span style="font-weight: bold">Tienda 02:</span>&nbsp; '
.$_POST["nombre"][$k].' '.' Bultos enviados el'.' '.$fecha.'</span> &nbsp; <spanHelvetica LT Condensed"; font-size: 18px;">&nbsp;</span></td>
        </tr>
        <tr>
         <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><spanHelvetica LT Condensed"; font-size: 18px;"><span style="font-weight: bold">Tienda 03:</span>&nbsp; '
.$_POST["nombre"][$k].' '.' Bultos enviados el'.' '.$fecha.'</span> &nbsp; <spanHelvetica LT Condensed"; font-size: 18px;">&nbsp;</span></td>
        </tr>
        <tr>
         <td style="font-family: Helvetica LT Condensed; font-size: 18px;"><spanHelvetica LT Condensed"; font-size: 18px;"><span style="font-weight: bold">Tienda 05:</span>&nbsp; '
.$_POST["nombre"][$k].' '.' Bultos enviados el'.' '.$fecha.'</span> &nbsp; <spanHelvetica LT Condensed"; font-size: 18px;">&nbsp;</span></td>
        </tr>
        '
;
?>
Lo pondría así, más que nada por evitar código HTML innecesario:

Código PHP:
echo $cuerpo='
        <tr>
         <td style="font-family: Helvetica LT Condensed; font-size:  18px;"><span  style="font-weight: bold">Tienda 02:</span>&nbsp;  '
.$_POST["nombre"][$k].' '.' Bultos enviados el'.'  '.$fecha.'</td>
        </tr>
        <tr>
         <td style="font-family: Helvetica LT Condensed; font-size:  18px;"><span  style="font-weight: bold">Tienda 03:</span>&nbsp;  '
.$_POST["nombre"][$k].' '.' Bultos enviados el'.'  '.$fecha.'</td>
        </tr>
        <tr>
         <td style="font-family: Helvetica LT Condensed; font-size:  18px;"><span  style="font-weight: bold">Tienda 05:</span>&nbsp;  '
.$_POST["nombre"][$k].' '.' Bultos enviados el'.'  '.$fecha.'</td>
        </tr>
        '

  #11 (permalink)  
Antiguo 12/10/2016, 23:54
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años
Puntos: 1
Respuesta: Contar textbox con valor mayor de 0

Buenas, así lo recibo perfecto




Código PHP:
 <tr>
          <
td style="font-family: Helvetica LT Condensed; font-size: 18px;"><spanHelvetica LT Condensed"; font-size: 18px;"><span style="font-weight: bold">Tienda 02:</span>&nbsp'.$nombre[0].' '.' Bultos enviados el'.' '.$fecha.'</span> &nbsp; <spanHelvetica LT Condensed"; font-size: 18px;">&nbsp;</span></td>
        </
tr
Gracias a todos

Etiquetas: mayor, textbox, valor
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 08:24.