additional variable breaks script

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • habilatate83
    New Member
    • Nov 2009
    • 7

    additional variable breaks script

    why wont this script work, i added the operator2 variable an it stopped working
    Code:
    <html>
    
    <head>
    <title>A Metric/Imperial Converter</title>
    </head>
    <body>
    
    <?php
    
    $number1 = $_POST[number1];
    $operator = $_POST[operator];
    
    if ($operator == "Miles"){
    $answer = $number1*1.609;
    $operator2 = "Kilometers";
    }
    
    elseif ($operator == "Kilometers"){
    $answer = $number1/1.609;
    $operator2 = "Miles";
    }
    
    elseif ($operator == "Inches"){
    $answer = $number1*2.54;
    $operator2 = "Centimetres";
    }
    
    elseif ($operator == "Centimetres"){
    $answer = $number1/2.54;
    $operator2 = "Inches";
    }
    
    elseif ($operator == "Pounds"){
    $answer = $number1*0.454;
    $operator2 = "Kilograms";
    }
    
    elseif ($operator == "Kilograms"){
    $answer = $number1/0.454;
    $operator2 = "Pounds";
    }
    
    elseif ($operator == "Horsepower"){
    $answer = $number1*0.746;
    $operator2 = "Kilowatts";
    }
    
    elseif ($operator == "Kilowatts"){
    $answer = $number1/0.746;
    $operator2 = "Horsepower";
    }
    
    elseif ($operator == "Pints"){
    $answer = $number1*0.568;
    $operator2 = "Litres";
    }
    
    else {
    $answer = $number1/0.568;
    $operator = "Litres";
    $operator2 = "Pints";
    }
    
    echo "$number1 $operator is equal to $answer $operator2";
    
    ?>
    
    <br>
    
    <a href="Metricconvert.php/">Click here to do another conversion</a>
    
    </body>
    
    </html>
    Last edited by Dormilich; Nov 5 '09, 12:46 PM. Reason: please use meaningful titles
  • Dormilich
    Recognized Expert Expert
    • Aug 2008
    • 8694

    #2
    if you don’t submit a form via post method, the $_POST array is empty.

    this would have thrown a warning, if error reporting was enabled.

    Comment

    • Markus
      Recognized Expert Expert
      • Jun 2007
      • 6092

      #3
      Please see Turn On PHP Debugging Messages.

      Another problem with your code (that will be shown when you turn on error reporting: Array indexes should be wrapped with quotes (single or double). Consider the following:

      Code:
      // bad
      echo $array[some_index];
      // good
      echo $array['some_index'];
      Mark.

      Comment

      • Dormilich
        Recognized Expert Expert
        • Aug 2008
        • 8694

        #4
        Originally posted by Markus
        Another problem with your code : Array indexes should be wrapped with quotes (single or double).
        there is only one exception, and it nearly never occurs.
        Code:
        define("some_index", "some_value");
        $array[some_index];
        // is now equivalent to
        $array["some_value"];
        
        // but writing constants in lower case is considered bad practice

        Comment

        • Markus
          Recognized Expert Expert
          • Jun 2007
          • 6092

          #5
          Originally posted by Dormilich
          there is only one exception, and it nearly never occurs.
          Code:
          define("some_index", "some_value");
          $array[some_index];
          // is now equivalent to
          $array["some_value"];
          
          // but writing constants in lower case is considered bad practice
          You know I know that! But in the context, I highly doubt he has these set as constants.

          Comment

          • Dormilich
            Recognized Expert Expert
            • Aug 2008
            • 8694

            #6
            just to have it posted for the next reader...

            Comment

            • habilatate83
              New Member
              • Nov 2009
              • 7

              #7
              thanks its almost working but there is a problem with the last ifelse litres to pints

              Code:
              <?php
              
              $number1 = $_POST[number1];
              $operator = $_POST[operator];
              
              if ($operator == "Miles"){
              $answer = $number1*1.609;
              $operator2 = "Kilometers";
              }
              
              elseif ($operator == "Kilometers"){
              $answer = $number1/1.609;
              $operator2 = "Miles";
              }
              
              elseif ($operator == "Inches"){
              $answer = $number1*2.54;
              $operator2 = "Centimetres";
              }
              
              elseif ($operator == "Centimetres"){
              $answer = $number1/2.54;
              $operator2 = "Inches";
              }
              
              elseif ($operator == "Pounds"){
              $answer = $number1*0.454;
              $operator2 = "Kilograms";
              }
              
              elseif ($operator == "Kilograms"){
              $answer = $number1/0.454;
              $operator2 = "Pounds";
              }
              
              elseif ($operator == "Horsepower"){
              $answer = $number1*0.746;
              $operator2 = "Kilowatts";
              }
              
              elseif ($operator == "Kilowatts"){
              $answer = $number1/0.746;
              $operator2 = "Horsepower";
              }
              
              elseif ($operator == "Pints"){
              $answer = $number1*0.568;
              $operator2 = "Litres";
              }
              
              elseif ( $operator == "litres"){
              $answer = $number1/0.568;
              $operator2 = "Pints";
              }
              
              else {
              echo "An error has occured please go back and try again";
              }
              
              echo "$number1 $operator is equal to $answer $operator2";
              
              ?>
              Last edited by Atli; Nov 10 '09, 11:06 AM. Reason: Moved here from it's own thread, and added [code] tags.

              Comment

              • TheServant
                Recognized Expert Top Contributor
                • Feb 2008
                • 1168

                #8
                Welcome to Bytes. Please use [code] tags around your code so that we can read the code easier and assist you a lot faster. Your title tells us that something is not working, but that's about it. You need to give more details. It sounds like all the others are working, and you're not getting the "An error has occured please go back and try again" error, so what error are you getting?

                The only difference I have noticed is your litres and Litres difference in the last one.

                Comment

                • Dormilich
                  Recognized Expert Expert
                  • Aug 2008
                  • 8694

                  #9
                  the reasons your script fails has already been mentioned by Markus and me.

                  Comment

                  • habilatate83
                    New Member
                    • Nov 2009
                    • 7

                    #10
                    sorted

                    thanks, i have resolved the problem mate, much appreciated

                    Comment

                    Working...