Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    validare un campo numerico

    come si valida un campo numerico? Cioè impedire l'inserimento dei caratteri che non sono numeri?

    Codice PHP:
    <input name="imponibile" type="text" size="20" maxlength="20"

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: validare un campo numerico

    Originariamente inviato da prinzart
    come si valida un campo numerico? Cioè impedire l'inserimento dei caratteri che non sono numeri?

    Codice PHP:
    <input name="imponibile" type="text" size="20" maxlength="20"
    Intendi lato php? (cioè quando l'utente ha già fatto il submit)?

    http://it.php.net/manual/en/function.is-numeric.php

    Lato client (cioè se vuoi impedire di scrivere i caratteri non ammessi) dovrai usare javascript, e legare una funzione al keyup che controlli il codice ascii del tasto premuto e ritorni falso in caso non sia quello che tu ti aspetti.. magari chiedi sul forum javascript per questo che qui siamo OT.

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    si, intendevo php.
    Ora mi studio il manuale...

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ho letto il manuale e ho fatto così, ma non funziona. Chi mi darebbe una mano :

    <input name="imponibile"> type="text" size="20" maxlength="8">

    Codice PHP:
    <?php
    $sql 
    "INSERT INTO protocollo_ordini (imponibile)
    VALUES ('
    $imponibile')";
    mysql_query($sql$conn) or die ($sql);
    $msg "protocollo inserito nel database";

    if (
    strlen ($imponibile) > && strlen ($imponibile) < 2) {
    $msg_numeri_a "ERRORE
    il campo imponibile deve avere meno di 8 numeri e piu di due"
    ;
    }
    elseif (
    is_numeric($imponibile)) {
    $msg_numeri_b "ERRORE
    il campo imponibile deve contenere solo numeri"
    ;
    }
    ?>

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    supponiamo che l' utente inserisca nel campo 'pippo7.4'

    $dato='pippo7.4';

    se ti serve un valore INTERO (7)

    $var=intval(floatval($dato));

    se accetti anche decimali invece

    $var=floatval($dato);

    dovrebbe funzionare

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ho fatto così ma ancora non mi funziona:

    <input name="imponibile" <?php if (!$inserimento);?> type="text" size="20" maxlength="8">

    Codice PHP:
    if ($imponibile) {
    $sql "INSERT INTO protocollo_ordini (imponibile)
    VALUES ('
    $imponibile')";
    mysql_query($sql$conn) or die ($sql);
    $msg "protocollo inserito nel database";
    $inserimento floatval($imponibile);
    }

    else {
    $msg "ERRORE
    devi riempire il campo imponibile di soli numeri"
    ;


  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da prinzart
    ho fatto così ma ancora non mi funziona:

    <input name="imponibile" <?php if (!$inserimento);?> type="text" size="20" maxlength="8">

    Codice PHP:
    if ($imponibile) {
    $sql "INSERT INTO protocollo_ordini (imponibile)
    VALUES ('
    $imponibile')";
    mysql_query($sql$conn) or die ($sql);
    $msg "protocollo inserito nel database";
    $inserimento floatval($imponibile);
    }

    else {
    $msg "ERRORE
    devi riempire il campo imponibile di soli numeri"
    ;

    non capisco dove hai problemi...

    if(strlen($imponibile) < 8 && strlen($imponibile) > 2 && is_numeric($imponibile)) {
    // fai quello che vuoi
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ok ce l'ho fatta, sono riuscito a far validare il campo, però mi accetta solo i numeri interi, io invece vorrei che mi inserisse anche i decimali ad esempio (581,49) euro ma ora mi inserisce solo (581). Come posso risolvere?

    <input name="imponibile" type="text" size="20" maxlength="8">

    Codice PHP:
    if (floatval($imponibile)) {
    $sql "INSERT INTO protocollo_ordini (imponibile)
    VALUES ('
    $imponibile')";
    mysql_query($sql$conn) or die ($sql);
    $msg "protocollo inserito nel database";
    }

    else {
    $msg "ERRORE
    devi riempire il campo imponibile di soli numeri"
    ;


  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da prinzart
    ok ce l'ho fatta, sono riuscito a far validare il campo, però mi accetta solo i numeri interi, io invece vorrei che mi inserisse anche i decimali ad esempio (581,49) euro
    perchè 581,49 non è un numero, 581.49 invece si.

    Fai il test sostituendo la virgola con il punto.

    ciao

    p.s.

    floatval non è un controllo ma forza il tipo di numero, dovrebbe funzionare lo stesso, ma in realtà la funzione non nasce proprio per questo motivo.

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    forse è perche ho settato il campo "imponibile" come TIPO INT? Deve essere di altro tipo quando ci sono i decimali?

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.