0

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>
5
  • First off, this will never happen if ($_POST['subBtn']){...} as will the rest of your code, since forms default to a GET method if a POST method isn't used. Commented May 16, 2016 at 14:52
  • I use a post method though. Commented May 16, 2016 at 14:54
  • 1
    oh, where's that? <form> nothing tells me that here. Commented May 16, 2016 at 14:54
  • possible duplicate of PHP: “Notice: Undefined variable” and “Notice: Undefined index” Commented May 16, 2016 at 14:55
  • I fixed that, is anything else wrong? Commented May 16, 2016 at 14:57

2 Answers 2

1

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.

Sign up to request clarification or add additional context in comments.

Comments

0

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.

2 Comments

Just as I posted @Webomatik also posted an answer, he points out some other bits that I didn't which will probably be quite helpful as well
Oh, and there's a typo (missing $) in your kelvin section, here: $k = start + 273; Your variable start should be $start

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.