Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di dvd810
    Registrato dal
    Mar 2009
    Messaggi
    157

    impedire immissione numeri decimali

    Salve.
    Ho una input box text nella quale gli utenti dovranno inserire un valore numerico.
    In nessun caso dovrà essere di tipo decimale o suddiviso per migliaia: quindi nessun punto o virgola.
    Pensavo a 2 strade:
    1 quella restituire un errore nel caso si inserisca un numero decimale o separato dalle migliaia,
    2 quello di convertire subito in numero intero.

    Premetto che non uso db.

    Come posso fare?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    183
    in generale io seguirei la prima strada, ma dipende da te...
    comunqueal volo io farei così:
    Codice PHP:
    $numeroin=$numero;
    $numero=str_replace(",","",$numero);
    $numero=str_replace(".","",$numero); 
    if(
    $numeroin!=$numero){ 
    //errore
    }else{ 
    //prosegui 


  3. #3
    Utente di HTML.it L'avatar di dvd810
    Registrato dal
    Mar 2009
    Messaggi
    157
    jackJJ grz per la risposta.
    gentilmente potresti commentare ciò che hai scritto?

  4. #4
    Io userei jquery per impedire che inseriscano lettere, caratteri strani e punteggiatura

  5. #5
    Utente di HTML.it L'avatar di dvd810
    Registrato dal
    Mar 2009
    Messaggi
    157
    ... penso che la miglior cosa sia convertire con php un eventuale valore decimale, in questo modo l'operazione va sempre a buon fine, e l'utente che inserisce i dati eviterebbe di dover fare attenzione e/o ripetere l'immissione errata.
    Che comando posso usare?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    183
    Originariamente inviato da jackJJ :
    Codice PHP:
    $numeroin=$numero//in $numero c'è l'input, in $numeroin lo copi in quanto $numero verrà modificato
    $numero=str_replace(",","",$numero);//elimini le virgole
    $numero=str_replace(".","",$numero); //elimini i punti
    if($numeroin!=$numero){ //se il numero da cui hai eliminato virgole e punti è diverso da quello inserito dall'utente (3.4 è diverso da 34)
    // restituisci l'errore
    }else{ 
    //altrimenti prosegui 

    per convertire se ho capito bene cosa ti serve puoi usare floor()
    es. $num=2.3
    $numconv=floor($num)

    ora $numconv è =2, ovvero alla parte intera del numero inserito.
    devi comunque verificare che quello inserito sia un numero.

  7. #7
    Utente di HTML.it L'avatar di dvd810
    Registrato dal
    Mar 2009
    Messaggi
    157
    jackJJ penso che il codice che hai postato sia perfetto.
    Un dubbio mi rimane.

    Esempio:
    Se l'utente inserisce 2.000.000
    io voglio che il calcolo e/o l'echo avvenga con un 2000000

    Nel codice hai eliminato i punti e le virgole, per poi confrontare il valore inserito con quello ripulito da punti e virgole, per poi dare un errore o dare il via all'operazione.
    Ma non sarebbe meglio fermarsi prima?
    Cioè prelevare il valore ripulito dalle virgole e punti e usare quello?


  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    183
    tutto dipende da cosa devi farci. se a te va bene così fermati prima dell'if e tieni il numero così com'è.
    l'if invece lo devi lasciare (e sviluppare meglio) se c'è la possibilità che uno inserisca 2.349 intendendo 2 virgola 349 e in quel caso verrebbe trattato come 2349 se ti fermi prima di quell'if...

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.