Visualizzazione dei risultati da 1 a 10 su 10

Discussione: ottimizzare condizione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    115

    ottimizzare condizione

    Ciao a tutti, ho questa condizione:

    Codice PHP:
    if ($riga <= 2)
    {
    $pagina 1;
    }
    else if (
    $riga <= 6)
    {
    $pagina 2;
    }
    else if (
    $riga <= 10)
    {
    $pagina 3;
    }
    else if (
    $riga <= 14)
    {
    $pagina 4;
    }
    else if (
    $riga <= 18)
    {
    $pagina 5;
    }
    else if (
    $riga <= 22)
    {
    $pagina 6;
    }
    else if (
    $riga <= 26)
    {
    $pagina 7;
    }
    else if (
    $riga <= 30)
    {
    $pagina 9;
    }
    else if (
    $riga <= 34)
    {
    $pagina 10;
    }

    else if (
    $riga <= 38)
    {
    $pagina 11;
    }

    else if (
    $riga <= 42)
    {
    $pagina 12;
    }
    else if (
    $riga <= 46)
    {
    $pagina 13;
    }
    else if (
    $riga <= 50)
    {
    $pagina 14;
    }
    else if (
    $riga <= 54)
    {
    $pagina 15;
    }
    else if (
    $riga <= 58)
    {
    $pagina 16;
    }
    else if (
    $riga <= 62)
    {
    $pagina 17;
    }
    else if (
    $riga <= 66)
    {
    $pagina 18;
    }
    else if (
    $riga <= 70)
    {
    $pagina 19;
    }
    else if (
    $riga <= 74)
    {
    $pagina 20;
    }
    else if (
    $riga <= 78)
    {
    $pagina 21;
    }
    else if (
    $riga <= 82)
    {
    $pagina 22;
    }
    else if (
    $riga <= 86)
    {
    $pagina 23;
    }
    else if (
    $riga <= 90)
    {
    $pagina 24;
    }
    else if (
    $riga <= 94)
    {
    $pagina 25;
    }
    else if (
    $riga <= 98)
    {
    $pagina 26;
    }
    else if (
    $riga <= 102)
    {
    $pagina 27;
    }
    else if (
    $riga <= 106)
    {
    $pagina 28;
    }
    else if (
    $riga <= 110)
    {
    $pagina 29;
    }
    else if (
    $riga <= 114)
    {
    $pagina 30;
    }
    else if (
    $riga <= 118)
    {
    $pagina 31;
    }
    else
    {

    come posso fare tramite for una condizione meno macchinosa che calcoli la variabile riga avanzando di 4 numeri per volta e aggiungendo 1 unità alla variabile pagina ogni volta che trova riscontro? Chiedo questo perchè altrimenti sarei costretto a fare un else if fino alla riga 2000 e verrebbe un codice di proporzioni abnormi ed una gran perdita di tempo.

    Grazie in anticipo

  2. #2
    Ecco qua;
    Codice PHP:
    $num=0;
    $max=2000;
    for(
    $i=2;$i<=$max;$i+4)
     { ++
    $num;
       if(
    $riga<=$i$pagina=$num;
     } 

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    115
    Sei stato gentilissimo

    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    115
    Ciao, non so perchè ma si pianta l'esecuzione dello script, è come se entra in un loop... puoi aiutarmi?

  5. #5
    Intanto va corretta questa riga:
    Codice PHP:
    if($riga<=$i$pagina=$num
    in
    Codice PHP:
    if($riga<=$i) {$pagina=$num; break;} 
    ... perché altrimenti $pagina sarà sempre uguale al massimo valore che riesce a raggiungere $num.

    In effetti rimane in loop.. sto facendo alcuni controlli.. appena trovo il baco posto la soluzione!


  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    codice:
    $pagina = ceil(($riga+2)/4);
    A meno che la pagina 8 (che manca) manchi davvero per una buona ragione.
    Ciao
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Effettivamente la soluzione di Andrea è ottima molto più veloce e meno dispendiosa del for.

    Posto ugualmente il codice corretto...
    Codice PHP:
    $pagina=0;
    $num=1;
    $max=2000;
    for(
    $i=2;$i <= $max$i++ )
     { if(
    $riga <= $i)
        { 
    $pagina=$num; break; }
       
    $num++;
       
    $i=$i+3;
     }
    if(!
    $pagina)$pagina=$num
    Ciò che non mi è chiaro è perché mettendo nel for $i+4 la variabile $i non venga incrementa. (per questo motivo il for entrava in loop. Se qualcuno sa darmi una risposta....


  8. #8
    Si deve scrivere $i+=4

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    115
    Innanzitutto vi ringrazio per gli aiuti, la pagina 8 mancava perchè l'ho dimenticata

    Cmq la soluzione di Andrea in 1 riga sola è proprio ciò che fa per me! Incredibile come la logica faccia miracoli!

    Grazie ancora a tutti

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    occhio però che con il mio sistema puoi avere pagine all'infinito, per cui, dovresti comunque porre una condizione, nel caso in cui ad esempio $riga sia maggiore di 118 o quant'altro.

    codice:
    <?php
      if ($riga <= 118) {
        $pagina = ceil(($riga+2)/4);
      }
      else {
        //tutto ciò che dovrà succedere
      }
    ?>
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.