2016-04-18 2 views
0

Ich versuche, einen PHP-Konverter zu machen, der Messungen mit einfachem und einfachem Code umsetzt (neu dazu). Ich hoffe, das Bild wird Ihnen helfen, zu verstehen, was ich versuche zu tun:PHP-Messumformer

ich eine HTML-Datei mit einem Formular erstellt haben, die wie folgt aussieht:

<form action="converter.php" method="post"> 
<input type="text" name="number"> 
<select name="choose"> 
     <option>Choose</option> 
     <option value="meter" id="meter">Meter</option> 
     <option value="cm" id="cm">Cm</option> 
     <option value="foot" id="fot">Fot</option> 
     <option value="inches" id="tum">Tum</option> 
<input type="submit" value="Convert!"> 
</form> 

Und eine PHP-Datei dass sehe so aus, und es ist nicht viel aber:

<?php  
$number = $_POST['number']; 
$choose = $_POST['choose']; 

$x = $number;  
echo "$number $choose <br>";  
?> 

Aaaand ich stecke fest. Ich weiß nicht wirklich, wie man die Werte sowohl mathematisch als auch in Code umwandelt. Egal, ob Sie mir den ganzen Code oder einen Hinweis darauf geben, was ich als nächstes tun soll, ich brauche nur einen Stoß in die richtige Richtung.

Vielen Dank!

+0

Sie wahrscheinlich einen Schalter schreiben gehen zu müssen, je nachdem, was Sie wählen und anders machen Berechnungen, die auf der von Ihnen getroffenen Wahl basieren. – Naruto

+0

Wie @Thamizhan sagte, müssen wir zuerst wissen, in welcher Einheit sich Ihr Input befindet. Cm? – scottevans93

+0

** Oder ** ist Ihr Dropdown eine Auswahl des Eingabetyps? Anschließend möchten Sie die Einheit in alle anderen Einheiten umwandeln? – scottevans93

Antwort

0

Simpler ein:

index.html

<form action="converter.php" method="post"> 
<input type="number" name="number" required> 
<select name="choose"> 
     <option>Choose</option> 
     <option value="meter" id="meter">Meter</option> 
     <option value="cm" id="cm">Cm</option> 
     <option value="foot" id="fot">Fot</option> 
     <option value="inches" id="tum">Tum</option> 
<input type="submit" value="Convert!"> 
</form> 

converter.php

<?php 
$number = $_POST['number']; 
$choose = $_POST['choose']; 

$meters = $number/($choose == 'cm'? 100 : ($choose == 'foot'? 3.28084 : ($choose == 'inches'? 39.3701 : 1))); 

echo "Meters : $meters<br/>"; 
echo "Cm : ".($meters*100)."<br/>"; 
echo "Foot : ".($meters*3.28084)."<br/>"; 
echo "Inches : ".($meters*39.3701)."<br/>"; 
+0

Sind Sie sicher, dass die Berechnung für diese Lösung richtig ist? – Mordor

+0

Wenn Sie irgendwelche Zweifel haben, überprüfen Sie mit Ihrem Rechner – Thamilan

+0

Nun, wenn ich 1 cm konvertieren will, sagt es, dass 1 cm ist 100 Meter – Mordor

0

Führen Sie die erforderlichen Berechnungen in der PHP-Datei aus.

Hinweis: Mit der Berechnung bearbeitet, aber nie getestet. Überprüfen Sie den Berechnungsteil.

HTML

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 

<script type="text/javascript"> 
$(document).ready(function() { 

    //called when key is pressed in textbox 
    $("#number").keypress(function (e) { 
    //if the letter is not digit then display error and don\'t type anything 
    if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) { 
       return false; 
    } 
    }); 
}); 
</script> 

<form action="converter.php" method="post"> 
<input type="text" name="number" id="number"> 
<select name="choose"> 
     <option>Choose</option> 
     <option value="meter" id="meter">Meter</option> 
     <option value="cm" id="cm">Cm</option> 
     <option value="foot" id="fot">Fot</option> 
     <option value="inches" id="tum">Tum</option> 
<input type="submit" value="Convert!"> 
</form> 

converter.php

<?php  
$number = isset($_POST['number']) ? $_POST['number'] : 0; 
$choose = isset($_POST['choose']) ? $_POST['choose'] : ''; 

switch ($choose) 
{ 
case 'meter': 
    $cm  = $number * 100; 
    $foot = $number * 3.2808; 
    $inches = $number * 39.370; 
    $Answer = 'Meters: '.$number.'<br />'. 
       'Cm: '.$cm.'<br />'. 
       'Foot: '.$foot.'<br />'. 
       'Inches: '.$inches; 

break; 

case 'cm': 
    $meter = $number/100; 
    $foot = $number * 0.032808; 
    $inches = $number * 0.39370; 
    $Answer = 'Cm: '.$cm.'<br />'. 
       'Meters: '.$number.'<br />'.    
       'Foot: '.$foot.'<br />'. 
       'Inches: '.$inches; 
break; 

case 'foot': 
    $meter = $number/3.2808; 
    $cm  = $number/0.032808; 
    $inches = $number * 12.000; 
    $Answer = 'Foot: '.$foot.'<br />'. 
       'Meters: '.$number.'<br />'. 
       'Cm: '.$cm.'<br />'.    
       'Inches: '.$inches; 
break; 

case 'inches': 
    $meter = $number/39.370; 
    $cm  = $number/0.39370; 
    $foot = $number/12.000; 
    $Answer = 'Inches: '.$inches.'<br />'. 
       'Foot: '.$foot.'<br />'. 
       'Meters: '.$number.'<br />'. 
       'Cm: '.$cm; 
break; 
default: 
    $Answer = ''; 
break; 
} 

echo $Answer; 
?> 
+0

wow! Danke! Kann ich fragen, warum Sie diesen Code am Anfang der PHP-Datei geschrieben haben: $ number = isset ($ _ POST ['number'])?$ _POST ['Nummer']: 0; $ wählen = isset ($ _ POST ['wählen'])? $ _POST ['Wählen']: ''; – Mordor

+0

Prüfen, ob die Variable gesetzt ist. Das ist der bessere Weg, die POST/GET-Variablen zu empfangen –

+0

Ich bearbeite die obige Antwort mit der Berechnung –

0

Ohne Ihre Eingabeeinheit Typ allwissend Sie Mutmaßungen tun werde ist. Mein Rat wäre, das Formular für eine einfachere Eingabe in den folgenden Code zu ändern. Dann ist es eine schnelle und einfache Division/Multiplikation, um das gewünschte Ergebnis zu erhalten. Hier ist ein schnelles Codebeispiel für den Formular- und den PHP-Verarbeitungscode.

Es gibt ein wenig mehr Code hinzuzufügen, einschließlich der zusätzlichen Konvertierungen und eine schnelle Überprüfung, um zu sehen, dass bestimmte Werte gesetzt sind, aber Sie sollten das Wesentliche davon hoffentlich bekommen.

<form action="converter.php" method="post"> 
    <fieldset><legend>Select Your Input Type and Value</legend> 
    <input type="number" name="inputNumber" step="any" value="" /> 
    <select name="inputFormat"> 
     <optgroup name="Choose"> 
     <option value="meter" id="meter">Meter</option> 
     <option value="cm" id="cm">Cm</option> 
     <option value="foot" id="fot">Fot</option> 
     <option value="inches" id="tum">Tum</option> 
     </optgroup> 
    </select> 
    </fieldset> 

    <fieldset><legend>Select your Output Type</legend> 
    <select name="outputFormat"> 
     <optgroup name="Choose"> 
     <option value="meter" id="meter">Meter</option> 
     <option value="cm" id="cm">Cm</option> 
     <option value="foot" id="fot">Fot</option> 
     <option value="inches" id="tum">Tum</option> 
     </optgroup> 
    </select> 
    </fieldset>  

    <input type="submit" name="submitForm" value="Convert!" /> 
</form> 



<?php 
$outputNumber=0; 
$inputNumber = (float)$_POST['inputNumber']; 
$inputFormat = $_POST['inputFormat']; 
$outputFormat = $_POST['outputFormat']; 

    switch($inputFormat){ 
    case "meter": 

     switch ($outputFormat){ 
     case "meter": $outputNumber = $inputNumber;break;   //METER TO METER 
     case "cm": $outputNumber = $inputNumber*100;break;   //METER TO CM 
     case "foot": $outputNumber = $inputNumber*3.2808399;break; //METER TO FT 
     case "inches": $outputNumber = $inputNumber*39.3700787;break;//METER TO INCHES 

     } 

    break; 

    case "cm": 

    //ADD CONVERSION SWITCH IN HERE 
    break; 

    case "foot": 

    //ADD CONVERSION SWITCH IN HERE 
    break; 

    case "inches": 

    //ADD CONVERSION SWITCH IN HERE 
    break; 
    } 


echo $outputNumber; 

?>