[75.0, 11.4], 31 => [74.0, 11.2], 32 => [73.0, 11.0], 33 => [72.0, 10.8], 34 => [71.0, 10.6], 35 => [70.0, 10.4], 36 => [69.0, 10.2], 37 => [68.0, 10.0], 38 => [67.0, 9.8], 39 => [66.0, 9.6], 40 => [65.0, 9.4], 41 => [63.0, 9.2], 42 => [61.0, 9.0], 43 => [59.0, 8.8], 44 => [57.0, 8.6], 45 => [55.0, 8.4], 46 => [53.0, 8.2], 47 => [51.0, 8.0], 48 => [49.0, 7.8], 49 => [47.0, 7.6], 50 => [45.0, 7.4], 51 => [42.0, 7.2], 52 => [39.0, 7.0], 53 => [36.0, 6.8], 54 => [33.0, 6.6], 55 => [30.0, 6.4], 56 => [27.0, 6.2], 57 => [24.0, 6.0], 58 => [21.0, 5.8], 59 => [18.0, 5.6], 60 => [15.0, 5.4], 61 => [13.5, 5.3], 62 => [12.0, 5.2], 63 => [10.5, 5.1], 64 => [9.0, 5.0], 65 => [7.5, 4.9], 66 => [6.0, 4.8], 67 => [4.5, 4.7], 68 => [3.0, 4.6], 69 => [1.5, 4.5], 70 => [0.0, 4.4], 71 => [0.0, 4.3], 72 => [0.0, 4.2], 73 => [0.0, 4.1], 74 => [0.0, 4.0], 75 => [0.0, 3.9], 76 => [0.0, 3.8], 77 => [0.0, 3.7], 78 => [0.0, 3.6], 79 => [0.0, 3.5], 80 => [0.0, 3.4], 81 => [0.0, 3.3], 82 => [0.0, 3.2], 83 => [0.0, 3.1], 84 => [0.0, 3.0], 85 => [0.0, 2.9], 86 => [0.0, 2.8], 87 => [0.0, 2.7], 88 => [0.0, 2.6], 89 => [0.0, 2.5], 90 => [0.0, 2.4], 91 => [0.0, 2.3], 92 => [0.0, 2.2], 93 => [0.0, 2.1], 94 => [0.0, 2.0], 95 => [0.0, 1.9], 96 => [0.0, 1.8], 97 => [0.0, 1.7], 98 => [0.0, 1.6], 99 => [0.0, 1.5], 100 => [0.0, 1.4], ); /* ********* START ********* */ /* ********* ADD BASE SATURATION CALCULATION HERE ********* */ // Calculating hydrogen and otherbases $ph = $ph_h2o; // $ph_h2o from above $aluminium = $al_mehlick3; // round the ph value to single decimal point $ph_lookup = round($ph, 2); if ($errorLog = "1") { error_log(print_r("ph_lookup: " . $ph_lookup . " ph: " . $ph, true )); } // lookup Hydrogen and Other Bases $hydrogen = $phrange[($ph_lookup * 10)][0]; $otherbases = $phrange[($ph_lookup * 10)][1]; $h_rec = round($hydrogen, 2); // recommended level added to DB $ob_rec = round($otherbases, 2); // recommended level added to DB if ($errorLog = "1") { error_log(print_r("Hydrogen: " . $hydrogen . " Other Bases: " . $otherbases, true)); } if ( $aluminium < 0 ) { $otherbases = 0; } $obresult = 0; // obresult == Other Bases Result $hresult = 0; // hresult == Hydrogen Result // IF ******************************************************************************** if ( $otherbases > 0 ) { while ( (($obresult * 100) / $cec) <= $otherbases ) { $obresult += 0.001; $tempNo = $obresult; $tempNo1 = $otherbases; $tempNo2 = $hydrogen; // CAUTION: storing value in Calc:E16 $hresult = ($tempNo * $tempNo2) / $tempNo1; } $obresult -= 0.001; if ( $hresult != 0 ){ $hresult -= 0.001; } } else { while( (($hresult * 100) / $tec) <= $hydrogen ) { $hresultl += 0.001; } $hresult -= 0.001; } if ($errorLog = "1") { error_log(print_r("hresult: " . $hresult . " obresult: " . $obresult, true)); } // END If ******************************************************************************** // Calculating Ca Mg K Na levels based on temp // *** I think that the tecTemp needs to be a sum of $tec and $hresult and $obresult *** // *** As far as I can see on the spreadsheet the TEC in CALC:B16 is "CEC + obresult + CALC:E16" $tecTemp = $cec + $obresult + $hresult; $tec = round($tecTemp, 2); $cec = round($cec, 2); if ($errorLog = "1") { error_log(print_r("tecTemp: " . $tecTemp . " cec: " . $cec . " tec: " . $tec, true)); } // CAUTION: for $tecTemp values below 1 and above 100000 this will not work if ( ( 1.0 < $tecTemp ) && ( $tecTemp >= 3.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 60.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 20.00; $kbs = $KBS = 5.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 3.0 < $tecTemp ) && ( $tecTemp >= 5.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 62.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 18.00; $kbs = $KBS = 5.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 5.0 < $tecTemp ) && ( $tecTemp >= 7.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 64.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 16.00; $kbs = $KBS = 4.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 7.0 < $tecTemp ) && ( $tecTemp >= 9.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 65.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 15.00; $kbs = $KBS = 4.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 9.0 < $tecTemp ) && ( $tecTemp >= 11.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 67.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 13.00; $kbs = $KBS = 4.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 11.0 < $tecTemp ) && ( $tecTemp >= 30.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 68.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 12.00; $kbs = $KBS = 4.00; $kbsmax = $KBSMAX = 7.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } elseif ( ( 30.0 < $tecTemp ) && ( $tecTemp >= 100000.0 ) ) { $cabs = $CABS = 0; $cabsmax = $CABSMAX = 70.00; $mgbs = $MGBS = 0; $mgbsmax = $MGBSMAX = 10.00; $kbs = $KBS = 3.00; $kbsmax = $KBSMAX = 6.00; $nabs = $NABS = 0.50; $nabsmax = $NABSMAX = 1.50; } // *** CALCULATED TEC % AND PPM MIN / MAX LEVELS $cabs_min = $cabs; $ca_ppm_min = ( $tec * $cabs_min *2 ); $cabs_max = $cabsmax; $ca_ppm_max = ( $tec * $cabs_max * 2); $mgbs_min = $mgbs; $mg_ppm_min = ( $tec * $mgbs_min * 1.2 ); $mgbs_max = $mgbsmax; $mg_ppm_max = ( $tec * $mgbs_max * 1.2 ); $kbs_min = $kbs; $k_ppm_min = ( $tec * $kbs_min * 3.9 ); $kbs_max = $kbsmax; $k_ppm_max = ( $tec * $kbs_max * 3.9 ); $nabs_min = $nabs; $na_ppm_min = ( $tec * $nabs_min * 2.3 ); $nabs_max = $nabsmax; $na_ppm_max = ( $tec * $nabs_max * 2.3 ); $albs_min = "0"; $al_ppm_min = ( $tec * $albs_min * 0.9 ); $albs_max = "0.5"; $al_ppm_max = ( $tec * $albs_max * 0.9 ); // *** CALCULATED TEC LEVELS $cabs_tec = ( $ca_mehlick3 / $tec ) * 100; $cabs_tec = round($cabs_tec, 2); $mgbs_tec = ( $mg_mehlick3 / $tec ) * 100; $mgbs_tec = round($mgbs_tec, 2); $kbs_tec = ( $k_mehlick3 / $tec ) * 100; $kbs_tec = round($kbs_tec, 2); $nabs_tec = ( $na_mehlick3 / $tec ) * 100; $nabs_tec = round($nabs_tec, 2); $albs_tec = ( $al_mehlick3 / $tec ) * 100; $albs_tec = round($albs_tec, 2); // *** CALCULATED PPM FROM MEQ $BS_ca_ppm = $ca_mehlick3 * 200; $BS_mg_ppm = $mg_mehlick3 * 120; $BS_k_ppm = $k_mehlick3 * 390; $BS_na_ppm = $na_mehlick3 * 230; $BS_al_ppm = $al_mehlick3 * 90; /* ********* ADD BASE SATURATION CALCULATION HERE ********* */ /* ********* END ********* */ // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $sql = mysqli_query($con, "INSERT into `soil_records` ( client_records_id, modx_user_id, date, email, client_name, site_address, state_postcode, analysis_type, lab_no, batch_no, sample_id, site_id, crop_type, soil_type, date_sampled, tec, cec, texture, gravel, colour, NO3_N, NH3_N, p_mehlick, p_bray2, p_morgan, k_morgan, ca_morgan, mg_morgan, na_morgan, ch_h2o, ocarbon, omatter, fe, ec, ph_cacl2, ph_h2o, paramag, s_morgan, b_cacl2, mn_dtpa, zn_dtpa, fe_dtpa, cu_dtpa, al, sl_cacl2, m_dtpa, co_dtpa, se, ca_mehlick3, BS_ca_ppm, mg_mehlick3, BS_mg_ppm, k_mehlick3, BS_k_ppm, na_mehlick3, BS_na_ppm, al_mehlick3, BS_al_ppm, BS_ca2, BS_mg2, BS_k, BS_na, BS_al3, BS_ob, BS_h, cabs_min, ca_ppm_min, cabs_max, ca_ppm_max, mgbs_min, mg_ppm_min, mgbs_max, mg_ppm_max, kbs_min, k_ppm_min, kbs_max, k_ppm_max, nabs_min, na_ppm_min, nabs_max, na_ppm_max, albs_min, al_ppm_min, albs_max, al_ppm_max, ob_rec, h_rec, ca_mg_ratio, rand ) VALUES ( \'" . $client_id . "\', \'" . $modx_id . "\', \'" . $date . "\', \'" . $email . "\', \'" . $client_name . "\', \'" . $site_address . "\', \'" . $state_postcode . "\', \'" . $analysis_type . "\', \'" . $lab_no . "\', \'" . $batch_no . "\', \'" . $sample_id . "\', \'" . $site_id . "\', \'" . $crop_type . "\', \'" . $soil_type . "\', \'" . $date_sampled . "\', \'" . $tec . "\', \'" . $cec . "\', IF(\'" . $texture . "\'=\'\',NULL,\'" . $texture . "\'), IF(\'" . $gravel . "\'=\'\',NULL,\'" . $gravel . "\'), IF(\'" . $colour . "\'=\'\',NULL,\'" . $colour . "\'), \'" . $NO3_N . "\', \'" . $NH3_N . "\', \'" . $p_mehlick . "\', \'" . $p_bray2 . "\', \'" . $p_morgan . "\', \'" . $k_morgan . "\', \'" . $ca_morgan . "\', \'" . $mg_morgan . "\', \'" . $na_morgan . "\', \'" . $ch_h2o . "\', \'" . $ocarbon . "\', \'" . $omatter . "\', \'" . $fe . "\', \'" . $ec . "\', \'" . $ph_cacl2 . "\', \'" . $ph_h2o . "\', IF(\'" . $paramag . "\'=\'\',NULL,\'" . $paramag . "\'), \'" . $s_morgan . "\', \'" . $b_cacl2 . "\', \'" . $mn_dtpa . "\', \'" . $zn_dtpa . "\', \'" . $fe_dtpa . "\', \'" . $cu_dtpa . "\', \'" . $al . "\', \'" . $sl_cacl2 . "\', \'" . $m_dtpa . "\', \'" . $co_dtpa . "\', \'" . $se . "\', \'" . $ca_mehlick3 . "\', \'" . $BS_ca_ppm . "\', \'" . $mg_mehlick3 . "\', \'" . $BS_mg_ppm . "\', \'" . $k_mehlick3 . "\', \'" . $BS_k_ppm . "\', \'" . $na_mehlick3 . "\', \'" . $BS_na_ppm . "\', \'" . $al_mehlick3 . "\', \'" . $BS_al_ppm . "\', \'" . $cabs_tec . "\', \'" . $mgbs_tec . "\', \'" . $kbs_tec . "\', \'" . $nabs_tec . "\', \'" . $aluminium . "\', \'" . $otherbases . "\', \'" . $hydrogen . "\', \'" . $cabs_min . "\', \'" . $ca_ppm_min . "\', \'" . $cabs_max . "\', \'" . $ca_ppm_max . "\', \'" . $mgbs_min . "\', \'" . $mg_ppm_min . "\', \'" . $mgbs_max . "\', \'" . $mg_ppm_max . "\', \'" . $kbs_min . "\', \'" . $k_ppm_min . "\', \'" . $kbs_max . "\', \'" . $k_ppm_max . "\', \'" . $nabs_min . "\', \'" . $na_ppm_min . "\', \'" . $nabs_max . "\', \'" . $na_ppm_max . "\', \'" . $albs_min . "\', \'" . $al_ppm_min . "\', \'" . $albs_max . "\', \'" . $al_ppm_max . "\', \'" . $ob_rec . "\', \'" . $h_rec . "\', \'" . $ca_mgRatio . "\', \'" . $rand . "\' )" ); $insert_id = mysqli_insert_id($con); if ($sql === TRUE) { // forward to results page if successfully inserts to database [[~32]] echo ""; } else { die(mysqli_error($con)); // TODO: better error handling //echo "User Profile incorrect"; } } return; ';