Calculation error

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Lazandra
    New Member
    • Sep 2007
    • 25

    #1

    Calculation error

    Hi all

    I have a bit of javascript code that is ment to add products together. This is a form and it works fine on its own. However when i integrate it into my php script it brings up this error 'document.form. info' is null or not an object.

    Heres my top code

    [CODE=php]<?
    include("connec t.php");


    if ($submit == "Update")
    {

    $saved = mysql("db691177 98","update payment set id = '$id', infoid = '$infoid', name = '$name', product_dogmobi le = '$product_dogmo bile', product_dogwalk er = '$product_dogwa lker', product_harness = '$product_harne ss', product_harness _area = '$product_harne ss_area', product_new = '$product_new', subtotal = '$subtotal', postage = '$postage', total = '$total', payment_name = '$payment_name' , payment_cc = '$payment_cc', payment_valid_f rom = '$payment_valid _from', payment_expiry = '$payment_expir y', payment_issue = '$payment_issue ', payment_securit y_number = '$payment_secur ity_number', payment_type = '$payment_type' , NOW() where infoid = $infoid");

    if ($saved)
    {
    echo "<script>\n ";
    echo "window.alert(' $name has been updated');\n";
    echo "</script>\n";
    }
    else
    {
    echo mysql_error() ;
    }
    }

    $result = mysql("db691177 98","select * from payment where infoid = $infoid");
    $result = mysql_fetch_arr ay($result);
    echo mysql_error() ;
    ?>



    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>index-6</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="style.css " rel="stylesheet " type="text/css">

    <SCRIPT LANGUAGE="JavaS cript">

    function doMath() {
    var one = eval(document.m yform.info.valu e)
    var two = eval(document.m yform.info1.val ue)
    var three = eval(document.m yform.info2.val ue)
    var four = eval(document.m yform.info3.val ue)
    var five = eval(document.m yform.info4.val ue)
    var prod = one + two + three + four + five
    document.myform .total.value=cu stRound(prod,2) ;
    }
    function custRound(x,pla ces) {
    return (Math.round(x*M ath.pow(10,plac es)))/Math.pow(10,pla ces)
    }

    </script>[/CODE]

    And heres the form.

    [CODE=html]<form id="form1" name="form1" method="post" action="payment 2.php">
    <input type="hidden" name="infoid" value="<?=$info id?>">

    <table width="400" border="0">
    <tr>
    <td colspan="2"><sp an class="style9"> Product</span></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>Name:</td>
    <td><input type="text" name="name" value="<?=$resu lt[name]?>"></td>
    </tr>
    <tr>
    <td>DogMobile </td>
    <td>
    <select name="info">
    <option selected value="0">Selec t</option>
    <option value="255">Sma ll - &pound;255</option>
    <option value="270">Med ium - &pound;270</option>
    <option value="280">Lar ge - &pound;280</option>
    <option value="290">XLa rge - &pound;290</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>DogWalker </td>
    <td>
    <select name="info1">
    <option selected value="0">Selec t</option>
    <option value="180">Sma ll - &pound;180</option>
    <option value="190">Med ium - &pound;190</option>
    <option value="200">Lar ge - &pound;200</option>
    <option value="210">XLa rge - &pound;210</option>

    </select>
    </td>
    </tr>
    <tr>
    <td>DogHarnes s</td>
    <td>
    <select name="info2">
    <option selected value="0">Selec t</option>
    <option value="26">Smal l - &pound;26</option>
    <option value="29">Medi um - &pound;29</option>
    <option value="32">Larg e - &pound;32</option>
    <option value="35">XLar ge - &pound;35</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>New Products</td>
    <td>
    <select name="info3">
    <option selected value="0">Selec t</option>
    <option value="16.95">2 in1 Lead - &pound;16.95 </option>
    <option value="35">Lift ing Blanket - &pound;35</option>
    </select>
    </td>
    </tr>
    <tr>
    <td>Postage</td>
    <td>
    <input type="text" name="info4">
    </td>
    </tr>
    <tr>
    <td>Total</td>
    <td>
    <input type="text" name="total">
    </td>
    </tr>
    <tr>
    <td> </td>
    <td>
    <input type="button" value="Calculat e" onClick="doMath ()" name="button">
    </td>
    </tr>
    <tr>
    <td colspan="2">&nb sp;</td>
    </tr>
    <tr>
    <td colspan="2"><sp an class="style9"> Payment</span></td>
    </tr>
    <tr>
    <td><span class="style9"> Type of card:</span></td>
    <td><span class="style9">
    <select name="payment_t ype">
    <option value="visa">Vi sa</option>
    <option value="masterca rd">Mastercar d</option>
    <option value="maestro" >Maestro</option>
    <option value="solo">So lo</option>
    <option value="american express">Americ an Express</option>
    <option value="jcb">JCB </option>
    <option value="cheque"> Cheque</option>
    <option value="money order">Money Order</option>
    </select>
    </span></td>
    </tr>
    <tr>
    <td><span class="style9"> Name on card:</span></td>
    <td><input name="payment_n ame" type="text" /></td>
    </tr>
    <tr>
    <td><span class="style9"> Card Number:</span></td>
    <td><input name="payment_c c" type="text" /></td>
    </tr>
    <tr>
    <td><span class="style9"> Valid From:</span></td>
    <td><input name="payment_v alid_from" type="text" /></td>
    </tr>
    <tr>
    <td><span class="style9"> Expiry Date:</span></td>
    <td><input name="payment_e xpiry" type="text" /></td>
    </tr>
    <tr>
    <td><span class="style9"> Issue Number (if applicable):</span></td>
    <td><input name="payment_i ssue" type="text" /></td>
    </tr>
    <tr>
    <td><span class="style9"> Security number:</span></td>
    <td><input name="payment_s ecurity_number" type="text" /></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><span class="style9">
    <label>
    <input type="submit" name="submit" value="Update">
    </label>
    </span></td>
    </tr>
    </table>
    </form>[/CODE]

    Can anyone help?

    Cheers xxx
    Last edited by pbmods; Oct 4 '07, 10:47 PM. Reason: Changed [CODE] to [CODE=php].
  • dmjpro
    Top Contributor
    • Jan 2007
    • 2476

    #2
    Please Post the relevant JavaScript Code :-)

    Debasis Jana.

    Comment

    • Lazandra
      New Member
      • Sep 2007
      • 25

      #3
      Hi

      its from line 38 to 51 in the first spam of code.

      Cheers

      Comment

      • dmjpro
        Top Contributor
        • Jan 2007
        • 2476

        #4
        Originally posted by Lazandra
        Hi

        its from line 38 to 51 in the first spam of code.

        Cheers
        Make sure that field exists when you page loaded using php :-)

        Kind regards,
        Dmjpro.

        Comment

        • Lazandra
          New Member
          • Sep 2007
          • 25

          #5
          What do you mean? the field is there?

          Comment

          • dmjpro
            Top Contributor
            • Jan 2007
            • 2476

            #6
            Originally posted by Lazandra
            What do you mean? the field is there?
            View the source code ..check that whether any field in your html page by name "info" :-)

            Got my point buddy!

            Debasis Jana

            Comment

            • Lazandra
              New Member
              • Sep 2007
              • 25

              #7
              Originally posted by dmjpro
              View the source code ..check that whether any field in your html page by name "info" :-)

              Got my point buddy!

              Debasis Jana
              Hi

              if we ignore the php for the time.

              [CODE=html]<SCRIPT LANGUAGE="JavaS cript">

              function doMath() {
              var one = eval(document.m yform.info.valu e)
              var two = eval(document.m yform.info1.val ue)
              var three = eval(document.m yform.info2.val ue)
              var four = eval(document.m yform.info3.val ue)
              var five = eval(document.m yform.info4.val ue)
              var prod = one + two + three + four + five
              document.myform .total.value=cu stRound(prod,2) ;
              }
              function custRound(x,pla ces) {
              return (Math.round(x*M ath.pow(10,plac es)))/Math.pow(10,pla ces)
              }

              </script>

              <form id="form1" name="form1" method="post" action="payment 2.php">
              <input type="hidden" name="infoid" value="<?=$info id?>">

              <table width="400" border="0">
              <tr>
              <td colspan="2"><sp an class="style9"> Product</span></td>
              </tr>
              <tr>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
              </tr>
              <tr>
              <td>Name:</td>
              <td><input type="text" name="name" value="<?=$resu lt[name]?>"></td>
              </tr>
              <tr>
              <td>DogMobile </td>
              <td>
              <select name="info">
              <option selected value="0">Selec t</option>
              <option value="255">Sma ll - &pound;255</option>
              <option value="270">Med ium - &pound;270</option>
              <option value="280">Lar ge - &pound;280</option>
              <option value="290">XLa rge - &pound;290</option>
              </select>
              </td>
              </tr>
              <tr>
              <td>DogWalker </td>
              <td>
              <select name="info1">
              <option selected value="0">Selec t</option>
              <option value="180">Sma ll - &pound;180</option>
              <option value="190">Med ium - &pound;190</option>
              <option value="200">Lar ge - &pound;200</option>
              <option value="210">XLa rge - &pound;210</option>

              </select>
              </td>
              </tr>
              <tr>
              <td>DogHarnes s</td>
              <td>
              <select name="info2">
              <option selected value="0">Selec t</option>
              <option value="26">Smal l - &pound;26</option>
              <option value="29">Medi um - &pound;29</option>
              <option value="32">Larg e - &pound;32</option>
              <option value="35">XLar ge - &pound;35</option>
              </select>
              </td>
              </tr>
              <tr>
              <td>New Products</td>
              <td>
              <select name="info3">
              <option selected value="0">Selec t</option>
              <option value="16.95">2 in1 Lead - &pound;16.95 </option>
              <option value="35">Lift ing Blanket - &pound;35</option>
              </select>
              </td>
              </tr>
              <tr>
              <td>Postage</td>
              <td>
              <input type="text" name="info4">
              </td>
              </tr>
              <tr>
              <td>Total</td>
              <td>
              <input type="text" name="total">
              </td>
              </tr>
              <tr>
              <td> </td>
              <td>
              <input type="button" value="Calculat e" onClick="doMath ()" name="button">
              </td>
              </tr>
              <tr>
              <td colspan="2">&nb sp;</td>
              </tr>
              <tr>
              <td colspan="2"><sp an class="style9"> Payment</span></td>
              </tr>
              <tr>
              <td><span class="style9"> Type of card:</span></td>
              <td><span class="style9">
              <select name="payment_t ype">
              <option value="visa">Vi sa</option>
              <option value="masterca rd">Mastercar d</option>
              <option value="maestro" >Maestro</option>
              <option value="solo">So lo</option>
              <option value="american express">Americ an Express</option>
              <option value="jcb">JCB </option>
              <option value="cheque"> Cheque</option>
              <option value="money order">Money Order</option>
              </select>
              </span></td>
              </tr>
              <tr>
              <td><span class="style9"> Name on card:</span></td>
              <td><input name="payment_n ame" type="text" /></td>
              </tr>
              <tr>
              <td><span class="style9"> Card Number:</span></td>
              <td><input name="payment_c c" type="text" /></td>
              </tr>
              <tr>
              <td><span class="style9"> Valid From:</span></td>
              <td><input name="payment_v alid_from" type="text" /></td>
              </tr>
              <tr>
              <td><span class="style9"> Expiry Date:</span></td>
              <td><input name="payment_e xpiry" type="text" /></td>
              </tr>
              <tr>
              <td><span class="style9"> Issue Number (if applicable):</span></td>
              <td><input name="payment_i ssue" type="text" /></td>
              </tr>
              <tr>
              <td><span class="style9"> Security number:</span></td>
              <td><input name="payment_s ecurity_number" type="text" /></td>
              </tr>
              <tr>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
              </tr>
              <tr>
              <td>&nbsp;</td>
              <td><span class="style9">
              <label>
              <input type="submit" name="submit" value="Update">
              </label>
              </span></td>
              </tr>
              </table>
              </form>

              [/CODE]

              It still doesn't work.

              Regards
              Last edited by pbmods; Oct 4 '07, 10:48 PM. Reason: Changed [CODE] to [CODE=html].

              Comment

              • dmjpro
                Top Contributor
                • Jan 2007
                • 2476

                #8
                Well :-)
                Your form name is form1 and you use "document.myfor m" ....
                Why?

                Kind regards,
                Dmjpro.

                Comment

                • gits
                  Recognized Expert Moderator Expert
                  • May 2007
                  • 5390

                  #9
                  hi ...

                  your form is called 'form1' not 'myform' ... and please avoid using eval ... you may use parseFloat() for that here ... eval == evil!!!

                  kind regards

                  Comment

                  • gits
                    Recognized Expert Moderator Expert
                    • May 2007
                    • 5390

                    #10
                    Originally posted by dmjpro
                    Well :-)
                    Your form name is form1 and you use "document.myfor m" ....
                    Why?

                    Kind regards,
                    Dmjpro.
                    we nearly posted the same time ;) ...

                    and one more thing to mention: it would be much better to give the relevant select-boxes an id and use the getElementById( )-reference for the fields to retrieve the values ...

                    kind regards

                    Comment

                    • Lazandra
                      New Member
                      • Sep 2007
                      • 25

                      #11
                      Thats brilliant!! Thank you both for your help. Much appreciated!

                      Cheers

                      Comment

                      • dmjpro
                        Top Contributor
                        • Jan 2007
                        • 2476

                        #12
                        Originally posted by gits
                        hi ...

                        your form is called 'form1' not 'myform' ... and please avoid using eval ... you may use parseFloat() for that here ... eval == evil!!!

                        kind regards
                        Please tell me Gits why it is evil :-)

                        Debasis Jana

                        Comment

                        • gits
                          Recognized Expert Moderator Expert
                          • May 2007
                          • 5390

                          #13
                          hi ...

                          eval will evaluate everything what you put in and you simply don't need it ... except for evaluating json-data ...

                          when using eval in php for example someone could try to inject code to the server that is executed there ... at the clientside this is not as relevant as at the server side, besides someone is able to cross-site-script to your page and something is executed within your page that you would never want to be happen there ... but in my personal point of view the most ugly thing with it is ... that a lot of people are using eval for everything ... instead of using correct javascript for it. as we could see we may use parseFloat in the case above, and so there should be always a way to avoid eval ... its simply an unnessecary operation in nearly all cases and it 'uglyfies' every code ... and i cannot think of any need for eval except for the mentioned reason with the json-data ...

                          knd regards

                          Comment

                          Working...