Foros del Web » Programando para Internet » PHP »

Ayuda con for

Estas en el tema de Ayuda con for en el foro de PHP en Foros del Web. Para empezar una disculpa por esta pregunta... Nunca e sido buena programando, y no se usar para nada el for y un poco el while ...
  #1 (permalink)  
Antiguo 13/11/2010, 12:57
Avatar de Sherly  
Fecha de Ingreso: septiembre-2008
Ubicación: Valles
Mensajes: 58
Antigüedad: 11 años, 2 meses
Puntos: 1
Ayuda con for

Para empezar una disculpa por esta pregunta...

Nunca e sido buena programando, y no se usar para nada el for y un poco el while esto esta asi.
Tengo una base de datos a la cual se le guardan nombres de los archivos estos tienen un numero de pagina la cual se guarda en un campo las paginas van de la 1 a la 35 lo que necesito es imprimir las paginas que aun faltan por ingresar digamos que si ya subi la 1, 3, 10 pues me debe imprimir que falta subir la 2, 5,6,7,8,9,11,12,13...35 mi logica y poca habilidad para la programación me dice que se tiene que hacer con un for tengo algo asi.

Código PHP:
$result2pg_query("SELECT * FROM hemeroteca WHERE dia='$dd' AND mes='$m' AND anyo='$anyo' ORDER by nombre");
         
        if (!
$result2
            {    
                 echo 
"error al procesar la busqueda pruebe mas tarde o reportelo a\n";
                exit;
            }

 while (
$g pg_fetch_array($result2)) {
$id_archivo=$g['id_archivo'];
$año=$g['anyo'];
$mes=$g['mes'];
$dia=$g['dia'];
$nombre=$g['nombre'];
$ruta=$g['ruta'];
$pag=$g['pagina'];

$i=1;
for (
$i;$i>=35;$i++) {
if(
$i!=$g['pagina'])
{
echo 
$i;
}

}


muy probablemente este mal pero es un inicio,alguien puede orientarme decirme si, es con for o con while por que la vdd no lo se.
Gracias de antemano
  #2 (permalink)  
Antiguo 13/11/2010, 13:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: Ayuda con for

el procedimiento es correcto, sin embargo la lógica del for() esta errada...
Código PHP:
for ($i;$i>=35;$i++) 
con esto quieres decir que "mientras $i sea mayor o igual a 35 se incremente $i", lo cual nunca va a suceder pues $i esta inicialmente en 1

solo eso, debes reflexionar bien lo que necesitas "mientras $i sea menor o igual a 35", entonces incrementas $i, etc..
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/11/2010, 13:55
Avatar de Sherly  
Fecha de Ingreso: septiembre-2008
Ubicación: Valles
Mensajes: 58
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Ayuda con for

jeje lo tenia igual como dices <=35 pero no se por que razón me llegaba a un numero infinito por eso opte por cambiarlo ya que siempre tengo confusión de cual es mayor que y cual menor que y tampoco me salia bien ya que me mostraba desde el 2 en adelante consecutivamente en la base tengo los archivos con el numero 01, 04, 10, 07 y solo me muestra el 2 hasta el infinito poniendo <=35 y me da gusto saber que mi lógica no es tan mala jajajajjaa
  #4 (permalink)  
Antiguo 13/11/2010, 14:06
Avatar de Sherly  
Fecha de Ingreso: septiembre-2008
Ubicación: Valles
Mensajes: 58
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Ayuda con for

Sorry por el doble post ya vi bien que es lo que me esta respondiendo
me manda una secuencia del 1 al 35 por archivo ingresado algo asi
23456789101112131415161718192021222324252627282930 3132333435 --> aqui me quita el 1
seguidame manda otra
12456789101112131415161718192021222324252627282930 3132333435 --> aqui me quita el 3
y asi consecutivamente me manda cada numeración sin el numero que ya esta en la BD como puedo hacer para que me mande solo una numeración?
gracias de antemano
  #5 (permalink)  
Antiguo 13/11/2010, 14:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 7 meses
Puntos: 2534
Respuesta: Ayuda con for

podrías crear un array con los valores del 1-35 usando range() y después en lugar de hacer un bucle for() puedes hacer una simple comparación con in_array(), si el resultado es positivo significa que ya existe dicho valor en el array que creaste previamente...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 13/11/2010, 17:13
Avatar de Sherly  
Fecha de Ingreso: septiembre-2008
Ubicación: Valles
Mensajes: 58
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Ayuda con for

Bueno después de intentar e intentar definitivamente no supe como hacer el array la vdd lo que no supe fue comparar y donde ponerlo pues si lo pongo dentro del while me repite la operación tantas veces como registros tenga en mi bd ya lei muchos manuales sobre como hacer los array pero la vdd no me salen

foreach (range(1, 35) as $número) {

}

$os = array ($numero);
if (in_array ($pag, $os)){
echo "positivo";
echo $pag;
}

Nunca a sabido manejar array, ni for lo siento
  #7 (permalink)  
Antiguo 14/11/2010, 11:50
Avatar de Sherly  
Fecha de Ingreso: septiembre-2008
Ubicación: Valles
Mensajes: 58
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Ayuda con for

Ya tengo la solución se las dejo por si alguien la ocupa.

Código PHP:
$result2pg_query("SELECT * FROM hemeroteca WHERE dia='$dd' AND mes='$m' AND anyo='$anyo'");
         
        if (!
$result2
            {    
                 echo 
"error al procesar la busqueda pruebe mas tarde o reportelo a\n";
                exit;
            }
$pag_listas = array(); //Te genera un array vacio, aqui vamos a guardar las que ya tienes.
$pag_faltantes = array(); //Aqui las que no.
while($g pg_fetch_assoc($result2) ){ //Este seria el while donde haces el pg_fetch_assoc
  
$id_archivo=$g['id_archivo'];
$año=$g['anyo'];
$mes=$g['mes'];
$dia=$g['dia'];
$nombre=$g['nombre'];
$ruta=$g['ruta'];
$pag $g['pagina'];
$pag_listas[] = $pag//En esta parte solo guardas las que ya tienes
}
//El for debe ir afuera del while
for($i 1$i <= 50$i++){
  if(!
in_array($i$pag_listas) ){ //Aqui checas si el num NO esta en las que ya tienes
    
$pag_faltantes[] = $i// La añadimos al arreglo de las faltantes
  
}
}

//Ya que termina el for, teoricamente deberias tener todos los numeros que te faltan, y ordenados, pero por cualquier cosa que no estuvieran ordenados le pasas un metodo de ordenacion.

natsort($pag_faltantes); //Le da un orden "natural" al arreglo, es decir 1, 2, 3, ..., 48, 49, 50

//Aqui ya podrias hacer lo que quieras con el arreglo, como imprimirlo con un foreach
if(!$id_archivo)
{

}
else{
echo 
"<h3>Las paginas faltantes del $dia de $mes del $año son:</h3>";
echo 
"<ol>";
foreach(
$pag_faltantes as $pf)
{

  echo 
"<li>$pf</li>";
}
echo 
"</ol>";


Etiquetas: Ninguno
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 23:40.