Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problemi php-mysql

  1. #1

    Problemi php-mysql

    Salve a tutti.
    sto creando un database in mysql con interfaccia php per la gestione delle fatture.
    E mi trovo davanti a due problemi che, anche se hanno poco a vedere uno con l'altro, ho pensato di riunire in questo topic unico.
    I due problemi sono:

    Recupero dal database il valore massimo di un campo della tabella
    Le fatture emesse le creo in un file pdf grazie alla libreria fpdf. E le salvo nel database assegnando a ogni fattura un numero progressivo.
    Ora volevo fare in modo che tale numero mi venisse consigliato ogni volta che devo creare una nuova fattura, in modo da evitare di creare due fatture con lo stesso numero o di saltare un qualche pezzo della numerazione.
    PEr far questo, dopo una breve ricerca sul forum ho trovato questa possibilità:
    Codice PHP:
    $query="SELECT MAX(numero) from work_fattura)";
    $alto mysql_query($query$db);
    while (
    $fetch mysql_fetch_array($alto))
    {
    $numero=$alto+1;
    }
    echo 
    $numero
    che però mi fornisce come risultato "Resource id#8" che non riesco a capire da dove salta fuori. Infatti non è l'id associato alla riga con il campo numero maggiore, nè l'id di una qualunque altra riga della tabella (infatti la riga 8 l'ho cancellata amnualmente nelle varie prove precedenti a questo problema).

    Come faccio allora a recuperare il valore massimo di questa colonna "numero"?

    Suddivisione per mese a partire da un campo DATE
    IL secondo problema è il seguente. Le fatture le memorizzo nel database in un campo DATE (yyyy-mm-dd). Sarei interessato però a poterle recuperare in modo da fare alcuni calcoli e prospetti sull'andamento delle fatture e dei loro importi mese per mese. Come posso fare?
    Vorrei estrapolare dalla tabella tutte le righe di un mese e poterle gestire in modo da poter elencare i numeri di fattura del mese, e sommare i vari importi che ho memorizzato nella tabella.


    Grazie fin da subito a chi ha voglia per aiutarmi!!!!

  2. #2
    Recupero dal database il valore massimo di un campo della tabella
    Codice PHP:
    $query="SELECT MAX(numero) from work_fattura";
    $alto mysql_query($query$db);

    $fetch mysql_fetch_row($alto);

    $numero $fetch[0] +1;
    echo 
    $numero

    Suddivisione per mese a partire da un campo DATE
    Codice PHP:

    select
    ...
    from ....
    where date_format(campo_DATE'%Y-%m') = '$anno-$mese' 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    1° Quesito:

    La query è giusta e dalla query ti ricavi $alto che è UNA RISORSA.
    Siccome questa risorsa contiene soltanto un numero ( il numero massimo appunto ) è inutile che utilizzi mysql_fetch_array.
    Dovresti invece utilizzare mysql_result().

    $max = mysql_result($alto, 0, 0);
    $numero = max+1;\

    Per info http://it.php.net/manual/it/function.mysql-result.php.

    2° Quesito
    Poniamo che il campo in cui tu salvi il valore della data si chiami appunto "data".
    Per trovarti tutti i record di marzo 2007 potresti fare una query tipo

    Codice PHP:
    SELECT FROM tuatabella WHERE data BETWEEN 2007-03-01 AND 2007-03-31 
    Bye

  4. #4
    Grazie mille ad entrambi.
    La soluzione al primo problema è perfetta in entrambi i casi (piccolo errore di battitura per Razorblade ).

    Per il secondo problema non le ho provate ancora, ma sono sicuro che siano entrambe funzionanti.
    Però mi sembra più adatta al mio caso la soluzione di piero.mac, che se ho ben capito mi permetterebbe di ciclare la query mese per mese andando ad agire sulle due variabili $mese e $anno, e quindi risparmiare parecchie righe di codice oiltre che adattare meglio il tutto al passare del tempo.
    In pratica:
    Codice PHP:
    $anno=2007;
    $mese=1
    for ($mese=1;$mese<13;$mese++)
    {
    select...
    from ....
    where date_format(campo_DATE'%Y-%m') = '$anno-$mese'
    ....
    ....
     } 
    mi permette di ripetere la query con tutte le operazioni che la seguono per tutti i mesi del 2007, giusto?

    Grazie ancora ad entrambi

  5. #5
    Continuo qua la mia serie di problemi:

    Caratteri speciali in textarea
    Se inserisco nel campo di input (text, o textarea) l'apostrofo nel mezzo della stringa, questo mi crea un errore nell'niserimento del corrispondente campo all'interno del database.
    Come faccio a permetter el'utliizzo di caratteri speciali (in particolare dell'apostrofo) all'interno di un campo di input, senza compromettere l'inseribilità della corrispettiva variabile all'intenro di un database?
    E come posso poi recuperare tale variabile contente l'apostrofo senza incorrere in nuovi errori??

    Incongruenza date
    Attraverso questo codice in una pagina mi recupero la data odierna che visualizzo poi come testo predefinito di un campo input di un form:

    Codice PHP:
    //calcolo la data odierna
    $t getdate();
    $today date('d-m-Y',$t[0]);
    $year substr($today6,4);
    $month substr($today32);
    $day substr($today02); 
    Invio il form la data mi viene memorizzata correttamente all'interno del database in un campo DATE nel formato YYYY-MM-DD (verificato attraverso myphpadmin che la data memorizzata è quella corretta)
    COn queste righe di comando recupero in un'altra pagina il campo DATE
    Codice PHP:
    //Formatto la data di emissione e pagamento.
    $year_em substr($line['emessa'], 0,4);
    $month_em substr($line['emessa'], 52);
    $day_em substr($line['emessa'], 72); 
    $data_em date("d-m-Y"mktime(000$month_em$day_em$year_em)); 
    per visualizzarla in una tabella nel formato che voglio io (gg-mm-aaaa) e non nel formato del database (aaaa-mm-gg).
    E qua nasce il mio problema, visto che la data che recupero non è quella memorizzata nel database. Più precisamente nel database mi ritrovo la data 2007-05-15 e 2007-05-13, ma mi viene restituita nella seconda pagina la data 29-04-2007, in entrambi i casi. Dove sbaglio?

  6. #6
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    prova ad aggiungere la funzione addslashes() alla variabile inviata dal form.
    Ad esempio

    Codice PHP:
    $username addslashes($_POST["username"]); 
    Questo non dovrebbe essere necessario se il form è inviato in POST e se nel php.ini è attivato il magic quotes. Sarebbe stato utile magari tu avessi postato il codice che restituisce l'errore.
    Sarebbe anche bene filtrare eventuali tag dannosi per evitare XSS.

    Per salvare la data sul database il metodo più semplice ( e corretto ) è utilizzare una funzione di sql, ovvero NOW(), ad esempio

    Codice PHP:
    Insert into tuatabella (campodatattualeVALUES (NOW()); 
    Non usare mai il substr per le date.
    Per raccogliere il campo data dal db gia formattato puoi utilizzare la funzione di sql DATEFORMAT ( nn mi ricordo la sintassi esatta ).
    Bye

  7. #7
    Per il primo problema perfetto! addslashes era proprio il comando che fa al caso mio!
    Grazie mille!

    Per il secondo problema sulle date..
    uso il getdate perchè la data andrà a finire in un campo di input del form come data predefinita. Ma se l'utente per una sua qualunque necessità, deisdera cambiarla, il form glielo permette, e quindi non posso inserirla dentro il db con il metodo da te consigliato.
    Invece per recuperarla dal database con il formato da me voluto (gg-mm-aaaa) vado a veder enel manuale la funzione DATEFORMAT consigliatami.

    Grazie ancora per l'aiuto importante datomi!

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.