Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 34
  1. #11
    No fai solo la query di estrazione non ordinata, metti tutti i record in un array e ordini quell'array con una apposita funzione che elabori il campo note come scrivevo prima.

    Pseudo codice:
    codice:
    $data = array();
    $result = mysql_query(bla bla bla);
    while ( $record = mysql_fetch_object($result) ) {
        $data[] = $record;
    }
    
    usort($data, 'note_sort');
    
    function note_sort($a, $b) {
        $note_a = $a->note;
        $note_b = $b->note;
        // explode su $note_a e $note_b usando '//' come separatore
        // prendere l'ultimo valore dell'array esploso (cioe' la data piu' recente)
        // trasformarla da dd.mm.yy a yymmdd ottenendo diciamo $date_a e $date_b
        if ( $date_a == $date_b )
            return 0;
        return $date_a < $date_b ? -1 : 1;
    }

  2. #12
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    capito, in pratica usi l'array per "dumpare" il contenuto della tabella e poi lo ordini esplodendo il campo note

    carina l'idea, ma se la tabella avesse dimensioni considerevoli non si rischia una sorta di overflow?

  3. #13
    Oh se un database e' fatto male ci si deve arrangiare

  4. #14
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    151
    Mamma mia ragazzi siete una fonte inesauribile....

    Mi metto a studiare come implementare questa funzione (che sinceramente ancora non ho assimilato bene... ) e soprattutto vedere se funziona!

    Grazie

  5. #15
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Originariamente inviato da k.b
    Oh se un database e' fatto male ci si deve arrangiare
    eh, hai ragione, che struttura strana...

    beppe74, butta giù del codice e poi ti si aiuta

  6. #16
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    151
    Originariamente inviato da k.b
    codice:
    $data = array();
    $result = mysql_query(bla bla bla);
    while ( $record = mysql_fetch_object($result) ) {
        $data[] = $record;
    }
    
    usort($data, 'note_sort');
    
    function note_sort($a, $b) {
        $note_a = $a->note;
        $note_b = $b->note;
        // explode su $note_a e $note_b usando '//' come separatore
        // prendere l'ultimo valore dell'array esploso (cioe' la data piu' recente)
        // trasformarla da dd.mm.yy a yymmdd ottenendo diciamo $date_a e $date_b
        if ( $date_a == $date_b )
            return 0;
        return $date_a < $date_b ? -1 : 1;
    }
    Devo essermi un po' arrugginito.... ma non riesco a capire questo:

    codice:
    function note_sort($a, $b) {  
       $note_a = $a->note;     
    $note_b = $b->note;
    Che significa?
    Grazie

  7. #17
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    che stai prendendo le proprietà dell'oggetto

    $a è l'oggetto e note è la sua proprietà

  8. #18
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    151
    Ciao,
    eccomi qui, per motivi di lavoro devo rinviare sempre nel weekend per queste cose.

    Sto mettendo giù il codice ma sono a questo punto fermo qui:

    Codice PHP:
      // prendere l'ultimo valore dell'array esploso (cioe' la data piu' recente) 
    Come prendo l'ultimo valore dell'array (dopo l'ultimo separatore //)?

    Ricordo che il campo 'Note' può avere un contenuto di questo genere:
    10.01.10 Apertura pratica // 15.03.10 Inviata raccomandata // 16.04.10 Inviata ulteriore raccomandata // 10.09.10 Contattato cliente

    Quindi come prendo la data 10.09.10 in questo caso?
    Grazie!

  9. #19
    codice:
    $note = '10.01.10 Apertura pratica // 15.03.10 Inviata raccomandata // 16.04.10 Inviata ulteriore raccomandata // 10.09.10 Contattato cliente';
    
    $list = explode('//', $note);
    $last = trim(end($list));
    
    preg_match('/^(..)\.(..)\.(..)/', $last, $match);
    
    $day   = $match[1];
    $month = $match[2];
    $year  = $match[3];

  10. #20
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    151
    Niente ragazzi,
    non ce la faccio... sono proprio incastrato.
    Sarà perchè ormai sono arrugginito di php o perchè alcune funzioni non le conosco proprio ma non riesco proprio a fare questo report.

    Vi posto la mia query normale delle pratiche in ordine di codice pratica.


    Codice PHP:
       <? include ('../config.php');                                  
    $SO="op1";                        
      
    # setup SQL statement     
     
    $sql  "select *, tbl_Clienti.Nominativo as cliente_nome, tbl_Controparti.Nominativo as controparte_nome, date_format(tbl_Pratiche.Data_Apertura, '%d/%m/%y') as Data_Apertura FROM tbl_Clienti, tbl_Controparti, tbl_Operatori, tbl_Pratiche  WHERE tbl_Clienti.ID_Cliente = tbl_Pratiche.ID_Cliente AND tbl_Controparti.ID_Controparte = tbl_Pratiche.ID_Controparte AND tbl_Operatori.ID_Operatore = tbl_Pratiche.ID_Operatore AND tbl_Operatori.Sigla_Operatore='$SO'  AND tbl_Pratiche.Stato=1 ORDER BY mid(tbl_Pratiche.Codice,1,3) , mid(tbl_Pratiche.Codice,9,2) , mid(tbl_Pratiche.Codice,5,3)";     

    # execute SQL statement     
    $rs mysql_query($sql$cid);    
     if (
    mysql_error()) { print "Database Error: $sql " mysql_error(); }     
    // i righi 
     
    $righe mysql_num_rows ($rs);  
    echo  
    "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\" bordercolordark=\"#FFFFFF\" class=\"piccolo\"> <tr><td><font class=\"medio\" align=\"left\">[b]Numero Pratiche aperte: $righe [/b]</font></td> <td><align=\"right\"><INPUT TYPE=\"image\" src=\"../img/stampa_icon.gif\" width=\"16\" height=\"16\" ALT=\"Stampa il report\" onclick=\"imprime('report.doc')\"></td> </tr> </table><hr width=40% align=left size=1>";       // Preparo la tabella per accogliere i dati     
       
    $i=0;        
      echo  
    "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\" bordercolordark=\"#FFFFFF\" class=\"piccolo\">";  
    while (
    $valori mysql_fetch_array ($rs)){  $a1 $valori "Codice"]; 
     
    $a2 $valori "cliente_nome"]; 
     
    $a3 $valori "controparte_nome"]; 
    $a4 $valori "Note"];
     
    $a5 $valori "Data_Apertura"]; 
    if(
    $i%2==0):  $colore="bgcolor=#FFFFFF"
     else: 
    $colore="bgcolor=#FFFFCC";  endif;  
    echo  
    "    <tr $colore><td width=\"50%\" align=\"left\"><font class=medio>[b]  $a1 - $a5[/b]</font></td></tr>     
    <tr 
    $colore><td width=\"50%\" align=\"left\" class=\"medio\">[b]$a2 c/ $a3[/b]</td></tr>     
    <tr 
    $colore><td align=\"left\" class=medio><p align=justify>$a4</p></td></tr>     
    <tr 
    $colore><td align=\"left\">

    </td></tr>"

    sql1 "select * FROM documenti WHERE pratica='$a1'";    
    # execute SQL statement     
    $rs1 mysql_query($sql1$cid);    
     if (
    mysql_error()) { print "Database Error: $sql1 " mysql_error(); }
     
    $i=$i+1; } 
    echo  
    "</table>"
     
    mysql_free_result ($rs)  or die ( "Non riesco a liberare le risorse");  mysql_close ();  ?>
    Se riuscite ad aiutarmi vi sarò grato.
    Giuseppe

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