Foros del Web » Programando para Internet » PHP »

salto de numeracion

Estas en el tema de salto de numeracion en el foro de PHP en Foros del Web. voy a poner un ejemplo de una tabla pequeña tabla factura id | numero_factura 01| 01 02| 03 03| 04 04| 06 me gustaria saber ...
  #1 (permalink)  
Antiguo 07/07/2014, 09:34
 
Fecha de Ingreso: diciembre-2013
Mensajes: 81
Antigüedad: 11 años
Puntos: 1
salto de numeracion

voy a poner un ejemplo de una tabla pequeña

tabla factura

id | numero_factura

01| 01
02| 03
03| 04
04| 06

me gustaria saber como puedo saber cuales son los numero_factura que faltan
que aqui seria el 02 y 05

saludos
  #2 (permalink)  
Antiguo 07/07/2014, 09:47
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: salto de numeracion

Tendrás q obtener todos los números, y mientras lo recorres en php, ir almacenando los que se produzca un salto...
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 07/07/2014, 09:53
 
Fecha de Ingreso: diciembre-2013
Mensajes: 81
Antigüedad: 11 años
Puntos: 1
Respuesta: salto de numeracion

este seria mi while

Código PHP:
Ver original
  1. $sql ="SELECT * FROM tbl_factura_electronica";
  2. //echo $sql;
  3. $dtsql = mysql_query($sql);
  4. if (mysql_num_rows($dtsql) > 0){
  5.     while ($data = @mysql_fetch_array($dtsql)) {
  6.         $id[]     = $data['id'];
  7.         $numero[] = $data['numero'];
  8.        
  9.     }
  10.     mysql_free_result($dtsql);
  11. }
  #4 (permalink)  
Antiguo 07/07/2014, 10:29
 
Fecha de Ingreso: diciembre-2013
Mensajes: 81
Antigüedad: 11 años
Puntos: 1
Respuesta: salto de numeracion

Ayuda porfavor
  #5 (permalink)  
Antiguo 07/07/2014, 11:34
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: salto de numeracion

Basta con que recorras el array con un bucle, pero utilizando los valores mínimo y máximo del mismo como intervalos. Luego, en cada iteración, verificas que el valor del contador del bucle esté en el array original; de no ser así, lo insertas en un segundo array que albergará a todos los valores que falten. Finalmente, muestras la lista de números faltantes.

Código PHP:
Ver original
  1. $array = array(1, 3, 4, 6); //Array original
  2. $faltan = array(); //Array para los valores faltantes
  3. $min = $array[0]; //Valor mínimo del array
  4. $max = $array[count($array) - 1]; //Valor máximo del array
  5. for ($i = $min; $i <= $max; $i++)
  6.     if (!in_array($i, $array)) //Si el valor del contador no está en el array
  7.         $faltan[] = $i; //Lo incluyo en el array de los faltantes
  8. echo 'Faltan los números: ' . implode(', ', $faltan); //Imprime '2, 5'

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 07/07/2014, 11:42
 
Fecha de Ingreso: diciembre-2013
Mensajes: 81
Antigüedad: 11 años
Puntos: 1
Respuesta: salto de numeracion

y en ese $array
como lo haria para la consulta en sql que seria esta

Código PHP:
Ver original
  1. $sql ="SELECT * FROM tbl_factura_electronica ORDER BY numero ASC";
  2. //echo $sql;
  3. $dtsql = mysql_query($sql);
  4. if (mysql_num_rows($dtsql) > 0){
  5.     while ($data = @mysql_fetch_array($dtsql)) {
  6.         $id[]     = $data['id'];
  7.         $numero[] = $data['numero'];
  8.         $fecha[]  = $data['fecha'];
  9.         $hora[]   = $data['hora'];
  10.     }
  11.     mysql_free_result($dtsql);
  12. }

Gracias por responder
  #7 (permalink)  
Antiguo 07/07/2014, 12:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: salto de numeracion

¿Te has fijado en dónde almacenas los números? ¿Es en el array $numero, verdad? Como veo que es así, pues ahí tienes el array que buscas y sobre el cual debes de operar.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 07/07/2014, 12:09
 
Fecha de Ingreso: diciembre-2013
Mensajes: 81
Antigüedad: 11 años
Puntos: 1
Respuesta: salto de numeracion

Código PHP:
Ver original
  1. $sql ="SELECT numero FROM tbl_factura_electronica ORDER BY numero ASC";
  2. //echo $sql;
  3. $dtsql = mysql_query($sql);
  4. if (mysql_num_rows($dtsql) > 0){
  5.     while ($data = @mysql_fetch_array($dtsql)) {
  6.         $id[]     = $data['id'];
  7.         $numero[] = $data['numero'];
  8.     }
  9.     mysql_free_result($dtsql);
  10. }
  11.               $array = array($numero); //Array original
  12.     $faltan = array(); //Array para los valores faltantes
  13.     $min = $array[0]; //Valor mínimo del array
  14.     $max = $array[count($array) - 1]; //Valor máximo del array
  15. for ($i = $min; $i <= $max; $i++)
  16.     if (!in_array($i, $array)) //Si el valor del contador no está en el array
  17.         $faltan[] = $i; //Lo incluyo en el array de los faltantes
  18. echo 'Faltan los números: ' . implode(', ', $faltan);

lo deje asi y no paso nada nose que hacer
  #9 (permalink)  
Antiguo 07/07/2014, 12:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: salto de numeracion

En lugar de $array, debes de usar el arreglo $numero. Olvídate de la línea en donde asigno valores al arreglo $array, reemplaza directamente con $numero en donde veas a $array. Usa tu lógica.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #10 (permalink)  
Antiguo 07/07/2014, 12:35
 
Fecha de Ingreso: diciembre-2013
Mensajes: 81
Antigüedad: 11 años
Puntos: 1
Respuesta: salto de numeracion

no amigo gracias
pero no me quiere resultar
  #11 (permalink)  
Antiguo 07/07/2014, 12:35
 
Fecha de Ingreso: diciembre-2013
Mensajes: 81
Antigüedad: 11 años
Puntos: 1
Respuesta: salto de numeracion

yo creo que tu lo puedes hacer pero yo no se como implementarse lo
  #12 (permalink)  
Antiguo 07/07/2014, 12:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: salto de numeracion

Lee con calma, detenidamente cada punto que te explique, hazlo una y otra vez hasta entenderlo. No es difícil, ya te di casi todo hecho, solamente tienes que reemplazar a $array por $numero y la línea en donde asigno valores a $array, elimínala, pues ya asignaste valores al array en el bucle while.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #13 (permalink)  
Antiguo 07/07/2014, 13:05
 
Fecha de Ingreso: diciembre-2013
Mensajes: 81
Antigüedad: 11 años
Puntos: 1
Respuesta: salto de numeracion

sigo sin poder ya no se que hacer
porfavor como lo harias tu ? ayudame
  #14 (permalink)  
Antiguo 08/07/2014, 08:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: salto de numeracion

A ver. Del primer código que te mostré:

Código PHP:
Ver original
  1. $array = array(1, 3, 4, 6); //Array original
  2. $faltan = array(); //Array para los valores faltantes
  3. $min = $array[0]; //Valor mínimo del array
  4. $max = $array[count($array) - 1]; //Valor máximo del array
  5. for ($i = $min; $i <= $max; $i++)
  6.     if (!in_array($i, $array)) //Si el valor del contador no está en el array
  7.         $faltan[] = $i; //Lo incluyo en el array de los faltantes
  8. echo 'Faltan los números: ' . implode(', ', $faltan); //Imprime '2, 5'

Elimina la línea 1 y en el resto de líneas en donde veas a la variable $array, sustitúyela por $numero, eso es lo que te vengo diciendo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: numeracion, salto, 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 21:17.