2013-12-21 2 views
0

У меня возникли серьезные проблемы с получением моей формы для правильной работы. Ниже приведены первые вычисления PHP (attireCalculate.php), затем файл обработки PHP (processAttire.php) и, наконец, мой XHTML (attireForm.php). Извините за то, как долго это все, но я все время перебирал его снова и снова и смотрел по всей сети безрезультатно. Я просто не могу найти проблему (проблемы). Ничего не происходит, когда я нажимаю кнопку отправки.PHP Form - наличие проблем

Я должен упомянуть, что я новичок в программировании и PHP, поэтому может быть, что все, что мне не хватает, действительно довольно просто. Спасибо за вашу помощь. Я очень ценю это.

attireCalculate.php

<?php 
function message($ramHatQ, $teemoHatQ, $blitzHoodieQ, $galioHoodieQ, $datAsheQ, $graggyIceQ) 
{ 
     $cost = sprintf("%.2lf", calculateCost($ramHatQ, $teemoHatQ, $blitzHoodieQ, $galioHoodieQ, $datAsheQ, $graggyIceQ)); 
     $tax = sprintf("%.2lf", calculateTax($cost)); 
     $total = sprintf("%.2lf", calculateTotal($cost, $tax)); 
     $text = "<h1>Product Summary</h1>". 
       "<h3>The cost of items selected is $".$cost.".<br />". 
       "The tax applied is $".$tax.".<br />". 
       "Therefore, the total cost is $".$total.".</h3>"; 
     return $text; 
} 

function calculateCost($ramHatQ, $teemoHatQ, $blitzHoodieQ, $galioHoodieQ, $datAsheQ, $graggyIceQ) 
{  
     return ($ramHatQ+$teemoHatQ)*14.99+($blitzHoodieQ+$galioHoodieQ)*24.99+($datAsheQ+$graggyIceQ)*19.99;       
} 

function calculateTax($cost) 
{ 
     return $cost*0.075; 
} 

function calculateTotal($cost, $tax) 
{ 
     return $cost+$tax; 
} 

function mailSummary($email, $message) 
{ 
     $header = 'MIME-Version: 1.0' . "\r\n"; 
     $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
     $header .= "From: EMAIL\r\n"; 
     mail($email, "Product Summary from Riot Store Online", $message, $header); 
} 
?> 

Вот файл processAttire.php. Я прокомментировал бит об освобождении от налогов, так как на самом деле нет смысла вникать в это, если я даже не могу заставить работу работать, как есть!

<?php 
     include 'attireCalculate.php'; 

     $message = message($_POST['ramHatQ'], $_POST['teemoHatQ'], $_POST['blitzHoodieQ'], $_POST['galioHoodieQ'], $_POST['datAsheQ'], $_POST['graggyIceQ']); 
     echo $message; 

     if ($_POST['wantMail']) 
     { 
      mailSummary ($_POST['email'], $message); 
      echo "<h2>A summary has been sent to you via e-mail.</h2>"; 
     } 
/*  
     if ($_POST['taxExemptStatus']) 
     { 
       calculateCost($ramHatQ, $teemoHatQ, $blitzHoodieQ, $galioHoodieQ, 
        $datAsheQ, $graggyIceQ); 
       echo "<h2>Your tax-exempt status has been taken into account. Tax has been deducted from total cost.</h2>"; 
     } 
     else 
       calculateTax($totalCost); 
*/    

     ?> 

И вот XHTML:

<form id="attireForm" onsubmit="return validateAttireForm()" 
     action="scripts/processAttire.php" method="post"> 
     <fieldset> 
     <legend>Headwear</legend> 
     <table id="attireTable" summary="Headwear"> 
      <tr> 
      <td>Rammus Hat</td> 
         <td>$14.99</td> 
         <td><label for="ramHatType">Type: </label></td> 
         <td><select id="ramHatType" name="ramHatType"> 
          <option>Original</option> 
          <option>Ninja</option> 
         </select></td> 
      <td><label for="ramHatQ">Quantity: </label></td> 
      <td><input id="ramHatQ" type="text" name="ramHatQ" size="1" value="0" /></td> 
      </tr> 
        <tr> 
         <td>Teemo Hat</td> 
         <td>$14.99</td> 
         <td></td> 
         <td></td> 
         <td><label for="teemoHatQ">Quantity: </label></td> 
         <td><input id="teemoHatQ" type="text" name="teemoHatQ" size="1" value="0" /></td> 
        </tr>  
     </table> 
     </fieldset> 
     <fieldset> 
     <legend>Hoodies</legend> 
     <table id="attireTable" summary="Hoodies"> 
      <tr> 
         <td>Blitzcrank Hoodie</td> 
         <td>$24.99</td> 
         <td><label for="blitzHoodieQ">Quantity: </label></td> 
         <td><input id="blitzHoodieQ" type="text" name="blitzHoodieQ" size="1" value="0" /></td> 
      </tr> 
      <tr> 
      <td>Galio Hoodie</td> 
         <td>$24.99</td> 
         <td><label for="galioHoodieQ">Quantity: </label></td> 
         <td><input id="galioHoodieQ" type="text" name="galioHoodieQ" size="1" value="0" /></td> 
      </tr> 
     </table> 
     </fieldset> 
      <fieldset> 
       <legend>T-Shirts</legend> 
       <table id="attireTable" summary="T-Shirts"> 
        <tr> 
         <td>"Dat Ashe" T-Shirt</td> 
         <td>$19.99</td> 
         <td><label for="datAsheQ">Quantity: </label></td> 
         <td><input id="datAsheQ" type="text" name="datAsheQ" size="1" value="0" /></td> 
        </tr> 
        <tr> 
         <td>"Graggy Ice" T-Shirt</td> 
         <td>$19.99</td> 
         <td><label for="graggyIceQ">Quantity: </label></td> 
         <td><input id="graggyIceQ" type="text" name="graggyIceQ" size="1" value="0" /></td> 
        </tr> 
       </table>    
      </fieldset> 
      <fieldset> 
       <legend>Record?</legend> 
       <table summary="Record?"> 
        <tr> 
         <td><label for="wantMail">Would you like a record sent to you by e-mail? </label></td> 
         <td><input id="wantMail" type="checkbox" name="wantMail" value="yes" /></td> 
        </tr> 
        <tr> 
         <td><label for="email">E-mail Address: </label></td> 
         <td><input id="email" type="text" name="email" size="25" /></td> 
        </tr> 
       </table> 
      </fieldset> 
      <fieldset> 
     <legend>Processing</legend> 
     <table summary="Processing"> 
        <tr> 
         <td><label for="taxExemptStatus">Do you have tax-exempt status? </label></td> 
         <td><input id="taxExemptStatus" type="checkbox" name="taxExemptStatus" value="yes" /></td> 
        </tr> 
      <tr> 
      <td><input type="submit" value="Add to Cart" /></td> 
      <td><input id="resetAttire" type="reset" value="Reset Selections" /></td> 
        </tr> 
     </table> 
     </fieldset> 
     </form>   

А вот файл JavaScript, содержащий validateAttireForm():

//attireValidate.js 

function validateAttireForm() 
{ 
    var attireFormObj = document.getElementById("attireForm") 
    var ramHatQ = attireFormObj.ramHatQ.value; 
    var teemoHatQ = attireFormObj.teemoHatQ.value; 
    var blitzHoodieQ = attireFormObj.blitzHoodieQ.value; 
    var galioHoodieQ = attireFormObj.galioHoodieQ.value; 
    var datAsheQ = attireFormObj.datAsheQ.value; 
    var graggyIceQ = attireFormObj.graggyIceQ.value; 
    var email = attireFormObj.email.value; 

    var quantities = new Array(ramHatQ, teemoHatQ, blitzHoodieQ, galioHoodieQ, datAsheQ, graggyIceQ); 

    for (q in quantities) 
    { 
     quantityOK = validateQuantity(quantities[q]); 
    if (quantityOK = false) 
     { 
     break; 
     } 
    } 

    if (attireFormObj.wantMail.checked) 
     emailOK = validateEmail(email); 
    else 
     emailOK = true; 

    return quantityOK && emailOK; 
} 

function validateQuantity(quantity) 
{ 
    if (isNaN(quantity)) 
    { 
     alert("Error: One or more quantities are abnormal. Please input a number for quantity.") 
     return false; 
    } 

    if (quantity < 0 || quantity > 100) 
    { 
     alert("Error: Quantity must be in the range 0-100 units.") 
     return false; 
    } 

    return true; 
} 

function validateEmail(address) 
{ 
    var p = address.search(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})$/); 
    if (p == 0) 
     return true; 
    else 
    { 
     alert("Error: Invalid e-mail address.") 
     return false; 
    } 
} 
+1

Ваша форма настроена так, чтобы полагаться на результат функции 'validateAttireForm()', но я не вижу эту функцию в любом месте вашего кода. Вы забыли опубликовать его? Или вы не определили его? – SquareCat

+0

Это часть файла JavaScript. Это повлияет на файлы PHP? –

+0

Включите ошибки php и посмотрите, что произойдет. Кроме того, что такое 'validateAttireForm'? – putvande

ответ

0

Вместо смешивания PHP и Javascript в представить действие вашего формы, вызов processAttire.php в самом Javascript:

$.get('scripts/processAttire.php', function(data) { 
    eval(data); 
}); 

Таким образом, вы будете контролировать, в каком порядке исполняются ваши скрипты. Примечание. Для этого вам нужно использовать JQuery.

Смежные вопросы