I'm new to programming and need help with loops in php. I need to make the page so that when you input two different numbers, all of the numbers in between them are displayed on the page, in a table, and if the ending number is lower than the starting number, then an error appears. Any help is appreciated.
<body>
<form method="post">
Starting Number: <br>
<input type="text" name="start" required><br><br>
Ending Number: <br>
<input type="text" name="end" required><br><br>
<input type="submit" name="subBtn"<br><br><br>
</form>
<?php
// using if statements to automatically set the grade and comment
if ($_POST['subBtn'])
// store the posted values from the form in variables
$start = $_POST['start'];
$end = $_POST['end'];
?>
<table border="1" style="width:100%" padding="15px">
<tr>
<td>Temperature (Celcius)</td>
<td>Temperature (Kelvin)</td>
<td>Temperature (Farenheit)</td>
</tr>
<tr>
<td>
<?php
$c = $start;
while($start >= $end){?>
<?php echo $start--;?>
<?php }?>
</td>
<td><?php
$k = start + 273;
while($k != $end + 272){?>
<?php echo $k--;?>
<?php }?>
</td>
<td>
<?php
$f = 212;
while($f >= 31){?>
<?php echo $f-=1.8;?>
<?php }?>
</td>
</tr>
</table>
</body>
First, use opening and closing brackets:
if ($_POST['subBtn']) {
$start = $_POST['start'];
$end = $_POST['end'];
... and close it at the end of your TABLE:
</table>
<?php } ?>
Then, perform a test:
if ($start <= $end){
echo 'Start temp needs to be higher than End temp';
}else{
... your other code here
Last, there is an infinite loop with your Kelvin calculation. check your calc and update the loop.
Firstly to check for an error, I would do something like this:
if($end < $start) {
echo 'Oops, your end number is lower than your start';
}
Then for the actual display logic this should do what you need:
for($i = $start; $i < $end; $i++) {
echo '<td>'.$i.'</td>';
}
This will display the numbers between $start
and $end
, if you want it inclusive then use <= in the logic part of the for loop.
I am not 100% certain but I believe you need to specify the action in the <form>
element as well, I believe it is defaulting to the current page so you should be able to get it working for testing.
I would recommend perhaps moving the PHP logic above the HTML just to split it out a bit as well, you could then put the actual items into a variable and echo that in the html.