Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Problema con l'ultimo record

    Salve, ho un piccolo problema e se anche probabilmente la soluzione è semplice, non la riesco a focalizzare:


    Prelevo da un database una serie di dati, dentro al ciclo ci metto una condizione.
    Il problema è che la condizione fa un confronto, col dato del ciclo precedente.
    È ciò che voglio, però mi sballa, diciamo il primo e l'ultimo record.
    Di solito come si fanno queste cose?
    Per il primo, ho trovato uno stratagemma per non visualizzarlo,ma l'ultimo manca, se lo faccio i manuale, ha dati errati, perchè molte variabili vengono azzerate ad ogni inizio ciclo.
    Questo è il mio problema.
    Provo a fare un piccolo schema:
    Codice PHP:
    $query="SELECT Numeri FROM Tabella;"
    $sql=mysql_query($query);
    while(
    $cicle=mysql_fetch_array($sql))
     {
     
    $numero2=$numero1;
     
    $numero1=$cicle['Numero'];
     if(
    $numero1!==$numero2)
      {
      ...
      }
     } 
    Scusate, non so fare gli esempi fatti bene, spero che abbiate capito il mio problema.
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Cosa vuoi fare di preciso ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Cosa vuoi fare di preciso ?
    Provo a spiegarmi, facciamo un esempio di persone, con categorie diverse, già ordinate nelle query, come la categoria cambia, scrivo sotto il riepilogo di solo questa categoria.
    La stampa la faccio come arriva la nuova categoria, perché faccio il confronto, ma aimè, sono già nel ciclo successivo, questo è il mio problema di base.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Puoi fare cosi.

    Codice PHP:
    <?php
    $query 
    "SELECT Numeri FROM Tabella order by numeri";
    $sql   mysql_query($query);
    $temp  = -999999;
    while(
    $cicle=mysql_fetch_array($sql))
    {
      if (
    $temp != $cicle['Numeri'])
      {
       
    $temp $cicle['Numeri'];
       ... 
    fai quello che devi fare
      
    }
      ...
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Puoi fare cosi.

    Codice PHP:
    <?php
    $query 
    "SELECT Numeri FROM Tabella order by numeri";
    $sql   mysql_query($query);
    $temp  = -999999;
    while(
    $cicle=mysql_fetch_array($sql))
    {
      if (
    $temp != $cicle['Numeri'])
      {
       
    $temp $cicle['Numeri'];
       ... 
    fai quello che devi fare
      
    }
      ...
    }
    Fammi capire se ho capito, in pratica a $temp gli do il valore del ciclo precedente, giusto?
    Ma perché inizialmente vale -999999?
    Onestamente non ho nemmeno mai verificato che valori assumono $cicle ad ogni ciclo.

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    L’importante è mettere un valore iniziale che sei sicuro di mai incontrare tra i dati.
    Se i dati sono ordinati in modo giusto funzionerà.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Grazie infinitamente, sei sempre molto disponibile, oltre che capace!

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Prova questo semplice esempio.

    Codice PHP:
    <?php
    $cicle   
    = array();
    $cicle[] = 1;
    $cicle[] = 1;
    $cicle[] = 1;
    $cicle[] = 1;
    $cicle[] = 2;
    $cicle[] = 2;
    $cicle[] = 3;
    $cicle[] = 3;
    $cicle[] = 3;
    $cicle[] = 3;reset($cicle);
    $temp = -999999;
    while (
    $v each($cicle))
    {
     
    $a $v['value'];
     if (
    $temp != $a)
     {
      
    $temp  $a;
      echo 
    "Adesso :$a<br/>";
      
    // azzero la conta
      
    $conta 0;
     }
     
    $conta++;
     echo 
    "**** $a $conta<br/>";
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Oppure questo.

    Codice PHP:
    <?php
    $cicle   
    = array();
    $cicle[] = 1;
    $cicle[] = 1;
    $cicle[] = 1;
    $cicle[] = 1;
    $cicle[] = 2;
    $cicle[] = 2;
    $cicle[] = 3;
    $cicle[] = 3;
    $cicle[] = 3;
    $cicle[] = 3;

    $temp = -999999;
    reset($cicle);
    //---- primo elemento
    $v each($cicle);
    $a $v['value'];
    while (
    $v)
    {
     
    //----- rottura inizio
     
    if ($temp != $a)
     {
      
    //---- si salva il valore per confrontarlo con gli elementi successivi
      
    $temp  $a;
      
      
    //---> azioni da compiere quando il valore corrente è diverso
      //     del valore precedente
      
    echo "Adesso :$a<br/>";
      
    // azzero la conta
      
    $conta 0;
     }
     
     
    //---> azioni da compiere con l'elemento corrente
     
    $conta++;
     echo 
    "**** $a $conta<br/>";
     
     
    //---- elemento successivo
     
    $v each($cicle);
     
    $a $v['value'];
     
     
    //----- rottura fine
     
    if ($temp != $a)
     {
      
    //---> azioni da compiere quando il valore successivo è diverso
      //     del valore corrente ma non si salva il valore qui. Mai !
      
    echo "Ci sono $conta numero $temp<br/>";
     }
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Credo di aver capito tutto, ora mi funziona tutto, con la variabile temporanea...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.