Foros del Web » Programando para Internet » PHP »

ayuda con este script de numeros...

Estas en el tema de ayuda con este script de numeros... en el foro de PHP en Foros del Web. hola amigos tengo este escript para saber que numeros faltan. Código PHP: $sql = mysql_query ( "select numero from numero order by numero" , $link ); $contador = 1 ;  //o el primer valor de la base de datos ...
  #1 (permalink)  
Antiguo 10/04/2008, 09:20
 
Fecha de Ingreso: marzo-2005
Mensajes: 372
Antigüedad: 19 años, 1 mes
Puntos: 1
ayuda con este script de numeros...

hola amigos tengo este escript para saber que numeros faltan.

Código PHP:
$sql=mysql_query("select numero from numero order by numero",$link);

$contador=1//o el primer valor de la base de datos

while($numero=mysql_fetch_assoc($sql)){

   if(
$contador==$numero[numero]){  //si el contador es igual al contenido de numero es que sigue el orden.
    
echo "El folio $numero[numero] existe <br />";
    
$contador++;
   }
   else
   {   
//si no es igual, entonces falta el folio de $contador
    
echo "El folio $contador NO existe <br />";
    echo 
"El folio $numero[numero] existe <br />";
   
$contador=$numero[numero]+1;
}
 

si me sirve y me muestra si falta un numero, pero mi problema esta si faltan de dos numeros en adelante ejemplo:

si es un numero el que falta si funciona con el script de arriba:

1 existe
2 existe
3 no existe
4 existe
5 existe
6 no existe
..

pero quiero modificarlo para que me realize lo siguiente:
como puedo realizar esto:

1 existe
2 existe
3 no existe
4 no existe
5 existe
6 existe
7 no existe
8 existe
9 no existe
10 no existe
11 no existe
12 no existe
13 existe
...
gracias por su ayuda amigos.
  #2 (permalink)  
Antiguo 10/04/2008, 10:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: ayuda con este script de numeros...

vaya, el numero a comparar siempre es variable... no sirve!! deberias tener otro arreglo con los numeros que si son constantes ((para compararlos)) ademas es sencillo usando in_array() ¿voy mal?

osea... paso el 1 y existio, lo incrementas... sino, lo igualas al folio del actual + 1 ... no, no... obvio, y si el numero que sigue ya ha sido superado... pues ya no sirve, .... huh
  #3 (permalink)  
Antiguo 10/04/2008, 10:40
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: ayuda con este script de numeros...

Hola dancresi,
Prueba así:

Código PHP:
$sql=mysql_query("select numero from numero",$link); 
 
$maximo 0;
while(
$numero=mysql_fetch_assoc($sql)){ 
$ArrayNum[$numero['numero']] = $numero['numero'];
if (
$numero['numero'] > $maximo)
$maximo $numero['numero'];
}
 
for (
$i=1;$i<=$maximo;$i++) {
if (
$ArrayNum[$i])
echo 
"El folio $i existe <br />"
else
echo 
"El folio $i no existe <br />"

Me comentas que tal...
  #4 (permalink)  
Antiguo 10/04/2008, 11:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 372
Antigüedad: 19 años, 1 mes
Puntos: 1
Re: ayuda con este script de numeros...

Si Es Correcto Lo Que Hace, Oye Otra Pregunta Ya Que Tengo Esto Como Puedo Hacer La Siguiente Salida De Datos:

Esto Me Hace Tu Codigo, Lo Cual Es Correcto

1 Existe
2 Existe
3 No Existe
4 Existe
5 No Existe
6 No Existe
7 Existe
...

Pero Necesito Esta Salida

Numero Inicial: 1 ---- Numero Final 2 --- Total De Numeros: 2 --- Existe: S
Numero Inicial: 3 ---- Numero Final 3 --- Total De Numeros: 1 -- Existe: N
Numero Inicial: 4 ---- Numero Final 4 --- Total De Numeros: 1--- Existe: S
Numero Inicial: 5 ---- Numero Final 6 --- Total De Numeros: 2--- Existe: N
Numero Inicial: 7 ---- Numero Final 10 --- Total De Numeros: 4--- Existe: S

Y Almacenarlos En Una Base De Datos Con Un Insert Into.

Sebe Facil, Pero Como Hacerlo
  #5 (permalink)  
Antiguo 10/04/2008, 11:45
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: ayuda con este script de numeros...

Cita:
Iniciado por dancresi Ver Mensaje
Pero Necesito Esta Salida

Numero Inicial: 1 ---- Numero Final 2 --- Total De Numeros: 2 --- Existe: S
Numero Inicial: 3 ---- Numero Final 3 --- Total De Numeros: 1 -- Existe: N
Numero Inicial: 4 ---- Numero Final 4 --- Total De Numeros: 1--- Existe: S
Numero Inicial: 5 ---- Numero Final 6 --- Total De Numeros: 2--- Existe: N
Numero Inicial: 7 ---- Numero Final 10 --- Total De Numeros: 4--- Existe: S
Qué lógica tiene eso??????
  #6 (permalink)  
Antiguo 10/04/2008, 12:26
 
Fecha de Ingreso: marzo-2005
Mensajes: 372
Antigüedad: 19 años, 1 mes
Puntos: 1
Re: ayuda con este script de numeros...

lo que pasa que necesito un reporte de cuantos numeros de folio fueron utilizados y cuantos inutilizados, los numeros los tengo en una base de datos que ejemplo tengo 13 registros pero el numero inicial es 1 y el final es 15, quiere decir que me faltan 3 numeros, cuales no lo se, es por eso que necesitaba el script queme diste,y es por eso que necesito este reporte para saber cuales y cuatos numeros son utilizados e inutilizados:

inicio: 1 --- final: 3 --- total de numeros utilizados: 3 --- utilizados:si
inicio: 4 --- final: 5 --- total de numeros inutilizados: 2 --- utilizados:no
inicio: 6 --- final: 10 --- total de numeros utilizados: 5 --- utilizados:si
inicio: 11 --- final: 11 --- total de numeros inutilizados: 1 --- utilizados:no
inicio: 12 --- final: 15 --- total de numeros utilizados: 4 --- utilizados:si
  #7 (permalink)  
Antiguo 10/04/2008, 13:01
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: ayuda con este script de numeros...

Ok. Ahora entiendo, son intervalos.

Prueba con esto, ten en cuenta que lo programñe aquí sin probarlo, si da algun error me avisas y lo depuramos:

Código PHP:
$sql=mysql_query("select numero from numero",$link); 
 
$maximo 0;
while(
$numero=mysql_fetch_assoc($sql)){ 
$ArrayNum[$numero['numero']] = $numero['numero'];
if (
$numero['numero'] > $maximo)
$maximo $numero['numero'];
}
$ContarIntervalos 1;

for (
$i=1;$i<=$maximo;$i++) {
if (
$ArrayNum[$i])
{
 
 if (isset(
$BanderaExistencia))
 {
  if (
$BanderaExistencia == false)
  {
  
$ArrayIntervalos[$ContarIntervalos]['fin'] = $i-1;
  
$ContarIntervalos++;
  
$BanderaExistencia true;
  
$ArrayIntervalos[$ContarIntervalos]['inicio'] = $i;
  }
 }
 else 
 {
 
$BanderaExistencia true;
 
$ArrayIntervalos[$ContarIntervalos]['inicio'] = $i;
 }
 if (!isset(
$inicio))
 
$inicio "N";
}
else
{
 if (isset(
$BanderaExistencia))
 {
  if (
$BanderaExistencia == true)
  {
  
$ArrayIntervalos[$ContarIntervalos]['fin'] = $i-1;
  
$ContarIntervalos++;
  
$BanderaExistencia false;
  
$ArrayIntervalos[$ContarIntervalos]['inicio'] = $i;
  }
 }
 else
 {
 
$BanderaExistencia false;
 
$ArrayIntervalos[$ContarIntervalos]['inicio'] = $i;
 }
 if (!isset(
$inicio))
 
$inicio "S";
}
 
}

foreach (
$ArrayIntervalos As $valor)
{
$L = ($inicio == "S") ? "N" "S";
echo 
"Número Inicial: ".$valor['inicio']." ------ Número Final: ".$valor['fin']." ------ Total de Números: ".(($valor['fin']-$valor['inicio'])+1)." ---- Existe: ".$L."<br>";

Me cuentas...
  #8 (permalink)  
Antiguo 10/04/2008, 13:43
 
Fecha de Ingreso: marzo-2005
Mensajes: 372
Antigüedad: 19 años, 1 mes
Puntos: 1
Re: ayuda con este script de numeros...

mi tabla de prueba tiene estos registros 1,2,5,6,8,9 y la salida en pantalla es la siguiente que me arroga:

Número Inicial: 1 ------ Número Final: 2 ------ Total de Números: 2 ---- Existe: S
Número Inicial: 3 ------ Número Final: 4 ------ Total de Números: 2 ---- Existe: S
Número Inicial: 5 ------ Número Final: 6 ------ Total de Números: 2 ---- Existe: S
Número Inicial: 7 ------ Número Final: 7 ------ Total de Números: 1 ---- Existe: S
Número Inicial: 8 ------ Número Final: ------ Total de Números: -7 ---- Existe: S



este es el resultado una parte si la hace pero otra nop como se puede ver, no pinta la 'N' solo 'S' y no me pinta tampoco el ultimo numero que seria el 9 y el total de numero deveria de pintar 2 y me pinta -7.

donde estata el error para modificar.
  #9 (permalink)  
Antiguo 10/04/2008, 14:01
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: ayuda con este script de numeros...

Probemos ahora a ver que pasa:


Código PHP:
$sql=mysql_query("select numero from numero",$link); 
 
$maximo 0;
while(
$numero=mysql_fetch_assoc($sql)){ 
$ArrayNum[$numero['numero']] = $numero['numero'];
if (
$numero['numero'] > $maximo)
$maximo $numero['numero'];
}
$ContarIntervalos 1;
for (
$i=1;$i<=$maximo;$i++) {
if (
$ArrayNum[$i])
{
 
 if (isset(
$BanderaExistencia))
 {
  if (
$BanderaExistencia == false)
  {
  
$ArrayIntervalos[$ContarIntervalos]['fin'] = $i-1;
  
$ContarIntervalos++;
  
$BanderaExistencia true;
  
$ArrayIntervalos[$ContarIntervalos]['inicio'] = $i;
  }
 }
 else 
 {
 
$BanderaExistencia true;
 
$ArrayIntervalos[$ContarIntervalos]['inicio'] = $i;
 }
 if (!isset(
$inicio))
 
$inicio "N";
 
}
else
{
 if (isset(
$BanderaExistencia))
 {
  if (
$BanderaExistencia == true)
  {
  
$ArrayIntervalos[$ContarIntervalos]['fin'] = $i-1;
  
$ContarIntervalos++;
  
$BanderaExistencia false;
  
$ArrayIntervalos[$ContarIntervalos]['inicio'] = $i;
  }
 }
 else
 {
 
$BanderaExistencia false;
 
$ArrayIntervalos[$ContarIntervalos]['inicio'] = $i;
 }
 if (!isset(
$inicio))
 
$inicio "S";
}
 
 if (
$i == $maximo)
 
$ArrayIntervalos[$ContarIntervalos]['fin'] = $i;
}
foreach (
$ArrayIntervalos As $valor)
{
$inicio = ($inicio == "S") ? "N" "S";
echo 
"Número Inicial: ".$valor['inicio']." ------ Número Final: ".$valor['fin']." ------ Total de Números: ".(($valor['fin']-$valor['inicio'])+1)." ---- Existe: ".$inicio."<br>";

Me cuentas
  #10 (permalink)  
Antiguo 10/04/2008, 14:24
 
Fecha de Ingreso: marzo-2005
Mensajes: 372
Antigüedad: 19 años, 1 mes
Puntos: 1
Re: ayuda con este script de numeros...

Amigo no se como pagártelo, muchas gracias esta todo bien es lo que necesitaba, muchas gracias, la verdad es que sabes mucho te felicito, eres muy bueno si no te importa me puedes decir de donde eres y si es que tu quieres decirme como puedo contactarte, para mas adelante, luego me salen mas dudas, apenas empiezo a programar, siempre y cuando tu quieras, mail igual y te puedo agregar al messenger. Nuevamente muchas gracias.
  #11 (permalink)  
Antiguo 10/04/2008, 14:35
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
De acuerdo Re: ayuda con este script de numeros...

:apla uso:
Me alegra mucho que funcionara!!

Lo que te haga falta aqui estamos para ayudarnos.
Mi msn es "gestion ([ a r r o b a ]) usermax . net"

Reemplaza ([ a r r o b a ]) por @ y quita los espacios (es para que no me spameen que lo escribí así).

THE END.-
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 13:02.