2017-07-31 2 views
1

J'ai du mal à faire fonctionner mon convertisseur d'unité PHP.Convertisseur d'unités PHP

J'essaie d'obtenir plusieurs convertisseurs mais je n'arrive pas à le faire fonctionner.

Ce serait génial si quelqu'un pouvait me montrer où je me trompe et m'aider à le faire fonctionner. :)

<?php 
if($_POST){ 
    $fahrenheit = $_POST['fahrenheit']; 
    $celsius = ($fahrenheit - 32)*5/9; 
} 

if($_POST){ 
    $celsius = $_POST['celcius']; 
    $fahrenheit = ($celcius - 32)*5/9; 
} 
?> 


     <form action="" method="post"> 
     Fahrenheit: <input type="text" name="fahrenheit" /><br /> 
     <?php 
     if(isset($celsius)){ 
      echo "Celsius = ".$celsius; 
     } 
     ?> 
     </form> 

<?php 
    function fahrenheit_to_celsius($given_value) 
    { 
     $celsius=5/9*($given_value-32); 
     return $celsius ; 
    } 

    function celsius_to_fahrenheit($given_value) 
    { 
     $fahrenheit=$given_value*9/5+32; 
     return $fahrenheit ; 
    } 

    function inches_to_centimeter($given_value) 
    { 
     $centimeter=$given_value/2.54; 
     return $centimeter ; 
    } 

    function centimeter_to_inches($given_value) 
    { 
     $inches=$given_value*2.54 
    } 
?> 

<html> 
    <head> 
     <title>Temp. Conv.</title> 
    </head> 
    <body> 
     <form action="" method="post"> 
     <table> 
<!-- FAHRENHEIGHT & CELCIUS V --> 
      <tr> 
       <td> 
        <select name="first_temp_type_name"> 
         <option value="fahrenheit">Fahrenheit</option> 
         <option value="celsius">Celsius</option> 
        </select> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <input type="text" name="given_value"> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <select name="second_temp_type_name"> 
         <option value="fahrenheit">Fahrenheit</option> 
         <option value="celsius">Celsius</option> 
        </select> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <input type="submit" name="btn" value="Convert"> 
       </td> 
      </tr> 

<!--FAHRENHEIGHT & CELCIUS^--> 

<!-- CENTEMETERS & INCHES --> 

      <tr> 
       <td> 
        <select name="first_length_type_name"> 
         <option value="centimeter">centimeter</option> 
         <option value="inches">Inches</option> 
        </select> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <input type="text" name="given_value"> 
       </td> 
      </tr> 

      <tr> 
       <td> 
        <select name="second_length_type_name"> 
         <option value="centimeter">centimeter</option> 
         <option value="inches">Inches</option> 
        </select> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <input type="text" name="given_value"> 
       </td> 
      </tr> 

<!--CENTEMETERS & INCHES ^--> 

      <tr> 
       <td> 
        <?php 
        if(isset($_POST['btn'])) 
        { 
         $first_temp_type_name=$_POST['first_temp_type_name']; 
         $second_temp_type_name=$_POST['second_temp_type_name']; 
         $given_value=$_POST['given_value']; 
         if($first_temp_type_name=='fahrenheit') 
         { 
          $celsious=fahrenheit_to_celsius($given_value); 
          echo "Fahrenheit $given_value = $celsious Celsious"; 
         } 
         if($first_temp_type_name=='celsius') 
         { 
          $fahrenheit=celsius_to_fahrenheit($given_value); 
          echo "Celsious $given_value = $fahrenheit Fahrenheit"; 
         } 


        } 

        if(isset($_POST['btn'])) 
        { 
         $first_length_type_name=$_POST['first_length_type_name']; 
         $second_length_type_name=$_POST['second_length_type_name']; 
         $given_value=$_POST['given_value']; 
         if($first_length_type_name=='centimeter') 
         { 
          $centimeter=centimeter_to_inches($given_value); 
          echo "Centimeter $given_value = $inches Inches"; 
         } 
         if($first_length_type_name=='inches') 
         { 
          $centimeter=inches_to_centimeter($given_value); 
          echo "Inches $given_value = $centimeter centimeter"; 
         } 


        } 

        ?> 
       </td> 
      </tr> 
     </table> 
     </form> 
    </body> 
</html> 

Je sais qu'il se passe beaucoup de choses, mes excuses.

Toute aide est grandement appréciée :)

+0

'if ($ _ POST) {' a besoin clé du tableau de vérification – Scuzzy

+0

comment puis-je à faire cela, je suis désolé de nouveau à PHP. –

+0

'if ($ _POST)' est valide @Scuzzy, il vérifie simplement si quelque chose (du tout) a été envoyé avec la méthode POST – Qirel

Répondre

0

Bonjour, veuillez utiliser le code suivant.

<?php 

ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 

$convertedTemperature = 0; 

/* The condition is entered when the request is of POST type. */ 
if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    $temperature   = $_POST['temperature']; 
    $fromConvertionUnit  = $_POST['fromConvertionUnit']; 
    $toConvertionUnit  = $_POST['toConvertionUnit']; 

/* if the temperature conversion are of same unit then no need for conversion */ 

    if($fromConvertionUnit == $toConvertionUnit){ 
     $convertedTemperature = $temperature; 
    }else if($fromConvertionUnit == 'fahrenheit' && $toConvertionUnit == 'celcius') { 

/* formula to convert Fahrenheit to Celcius */ 
     $convertedTemperature = ($temperature - 32) * 0.5556; 
    }else if($fromConvertionUnit == 'celcius' && $toConvertionUnit == 'fahrenheit') { 

/* formula to convert Celcius to Fahrenheit */ 
     $convertedTemperature = ($temperature * 1.8) + 32; 
    } 
} 
?> 
<!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Temperature Converter</title> 
    </head> 
    <body> 
     <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> 
      <div> 
<!-- If the temperature value has be submitted and has data then it will prefilled --> 
       <label for="temperature">Temperature</label> <br/> 
       <input type="number" name="temperature" id="temperature" value="<?php echo (!empty($temperature)) ? $temperature : '' ?>"> 
      </div> 
      <div> 
       <label for="fromConvertionUnit">Select From Convertion Unit</label><br/> 
       <select name="fromConvertionUnit" id="fromConvertionUnit"> 
        <option value="fahrenheit">Fahrenheit</option> 
        <option value="celcius">Celcius</option> 
       </select> 
     </div> 
     <div> 
       <label for="toConvertionUnit">Select To Convertion Unit</label><br/> 
       <select name="toConvertionUnit" id="toConvertionUnit"> 
        <option value="fahrenheit">Fahrenheit</option> 
        <option value="celcius">Celcius</option> 
       </select> 
     </div> 
<!-- Once the page is submitted and conversion is done the respective values will be added in the following section --> 
      <div> 
     Converted Temperature <b> <?php echo (!empty($temperature)) ? $temperature : '--' ?></b> Value From <b><?php echo (!empty($fromConvertionUnit)) ? $fromConvertionUnit : '--' ?></b> TO <b><?php echo (!empty($toConvertionUnit)) ? $toConvertionUnit : '--' ?></b> is <b><?php echo (!empty($convertedTemperature)) ? $convertedTemperature : '--' ?><b/> 
       <label for="converted_value">Converted Value</label><br/> 
<input type="number" value="<?php echo (!empty($convertedTemperature)) ? $convertedTemperature : '0' ?>"> 
      </div> 
      <div> 
<input type="submit" value="Convert"> 
      </div> 
     </form> 
    </body> 
</html> 

enter image description here

+0

Pourquoi quelqu'un devrait-il copier et coller cela? Qu'est-ce qui le fait fonctionner, qu'avez-vous changé? Une bonne réponse comprend toujours du texte et une description. – Qirel

+0

@Qirel J'ai ajouté des commentaires dans mon code. Et tout d'abord la condition qu'il avait ajouté 2 fois la condition qui était inutile et les formules n'étaient pas appliquées correctement. Et en action, il n'avait pas mentionné quelle page rediriger, ce qui doit être géré correctement en utilisant ce code en action: . Donc, avec tout cela, je lui avais dit d'utiliser mon code. J'espère que cela répond à votre question. Pouvez-vous s'il vous plaît re-voter ma réponse. –

0

Si vous voulez faire un convertisseur, tout ce que vous avez besoin est une entrée - et un menu déroulant entre ce que vous souhaitez convertir. Ensuite, utilisez un switch en PHP lorsque le formulaire a été soumis pour vérifier quelle fonction vous souhaitez utiliser.

Votre problème actuel est que vous écrasez beaucoup de valeurs et que vous ne vérifiez pas les bons boutons. Cela le complique aussi.

Vous pouvez continuer à développer ce convertisseur en vous assurant que l'entrée est un nombre réel - en utilisant filter_var() avec un drapeau qui convient à votre besoin. Vous pouvez soit valider il ou l'assainir il, voir FILTER_SANITIZE vs FILTER VALIDATE, whats the difference - and which to use?.

<?php 
if (isset($_POST['submit'])) { 
    switch ($_POST['convert']) { 
     case "cm-in": 
      $result = centimeter_to_inches($_POST['value']); 
      $old_unit = 'cm'; 
      $new_unit = ' inches'; 
      break; 
     case "in-cm": 
      $result = inches_to_centimeter($_POST['value']); 
      $old_unit = ' inches'; 
      $new_unit = 'cm'; 
      break; 
     case "f-c": 
      $result = fahrenheit_to_celsius($_POST['value']); 
      $old_unit = ' Farenheit'; 
      $new_unit = ' Celcius'; 
      break; 
     case "c-f": 
      $result = celsius_to_fahrenheit($_POST['value']); 
      $old_unit = ' Celcius'; 
      $new_unit = ' Farenheit'; 
      break; 
    } 
} 

function fahrenheit_to_celsius($given_value) { 
    return 5/9*($given_value-32); 
} 

function celsius_to_fahrenheit($given_value) { 
    return $given_value*9/5+32; 
} 

function inches_to_centimeter($given_value) { 
    return $given_value/2.54; 
} 

function centimeter_to_inches($given_value) { 
    return $given_value*2.54; 
} 
?> 


<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Conversions</title> 
    </head> 
    <body> 
     <form method="post"> 
      Convert <input type="text" name="value" /><br /> 
      <select name="convert"> 
       <option value="">--Select one--</option> 
       <optgroup label="Units of Length"> 
        <option value="cm-in">Centimeter to inches</option> 
        <option value="in-cm">Inches to centimeter</option> 
       </optgroup> 

       <optgroup label="Units of Temperature"> 
        <option value="f-c">Farenheit to Celcius</option> 
        <option value="c-f">Celcius to Farenheit</option> 
       </optgroup> 
      </select> 
      <input type="submit" name="submit" value="Convert" /> 
     </form> 

     <?php 
     if (!empty($result)) 
      echo '<p>'.$_POST['value'].$old_unit.' equals '.$result.$new_unit.'</p>'; 
     ?> 
    </body> 
</html>