Cho nên. Có 4 phép tính Tất cả chúng đều tự hoạt động mà không cần thêm bất cứ thứ gì khi tôi lặp lại chúng. Tôi muốn tạo kiểu cho chúng. Vì vậy, tôi bọc chúng trong thẻ p và áp dụng kiểu dáng. Tại sao phép nhân và phép chia thì chạy tốt, nhưng phép cộng và phép trừ thì không? Tôi đoán đó là điều gì đó liên quan đến dấu cộng và dấu trừ, nhưng chính xác thì tại sao nó lại xảy ra? và công việc xung quanh là gì? Tôi đã thử gói nó chỉ trong các thẻ p đơn giản, không có bất kỳ kiểu dáng hay bất kỳ thứ gì và nó cũng không hoạt động.
Và khi tôi chạy nó trên máy chủ cục bộ của riêng mình, nó không những không hoạt động mà còn báo lỗi cho tôi:
Warning: A non-numeric value encountered in C:\XAMPP\htdocs\phplearning\calculator\php calculator.php on line 36
Đây là php trong cloud9. – https://ide.c9.io/sandrisk/example
<body>
<form style="text-align: center; margin-top: 50px;">
<input type="text" name="num1" style="margin: 40px;" placeholder="number1">
<input type="text" name="num2" style="margin: 40px;" placeholder="number2">
<select name="operator">
<option>None</option>
<option>Add</option>
<option>Subtract</option>
<option>Multiply</option>
<option>Divide</option>
</select>
<br>
<button type="submit" name="submit" value="submit">Calculate!</button>
</form>
<p style="text-align: center;">The answer is this:</p>
<?php
if(isset($_GET['submit'])) {
$result1 = $_GET['num1'];
$result2 = $_GET['num2'];
$operator = $_GET['operator'];
switch($operator) {
case "None":
echo "No method selected";
break;
case "Add":
echo '<p style="text-align: center; border: 1px solid black; padding: 10px; width: 100px; margin: 0 auto;">' . $result1 + $result2 . '</p>';
break;
case "Subtract":
echo '<p style="text-align: center; border: 1px solid black; padding: 10px; width: 100px; margin: 0 auto;">' . $result1 - $result2 . '</p>';
break;
case "Multiply":
echo '<p style="text-align: center; border: 1px solid black; padding: 10px; width: 100px; margin: 0 auto;">' . $result1 * $result2 . '</p>';
break;
case "Divide":
echo '<p style="text-align: center; border: 1px solid black; padding: 10px; width: 100px; margin: 0 auto;">' . $result1 / $result2 . '</p>';
}
}
?>
</body>
Có ai có ý tưởng nào? Cảm ơn.
PS Tôi rất mới với PHP.
Các giá trị bạn nhận được từ $_GET sẽ là các chuỗi. Bạn có thể thực hiện các phép toán trên chuỗi. Dưới đây tôi đã thêm (float) trước mỗi đầu vào nhận được để thử và chuyển đổi chúng thành một số. Tôi cũng đã làm cho mã của bạn KHÔ hơn (Không lặp lại chính mình) bằng cách chỉ có một dòng duy nhất để lặp lại kết quả trong phần tử p.
<?php
if (isset($_GET['submit'])) {
$result1 = (float) $_GET['num1'];
$result2 = (float) $_GET['num2'];
$operator = $_GET['operator'];
if ($operator == 'None') {
echo "No method selected";
} else {
switch ($operator) {
case "Add":
$calcResult = $result1 + $result2;
break;
case "Subtract":
$calcResult = $result1 - $result2;
break;
case "Multiply":
$calcResult = $result1 * $result2;
break;
case "Divide":
$calcResult = $result1 / $result2;
}
echo '<p style="text-align: center; border: 1px solid black; padding: 10px; width: 100px; margin: 0 auto;">' . $calcResult . '</p>';
}
}
?>
Bạn vẫn cần tính toán cách bạn sẽ xác thực hai đầu vào thực sự là số, vì vậy bạn không cố thêm 4 + C.
1 lượt thích