Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169

    divisione pagamenti per mesi

    Ciao a tutti,

    Ho questa query che funziona perfettamente e mi fà vedere tutti i pagamenti Clienti con le vari e date di scadenza ordinate correttamente per mese... io vorrei che mi raggruppasse per ogni mese tipo dentro un div o un fieldset per esempio:

    mese Marzo 2012
    cliente 1 scadenza 15/03/2012 importo €
    cliente 2 scadenza 15/03/2012 importo €
    cliente 3 scadenza 15/03/2012 importo €

    mese Aprile 2012
    cliente 1 scadenza 15/04/2012 importo €
    cliente 2 scadenza 15/04/2012 importo €
    cliente 3 scadenza 15/04/2012 importo €

    e via di seguito.... ma non so come fare la query qualcuno più può indicare la giusta via?

    grazie
    di seguito la query:
    codice:
    $sql="SELECT * ,DATE_FORMAT(DataScadenza,'%d/%m/%Y') as DataScadenzaR FROM Clienti JOIN ClientiPagamenti ON Clienti.user_id=ClientiPagamenti.IDCliente 
    WHERE Clienti.IDPartner=$IDRecuperato AND ClientiPagamenti.Importo<>99 
    ORDER BY ClientiPagamenti.DataScadenza ASC, Clienti.user_id DESC";

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    molte sono le strada che puoi intrapendere giovane padauan :P

    Ma attenzione al lato oscuro
    esso e' forte, e ti farebbe fare molte query con il filtro dei mesi

    Puoi risolvere tutto con 1 query, un paio di cicli e qualche var aggiuntiva

    Codice PHP:

    $ris 
    mysql_query("select quellochesia",$connessione) ;
    $stringona "" ;
    $lastDate false ;
    $datiDaStampare = array() ;

    while( 
    $set mysql_fetch_assoc($ris) )
    {

    if( 
    $lastDate != $set["dataAttuale"] ) // Ovviamente puoi impostare il controllo come ti pare e filtrare quindi anche i mesi con un piccolo calcoletto sulla data
    {
    $lastDate $set["dataAttuale"] ;

    }

    if( !isset(
    $datiDaStampare$lastDate ]) || !is_array($datiDaStampare[$lastDate]) )
    $datiDaStampare[$lastDate]=array() ; }
    $datiDaStampare[$lastDate][] = $set ;
    }


    // Ora abbiamo popolato un array di dati suddivisi per date, per mesi dovrai farti il calcolo come detto sopra

    foreach( $datiDaStampare as $data => $set )
    {
    foreach( 
    $set as $dato )
    {
    $stringona "FORGIA LA STRINGA" ;
    }

    nel caso tu volessi evitare il secondo ciclo puoi forgiare la stringa nel primo while e inserirla nelle celle con l'identificatore temporale e poi fare un implode mettendo i relativi tags html per unire il tutto

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    Ciao Virus_101,

    Purtroppo la mia conoscenza di php è ancora troppo a livelli bassi, quindi di quello che mi hai scritto non ho capito nulla ti passo il codice puoi farmi un esempio su questo Grazie:

    codice:
    <?php 
    
    //Connessione Database 
    include(".....php"); 
    
    // Recupero ID Partner già pronto da HeaderUser.php 
    //echo $IDRecuperato; 
    
    $sql="SELECT * ,DATE_FORMAT(DataScadenza,'%d/%m/%Y') as DataScadenzaR 
    FROM Clienti JOIN ClientiPagamenti ON Clienti.user_id=ClientiPagamenti.IDCliente 
    WHERE Clienti.IDPartner=$IDRecuperato AND ClientiPagamenti.Importo<>99 
    ORDER BY ClientiPagamenti.DataScadenza ASC, Clienti.user_id DESC"; 
    //Importo<>99 Non fa vedere i record con il Valore 99€ 
    
    //Se non ci sono risutati restituisce il testo if (mysql_num_rows ($result) < 1) { $nessunpagamento = ('<p align="left" style="margin-left:180px">Al momento non risulta Nessun Pagamento!</p>'); } ?> 
    
    <div class="arrotondati1"> 
    <div class="arrotondati2"> <font>RIEPILOGO PAGAMENTI CLIENTI</font> </div> 
    
    <div style="margin-left:15%"> <p align="left" style="margin-left:90px">Qu&igrave; puoi Verficare lo stato dei Pagamenti dei Clienti da Te acquisiti:</p> 
     
    
    <div class="arrotondati11"> 
    <div class="arrotondati12"> 
    Mese:  </div> 
    
    <?php // Risultati query
    while($rows=mysql_fetch_array($result)){ // array che cambia da valore 0 a ... e cambio color input 0=Pagamento in attesa 1=Pagamento Ricevuto 
    $ca = $rows['PagamentoRicevuto']; $pagamento = array('In Attesa', 'Ricevuto'); $risultatopagamento = $pagamento[$ca]; 
    $pagamentocolore = array('orange', 'green'); 
    $risultatopagamentocolore = $pagamentocolore[$ca]; ?> 
    
    <font style="margin-left:10px;">
    Cliente: <?php echo $rows['RagioneSociale']; ?> - <?php echo $rows['Nome']; ?> <?php echo $rows['Cognome']; ?> Localit&agrave;: <?php echo $rows['Citta']; ?></font>
    
    
     <font style="margin-left:10px;">
    Rata: <?php echo $rows['Pagamento']; ?> Importo: <?php echo $rows['Importo']; ?>&euro; Scadenza: <?php echo $rows['DataScadenzaR']; ?> Stato pagamento: <font color="<?php echo $risultatopagamentocolore; ?>">
    <?php echo $risultatopagamento; ?></font></font> 
    
    
    
    <hr />
     
    
    <?php } //fine risultati query 
    echo $nessunpagamento; // se la query non restituisce nulla fà vedere questo messaggio ?> 
    
    </div> 
    
     
    </div> 
    </div> 
    </body> 
    </html>

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Guarda molto volentieri ma purtroppo non ho tempo ora devo finire 20000 cose dopocena ci do un occhio.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    grazie, mi daresti veramente un grande aiuto


    Ciao

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    a dopo allora.

    Solo 1 consiglio, io evito se posso di mescolare codice html e php assieme. Si va a generare una pagina daveero incasianta, poco manuntenibile.

    L'idea di base e' procedere per stpes :

    1- carico i dati
    2- controllo e filtro i dati
    3- popolo le adeguate strutture dati
    4- utilizzo le strutture dati popolate per stampare a video i dati
    5- recupero le stringhe generate al punto 4 e le inserico nella pagina.

    Ovviamente questa soluzione implica la necessità di implementare alcunefunzioni, funzioni che fidati poi riutilizzerai

    Cmq a dopocena sul tardi

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    prova a dare un occhio a questo codice(non e' testato potrebbero esserci degli errori sono le 23 er sono stanco dopo oltre 12 ore di programmazione ....

    Codice PHP:

    <?php 

    //Connessione Database 
    include(".....php"); 

    // Recupero ID Partner già pronto da HeaderUser.php 
    //echo $IDRecuperato; 

    $sql="
        SELECT 
            * ,
            DATE_FORMAT(DataScadenza,'%d/%m/%Y') as DataScadenzaR 
        FROM 
            Clienti JOIN ClientiPagamenti ON Clienti.user_id=ClientiPagamenti.IDCliente 
        
        WHERE 
            Clienti.IDPartner=
    $IDRecuperato 
            AND 
            ClientiPagamenti.Importo<>99 
        ORDER BY 
            ClientiPagamenti.DataScadenza ASC , 
            Clienti.user_id DESC"
    ;
             
    //Importo<>99 Non fa vedere i record con il Valore 99€ => il controllo e' strettamente differente!!!
    // guarda qui : [url]http://www.w3schools.com/sql/sql_where.asp[/url]
    // non capisco bene che tipo di controllo devi fare un questo caso .... il controllo che fai dice che il valore e' != 99 .... 


    // non ti posso riscrivere tutto il codice ti lascio qualche suggerimento affinche' tu possa completare la pagina 


    // Dopo la query scorriamo tutti i dati e popoliamo un opportuno array

    $daStampare = array(); 
    $ris        mysql_query($sql,$connessione) ;

    // uso il fetch_assoc() per dimezzare la dimensione della struttura dati visto che le celle numerica restituite dalla fetch_array non servono ad 1 cippa
    while( $record mysql_fetch_assoc($ris) )
    {
        
    $formato "d/m/Y" // se usi un altro formato o un altra colonna ti baste re impostare questo campo

        
    $currDate  date_create_from_format$formato $record["DataScadenzaR"] ) ;
        
    $currMonth date("m",$currDate->getTimestamp() ) ;
        
    $currYear  date("Y",$currDate->getTimesttamp() ) ;
        
    $currCell  $currYear."_".$currMonth 
        
        if( !isset(
    $daStampare$currCell ] ) )
        { 
    $daStampare$currCell ] = array(); }
        
        
        
    $tmp '<div class="quellochesia">qui ci metti i dati nel formato che ti pare</div>' ;
        
        
    // Eseguo la push della stringa nell'array dei dati da stampare
        
    $daStampare$currCell ][] = $tmp ;
    }


    // Creo la stringa 
    $html "" ;
    foreach( 
    $daStampare as $cell => $data )
    {
        
    $html .= '<div class="contenitore periodo">[b]PERIODO '.$cell.' : [/b]'.implode"
    $data ).'</div>' ;
    }
    echo 
    $html ;

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    Sono completamente in alto mare....

    non mi dà nessun risultato a video al momento...... continuo a provare

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Si come ho detto era tardi ieri sera ed ero parecchio sfasato... il codice non e' testato ma ti da una traccia che puoi elaborare per arrivare alla conclusione forse stasera/notte ho 2 sec per darci 1 occhio e fare un paio di test(ovviamente sono test relativi al codice con 1 struttura dati fasulla ma simile a quella che usi)

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    grazie mille per il tuo aiuto.....

    ora sto comunque facendo delle prove con il codice che mi hai dato......

    però devo ammettere che non ho idea di quello che sto facendo i mio livello di php è ancora troppo basso......

    comunque ci provo

    grazie ancora

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.