Visualizzazione dei risultati da 1 a 9 su 9

Discussione: controllo tipo di dati

  1. #1

    controllo tipo di dati

    ciao a tutti, come posso far controllare che tipo di dato mi viene passato in un form?

    if($_POST['testata']=='' || $_POST['acquisto']=='' || $_POST['vendita']=='')
    {
    echo "$_POST[testata]
    ";
    echo "$_POST[acquisto]
    ";
    echo "$_POST[vendita]
    ";
    echo "Non hai inserito uno dei valori

    ";
    echo "Torna indietro e inserisci tutti i dati
    ";
    }
    elseif(is_string($_POST['acquisto']) || is_string($_POST['vendita']))
    {
    echo "$_POST[testata]
    ";
    echo "$_POST[acquisto]
    ";
    echo "$_POST[vendita]
    ";
    echo "Impossibile inserire i dati nel Database

    ";
    echo "I campi PREZZO DI ACQUISTO e PREZZO DI VENDITA devono contenere un numero decimale separato con un punto

    ";
    echo "Torna indietro e inserisci tutti i dati
    ";
    }
    spiego meglio....

    nel primo if controllo se le variabili sono vuote o no ed in caso negativo (cioè se contengono dei dati) passo al 2° if dove devo controllare se le variabili acquisto e vendita sono dei numeri o delle stringhe ed in caso siano delle stringhe deve comparire quel messaggio....come mai se inserisco ad esempio

    testata: lkghg
    acquisto: 6
    vendita: 9
    ottengo l'errore?

    so bene che 6 può essere anche inteso come una stringa, quindi l'errore sta nel modo in cui passo i dati dal form? l'inserimento avviene in questo modo:

    echo "<input type='text' name='acquisto'>";
    echo "<input type='text' name='vendita'>";

    ho cercato su internet ma non esiste un type='number'...

    come posso fare?
    ho pensato ad un controllo di tutti i caratteri della variabile ed in caso viene trovata una lettera da A a Z deve ritornare l'errore...ma non c'è un modo più semplice?

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di ade_v
    Registrato dal
    Jan 2001
    Messaggi
    459
    ... e usare la funzione is_string ?
    ade_v@yahoo.it

    Fletto i muscoli e sono nel vuoto

    Se inviate messaggi privati, avvisatemi sul forum...

  3. #3
    elseif(is_string($_POST['acquisto']) || is_string($_POST['vendita']))
    l'ho già usata ma non funziona, anche se sono numeri mi da l'errore

  4. #4
    Utente di HTML.it L'avatar di ade_v
    Registrato dal
    Jan 2001
    Messaggi
    459
    ... e is_numeric?
    ade_v@yahoo.it

    Fletto i muscoli e sono nel vuoto

    Se inviate messaggi privati, avvisatemi sul forum...

  5. #5
    niente da fare, mi inserisce i dati sia se sono numeri sia se non lo sono

  6. #6
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Credo che dovresti usare le espressioni regolari, qualcosa tipo:
    Codice PHP:
    [FONT=courier new]<?php

    if(preg_match('/^[0-9]+$/'$campo_da_controllare)) {
      
    // la var $campo_da_controllare contiene solo numeri
    } else {
      
    // dati non validi
    }

    ?>[/FONT]

  7. #7
    ora va un pò meglio, ma non ci siamo comunque...
    ---inserendo entrambi i dati non numerici non mi inserisce il record
    ---inserendo uno dei 2 numerici e l'altro no il record mi viene inserito nonostante abbia messo if(.... || ...)

    c'è anche un altro problemino, mi accetta solo numeri interi, mentre a me servono double

  8. #8
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Prova questo codice, puoi cambiare o aggiungere i nomi dei campi e il corrispettivo tipo di valere che conterranno nella variabile $filed_names. La funzione form_validate() si occupa di processare il contenuto dei campi valutando, di volta in volta, il relativo valore che essi contengono. Nota che all'inizio dovrai valorizzare tante variabili per quanti sono i campi su cui vuoi effettuare il controllo.
    Codice PHP:
    [FONT=courier new]<?php

    $testata 
    trim($_POST['testata']);
    $acquisto trim($_POST['acquisto']);
    $vendita trim($_POST['vendita']);

    //memorizzo nell'array i nomi ed i tipi dei campi
    $field_names = array("testata" => "string",
                         
    "acquisto" => "integer",
                         
    "vendita" => "integer");

    function 
    form_validate($fns) {
      foreach(
    $fns as $key => $value) {
        
    $field_value $key;
        global $
    $field_value;
        switch(
    $value) {
          case 
    "string":
            if(!
    preg_match('/^[\\w\\d]+$/', $$field_value)) {
            echo 
    "Il campo $field_value può contenere solo
                  caratteri alfanumerici.
    "
    ;
            }
          break;
          case 
    "integer":
            if(!
    preg_match('/^[\\d]+$/', $$field_value)) {
            echo 
    "Il campo $field_value può contenere solo
                  caratteri numerici.
    "
    ;
            } else {
              
    //conversione da intero a decimale
              //se hai ad esempio l'intero 5322255
              //l'output prodotto sarà 5.322.255,00
              
    $$field_value number_format
              
    ($$field_value2',''.');
            }
          break;
        }
      }
    }

    //richiama la funzione che effettuerà
    //il controllo su tutti i campi indicati
    //in $field_names, valutandone l'esattezza
    //dei dati inseriti...
    form_validate($field_names);

    ?>[/FONT]

  9. #9
    ho risolto cosi

    {
    if($_POST['testata']=='' || $_POST['acquisto']=='' || $_POST['vendita']=='')
    {
    echo "$_POST[testata]
    ";
    echo "$_POST[acquisto]
    ";
    echo "$_POST[vendita]
    ";
    echo "Non hai inserito uno dei valori

    ";
    echo "Torna indietro e inserisci tutti i dati
    ";
    }
    elseif(!is_numeric($_POST['acquisto']) || !is_numeric($_POST['vendita']))
    {
    echo "$_POST[testata]
    ";
    echo "$_POST[acquisto]
    ";
    echo "$_POST[vendita]
    ";
    echo "Impossibile inserire i dati nel Database

    ";
    echo "I campi PREZZO DI ACQUISTO e PREZZO DI VENDITA devono contenere un numero decimale separato con un punto

    ";
    echo "Torna indietro e inserisci tutti i dati
    ";
    }
    else
    {
    $db = mysql_connect("localhost", "ilc0rv0", "");
    mysql_select_db("edicola",$db);

    if($_POST['tipo']=='quotidiani')
    {
    $res=mysql_query("insert quotidiani values('$_POST[testata]','$_POST[acquisto]','$_POST[vendita]')", $db);
    $num=mysql_affected_rows();
    if($num>0)
    {
    echo "Inserimento completato con successo

    ";
    echo "Inserisci un nuovo elemento
    ";
    echo "Torna all'indice
    ";
    }
    else
    {
    echo "Inserimento fallito, prova di nuovo

    ";
    echo mysql_errno();
    echo "Torna indietro
    ";
    }
    }
    elseif($_POST['tipo']=='illustrati')
    {
    $res=mysql_query("insert illustrati values('$_POST[testata]',$_POST[pr_nostro],$_POST[prezzo])", $db);
    $num=mysql_affected_rows();
    if($num>0)
    {
    echo "Inserimento completato con successo

    ";
    echo "Inserisci un nuovo elemento
    ";
    echo "Torna all'indice
    ";
    }
    else
    {
    echo "Inserimento fallito, prova di nuovo

    ";
    echo "Torna indietro
    ";
    }
    }
    }
    }

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.