Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    108

    Piccolo problema con if es else

    ciao a tutti,
    sapete dirmi perchè non riesco ad assegnare a perc1 il valore 2.7 se prim è > di 2500?
    dove sbaglio?
    codice:
    <html>
    <body>
    <?php
    $prim=$_POST['prim']; 
    $fiss= 0.35; 
    $perc1= 3.4;  
    if ($prim!=null){ //Proseguo se almeno un numero è definito
    if ($prim==null){ $prim=0;} 
    $risperce=$prim /100 * $perc1;
    $risu1=$prim-$fiss-$risperce;
    $risu=round($risu1, 2);
    $risu2=$fiss+$risperce;
    $risu3=round($risu2, 2);}
    if ($prim<=2500){ print "ok prim <=2500";}
    else{
    $perc1= 2.7;
    }
    ?>
    <form action="index.php" method="post">
    <input type="text" name="prim" size="5" maxlength="5" value="<?php echo $prim;?>">Importo<br
    
    
    <input type="text" name="risu3" size="6" maxlength="6" value="<?php echo $risu3;?>">Totale tariffe
    
    <input type="text" name="risu" size="6" maxlength="6" value="<?php echo $risu;?>">Importo netto
    
    <input type="submit" value="Calcola">
    </form>

  2. #2
    E da dove lo dovresti vedere?

  3. #3
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    108
    lo vedo dal risultato che non viene assegnato 2.7

  4. #4
    Questo perchè alcune condizioni non vengono effettuate... ecco il risultato a video indentando:

    Codice PHP:
    <?php
    $prim
    =$_POST['prim']; 
    $fiss0.35
    $perc13.4;  
    if (
    $prim!=null)
    //Proseguo se almeno un numero è definito
        
    if ($prim==null)
        {
            
    $prim=0;
        } 
        
    $risperce=$prim /100 $perc1;
        
    $risu1=$prim-$fiss-$risperce;
        
    $risu=round($risu12);
        
    $risu2=$fiss+$risperce;
        
    $risu3=round($risu22);
    }
    if (
    $prim<=2500)
    {
        print 
    "ok prim <=2500";
    }
    else
    {
        
    $perc12.7;
    }
    ?>
    Come puoi notare dal codice inserito da te, il caso che sia uguale a null avviene solo se diverso da null...

    Inoltre si, alla fine se $prim<=2500 stampi a video, altrimenti cambi valore...
    L'unica cosa che puoi notare è che se prim non è come lo vuoi te allora non stampa a video niente.

  5. #5
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    108
    infatti non deve stampare nulla, vorrei solo che se il valore inserito è maggiore di 2500 la percentuale usata per il calcolo sia diversa.
    quel "ok prim <=2500" l'ho messo solo per testare il funzionameto, come posso risolvere?

  6. #6
    Originariamente inviato da crissss
    lo vedo dal risultato che non viene assegnato 2.7
    Peccato che il risultato lo calcoli prima di assegnare il valore 2.7 a perc1!!!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    devi cambiare l'ordinamento del tutto (ed il controllo per il vuoto), qualcosa di simile a:

    Codice PHP:
    <?php
    $prim
    =$_POST['prim']; 
    $fiss0.35
    $perc13.4;
    // Se prim non esiste o è vuota.
    if (!isset($prim) or trim($prim) == "")
    {
        
    $prim 0;
    }

    // Controlliamo il valore di prim

    if ($prim>2500)
    {
        
    $perc1 2.7;
    }

    $risperce=$prim /100 $perc1;
    $risu1=$prim-$fiss-$risperce;
    $risu=round($risu12);
    $risu2=$fiss+$risperce;
    $risu3=round($risu22);

    ?>
    Devi testarla però.

  8. #8
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, allora ci sono diverse cose scorrette...ad esempio se il tuo $prim proviene da un post non può essere mai NULL al massimo sarà una stringa vuota...quindi ti consiglio di cambiare completamente il codice...e poi vedo questa condizione che non ha proprio senso...
    if ($prim!=null)
    { //Proseguo se almeno un numero è definito
    if ($prim==null)
    {
    $prim=0;
    }
    Come può $prim non essere NULL e poi diventarlo senza nessuna istruzione in mezzo?quel controllo messo lì non ha senso...cambia il codice così...
    Codice PHP:
    $prim=$_POST['prim']; 
    $fiss0.35
    $perc13.4;  
    if (
    $prim!="")
    //Proseguo se almeno un numero è definito
        
    $risperce=$prim /100 $perc1;
        
    $risu1=$prim-$fiss-$risperce;
        
    $risu=round($risu12);
        
    $risu2=$fiss+$risperce;
        
    $risu3=round($risu22);
        if (
    $prim<=2500) print "ok prim <=2500";
        else 
    $perc12.7;
    }
    else 
    $prim=0

  9. #9
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    108
    ma ti rendi conto avevo pensato a tutto tranne che a questa cosa! grazie mille si può chiudere!

  10. #10
    Utente bannato
    Registrato dal
    Nov 2011
    Messaggi
    108
    scusate questa stringa a cosa serve?
    codice:
    if (!isset($prim) or trim($prim) == "")

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.