Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: PHP, isNumeric()

  1. #1
    Utente di HTML.it L'avatar di Valeria89
    Registrato dal
    Apr 2015
    residenza
    Pisa
    Messaggi
    129

    PHP, isNumeric()

    Ho creato questo script, che mi inserisce valori in database, questa parte funziona. Non mi funziona il controllo sui valori che devono essere necessariamente numerici. Il controllo non lo fa, come se non ci fosse, se inserisco una stringa, nel db mi memorizza 0.
    Codice PHP:
    <?php
     session_start
    ();
          if(isset(
    $_POST['add']))
        {
            if(! 
    get_magic_quotes_gpc() )
            {
                
    $n addslashes ($_POST['n']);
                
    $c addslashes ($_POST['c']);
                
    $g addslashes ($_POST['g']);
                
    $h addslashes ($_POST['h']);
                
    $i addslashes ($_POST['i']);
                
    $j addslashes ($_POST['j']);
            }
            else
            {
                
    $n $_POST['n'];
                
    $c $_POST['c'];
                
    $g $_POST['g'];
                
    $h $_POST['h'];
                
    $i $_POST['i'];
                
    $j $_POST['j'];
            }
            
    mysql_select_db('db');


    $tests = array(
        
    $n,
        
    $c,
        
    $g,
        
    $h,
        
    $i,
        
    $j
    );



    $i=0;
    foreach (
    $tests as $element) {
        
        if (
    is_numeric($element)) {
         
    $tests[$i]=0;
        } else {
         
    $tests[$i]=1;;
        }
    $i=$i++;
    }
    $j 0;
    while (
    $tests[$j]==1):
        
    $j++;
    endwhile;
     if (
    $j==$i) {
         
    $num=0;
        } else {
         
    $num=1;;
        }
    ($num==1)
        {
            
    $_SESSION['form_error'] = 'Numeric field! Please insert a number.';
            
    header("location: errore.php"); 
        }
            else
            {
            
    $sql1 "INSERT INTO...";
            
    $retval1 mysql_query$sql1$cn );
            if(! 
    $retval1 )
            {
                die(
    'Could not enter data: ' mysql_error());
            }}
        
        
    mysql_close($cn);
        }

    ?>
    Grazie a tutti.

  2. #2
    Questa roba è sbagliata... $i=$i++; $i vale due volte 0 prima di iniziare ad essere incermentato!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di Valeria89
    Registrato dal
    Apr 2015
    residenza
    Pisa
    Messaggi
    129
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Questa roba è sbagliata... $i=$i++; $i vale due volte 0 prima di iniziare ad essere incermentato!
    Oltre a quell'errore, ho sbagliato a chiamare gli indici dell'array col nome delle variabili che già usavo per altro. Ho corretto. non funziona comunque.

  4. #4
    Utente di HTML.it L'avatar di Valeria89
    Registrato dal
    Apr 2015
    residenza
    Pisa
    Messaggi
    129
    Ho pensato di evitare la funzione isNumeric(), facendo un controllo sulle variabili, se valgono 0 far visualizzare l'errore. E' sbagliata come scorciatoia?

  5. #5
    secondo me è proprio sbagliato concettualmente.
    quel $i in un foreach, come se fosse un normale ciclo for, nn ha molto senso.
    secondo me questo dovrebbe essere più giusto:
    Codice PHP:
    foreach ($tests as $element) {
      if(
    is_numeric($element)) {
          echo 
    'ok';
      } else {
          echo 
    'ko';
      }

    non l'ho testato, però in un foreach, in teoria, quell'indicie non ha molto senso.

  6. #6
    codice:
    $j = 0;
    while ($tests[$j]==1):
        $j++;
    endwhile;
     if ($j==$i) {
         $num=0;
        } else {
         $num=1;;
        }
    eh?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it L'avatar di Valeria89
    Registrato dal
    Apr 2015
    residenza
    Pisa
    Messaggi
    129
    Avete ragione, abbiate pietà di me,è lunedì!

  8. #8
    Quote Originariamente inviata da Valeria89 Visualizza il messaggio
    Avete ragione, abbiate pietà di me,è lunedì!
    Il problema non è il lunedì ma più che altro capire cosa dovrebbe fare quel codice!!!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it L'avatar di Valeria89
    Registrato dal
    Apr 2015
    residenza
    Pisa
    Messaggi
    129
    Ho risolto, scusatemi!

  10. #10
    Quote Originariamente inviata da Valeria89 Visualizza il messaggio
    Ho risolto, scusatemi!
    Cioè?!?!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.