Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    108

    Errore semplice calcolatrice in php

    Salve ragazzi, sto cercando di apprendere il php e di fare qualche piccolo script alla mia portata.
    Sto lavorando ad una calcolatrice, ma mi dà questo errore:
    Parse error: parse error in c:\programmi\easyphp1-8\www\calcolatrice.php on line 2
    Il codice l'ho suddiviso in una pagina html e una php..
    HTML:
    calcola.html
    codice:
    <html>
    <head>
    <title>Calcolatrice</title>
    </head>
    <body>
    <form method="post" action="calcolatrice.php">
    <table>
    <tr>
    <td><input name="num1" type="text"></td>
    <td><select name="operazione" >
    <option selected name="operazione" value="+"> + </option>
    <option name="operazione" value="-"> - </option>
    <option name="operazione" value="x"> x </option>
    <option name="operazione" value="/"> ÷ </option>
    </select></td>
    <td><input name="num2" type="text"></td>
    </tr>
    <tr>
    <td colspan="3"><input type="submit" value="Calcola"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    PHP:
    calcolatrice.php
    Codice PHP:
    <?php
    $num1 
    _POST$['num1'];
    $num2 _POST$['num2'];
    $operazione _POST$['operazione'];
    switch(
    $operazione){
        case 
    '+':
            echo 
    "$num1 + $num2 = " $num1 $num2;
            break;
        case 
    '-':
            echo 
    "$num1 - $num2 = " $num1 $num2;
            break;
        case 
    '*':
            echo 
    "$num1 * $num2 = " $num1 $num2;
            break;
        case 
    '/':
            echo 
    "$num1 / $num2 = " $num1 $num2;
            break;
    }
    ?>
    Grazie mille

  2. #2
    $num1 = _POST$['num1'];
    $num2 = _POST$['num2'];

    :master: :master:

    $num1 = $_POST['num1'];
    $num2 = $_POST['num2'];



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    108
    Ahhh che erroraccio VVoVe:
    Ho corretto e messo dei punti che avevo dimenticato :rollo:
    Si vede che sono ancora un neofita

    Grazie mille ora funziona ^^
    EDIT:

    Ora volevo unire i due file per comodità:
    Codice PHP:
    <html>
    <head>
    <title>Calcolatrice</title>
    </head>
    <body>
    <form method="post" action="calcolatrice.php">
    <table>
    <tr>
    <td><input name="num1" type="text"></td>
    <td><select name="operazione" >
    <option name="+" value="+"> + </option>
    <option name="-" value="-"> - </option>
    <option name="*" value="x"> x </option>
    <option name="/" value="/"> ÷ </option>
    </select></td>
    <td><input name="num2" type="text"></td>
    </tr>
    <tr>
    <td colspan="3"><input type="submit" value="Calcola"></td>
    </tr>
    </table>
    </form>
    <?php
    $num1 
    $_POST['num1'];
    $num2 $_POST['num2'];
    $operazione $_POST['operazione'];
    switch(
    $operazione){
        case 
    '+':
            echo 
    "$num1 + $num2 = " $num1 $num2;
            break;
        case 
    '-':
            echo 
    "$num1 - $num2 = " $num1 $num2;
            break;
        case 
    '*':
            echo 
    "$num1 * $num2 = " $num1 $num2;
            break;
        case 
    '/':
            echo 
    "$num1 / $num2 = " $num1 $num2;
            break;
    }
    ?>
    </body>
    </html>
    però sotto al modulo mi dà anche questo errore:
    Notice: Undefined index: num1 in c:\programmi\easyphp1-8\www\calcolatrice.php on line 24

    Notice: Undefined index: num2 in c:\programmi\easyphp1-8\www\calcolatrice.php on line 25

    Notice: Undefined index: operazione in c:\programmi\easyphp1-8\www\calcolatrice.php on line 26

    come mai? :berto:

  4. #4
    imposta la pagina come segue, ma occhio ad altre imprecisioni che non voglio toglierti il piacere di scoprire.

    Codice PHP:
    <?php
    if(!empty($_POST['Calcola']))   {

    $num1 $_POST['num1'];
    $num2 $_POST['num2'];
    $operazione $_POST['operazione'];

    switch(
    $operazione){
        case 
    '+':
            echo 
    "$num1 + $num2 = " $num1 $num2;
            break;
        case 
    '-':
            echo 
    "$num1 - $num2 = " $num1 $num2;
            break;
        case 
    '*':
            echo 
    "$num1 * $num2 = " .$num1 $num2;
            break;
        case 
    '/':
            echo 
    "$num1 / $num2 = " $num1 $num2;
            break;
    }

    }
    ?>

    <html>
    <head>
    <title>Calcolatrice</title>
    </head>
    <body>
    <form method="post" action="calcolatrice.php">
    <table>
    <tr>
    <td><input name="num1" type="text"></td>
    <td><select name="operazione" >
    <option name="+" value="+"> + </option>
    <option name="-" value="-"> - </option>
    <option name="*" value="x"> x </option>
    <option name="/" value="/"> ÷ </option>
    </select></td>
    <td><input name="num2" type="text"></td>
    </tr>
    <tr>
    <td colspan="3">
    <input type="submit" name="Calcola" value="Calcola"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    108
    Grazie mille!
    Or ora ho corretto un piccolo errore nel form per quanto riguarda la moltiplicazione.
    Il resto sembra funzioni tutto.. solo una piccola stranezza:

    Codice PHP:
        case '+':
            echo 
    "$num1 + $num2 = " $num1 $num2;
            break;
        case 
    '-':
            echo 
    "$num1 - $num2 = " $num1 $num2;
            break; 
    Dovrebbe darmi ad esempio,
    7 + 7 = 14
    8 - 7 = 1

    Solo che non lo fa e mi dà direttamente 14 ed 1, mentre invece alla moltiplicazione e alla divisione funziona correttamente

  6. #6
    Codice PHP:
    echo "$num1 + $num2 = " .( $num1 $num2); 

  7. #7
    echo "\$num1 + \$num2 = " . $num1+$num2;
    sì comunque nelle stringhe per mettere il $ e non farle interpretare come variabili metti il \ avanti al $ <.<

  8. #8
    Originariamente inviato da TheMaker94
    Grazie mille!
    Or ora ho corretto un piccolo errore nel form per quanto riguarda la moltiplicazione.
    Il resto sembra funzioni tutto.. solo una piccola stranezza:

    Codice PHP:
        case '+':
            echo 
    "$num1 + $num2 = " $num1 $num2;
            break;
        case 
    '-':
            echo 
    "$num1 - $num2 = " $num1 $num2;
            break; 
    Dovrebbe darmi ad esempio,
    7 + 7 = 14
    8 - 7 = 1

    Solo che non lo fa e mi dà direttamente 14 ed 1, mentre invece alla moltiplicazione e alla divisione funziona correttamente
    Probabile che sia dovuto al fatto che + e - oltre ad essere operatori aritmetici sono pure operatori per la concatenazione di stringhe.

    Eviti ogni errore passando le operazioni tra parentesi. D'altronde + e - hanno una minore precedenza rispetto a * e / ed e' quindi meglio, quando non obbligato, racchiuderle tra parentesi.

    Vedo comunque pessima l'idea di passare l'operatore come stringa via POST. Forse sarebbe meglio usare una stringa tipo: piu, meno, per, diviso. Magari sara' pure lo stesso perche' qualunque cosa venga passata tramite POST sara' di suo una stringa, ma e' molto meglio evitare "confusioni".

    Codice PHP:
        case '+':    // metterei 'piu'
            
    echo "$num1 + $num2 = " . ($num1 $num2);    // le parentesi
            
    break;
        case 
    '-':    // 'meno'
            
    echo "$num1 - $num2 = " . ($num1 $num2);
            break; 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    108
    Innanzitutto, grazie mille a tutti del vostro supporto
    Ho modificato il codice come segue, inserendo anche l'elevazione a potenza:

    Codice PHP:

    <?php
    if(!empty($_POST['Calcola']))   {

    $num1 $_POST['num1'];
    $num2 $_POST['num2'];
    $operazione $_POST['operazione'];

    switch(
    $operazione){
        case 
    'piu':
            echo 
    "$num1 + $num2 = " . ($num1 $num2);
            break;
        case 
    'meno':
            echo 
    "$num1 - $num2 = " . ($num1 $num2);
            break;
        case 
    'per':
            echo 
    "$num1 * $num2 = " . ($num1 $num2);
            break;
        case 
    'diviso':
            echo 
    "$num1 / $num2 = " . ($num1 $num2);
            break;
        case 
    'potenza':
        echo 
    "$num1 ^ $num2 = " . (bcpow($num1$num2));
        break;
    }

    }
    ?>

    <html>
    <head>
    <title>Calcolatrice</title>
    </head>
    <body>
    <form method="post" action="#">
    <table>
    <tr>
    <td><input name="num1" type="text"></td>
    <td><select name="operazione" >
    <option name="piu" value="piu"> + </option>
    <option name="meno" value="meno"> - </option>
    <option name="per" value="per"> x </option>
    <option name="diviso" value="diviso"> ÷ </option>
    <option name="potenza" value="potenza"> ^ </option>
    </select></td>
    <td><input name="num2" type="text"></td>
    </tr>
    <tr>
    <td colspan="3">
    <input type="submit" name="Calcola" value="Calcola"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    Così mi sembra vada più che bene.. notate altri errori?

  10. #10
    nelle option il name non serve perche' e' usato quello descritto in select, basta il value..

    Dovresti inoltre prevenire l'errore della divisione per 0 con una if. Questo e' un mero esempio:

    Codice PHP:
        case 'diviso':
            if(
    $num2 == 0) {
              exit(
    "errore, divisione per 0");
            } else {
            echo 
    "$num1 / $num2 = " . ($num1 $num2);
            }
            break; 
    sempre per fare pratica potresti mettere all'inizio dello script la stampa di $_POST per renderti conto di come gira il fumo....

    Codice PHP:
    <?php
    if(!empty($_POST['Calcola']))   {

    echo 
    "<pre>";
    print_r($_POST);
    echo 
    "</pre>";

    $num1 $_POST['num1'];
    $num2 $_POST['num2'];
    $operazione $_POST['operazione'];

    .... 
    etc

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.