Я написал небольшое приложение формы заказа около года назад, которое позволило бы пользователю выбрать несколько элементов, а затем нажать кнопку отправки кнопку отправки, а затем запустить скрипт php, который создает счет-фактуру для человека, который его заказывает, и компании, которая suppy продукт.
Теперь я все еще очень новичок в PHP, и теперь, когда я вернулся к нему, я забыл много того, что я написал, и по какой-то причине я получаю сообщение об ошибке в своем письме, которое я надеюсь, что кто-то может мне помочь.
Это то, что выглядит моя страница формы заказа.
Это код для этой страницы
<p><i>Required fields are marked with</i> <b>*</b></p> <form action="orderformDNP.php" method="post" onsubmit="document.getElementById('myButton').disabled=true; document.getElementById('myButton').value='Submitting...';" > <table width="496" border="0" style="border-width: 1px; border-color:#E5E5E5; border-style: solid;"> <tr> <td width="40%"> Name: * </td> <td width="60%"> <input type="text" name="yourname" /> </td> </tr> <tr> <td width="40%"> Phone Number: * </td> <td width="60%"> <input type="text" name="phonenumber" /> </td> </tr> <tr> <td width="40%"> Mobile Number: </td> <td width="60%"> <input type="text" name="mobilenumber" /> </td> </tr> <tr> <td width="40%"> E-mail: * </td> <td width="60%"> <input type="text" name="email" /> </td> </tr> <tr> <td width="40%"> Deliver Address: * </td> <td width="60%"> <textarea name="deliveryaddress" rows="3" cols="40"></textarea> </td> </tr> </table> </br> <!-- this is the ordering part of the form --!> <h3>Duvets</h3> <?php //Start session //session_start(); //Include database connection details require_once('config.php'); //Array to store validation errors $errmsg_arr = array(); //Validation error flag $errflag = false; //Connect to mysql server $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); if(!$link) { die('Failed to connect to server: ' . mysql_error()); } //Select database $db = mysql_select_db(DB_DATABASE); if(!$db) { die("Unable to select database"); } $result = mysql_query("SELECT * FROM 5050goosedown ORDER BY price ASC"); echo "<table border='0' width='496'> <tr> <th width='30%'><b>50/50 Goose Down:</b></th> <th width='30%'><i>Normal Fill / Our Fill</i></th> <th width='12.5%'><i>Old Price</i></th> <th width='12.5%'><i>Price</i></th> <th width='12.5%'><i>Quantity</i></th> </tr>"; $i = 1; while($row = mysql_fetch_array($result)){ echo "<tr bgcolor='#F5F5F5'>"; if($i%2 == 0){ echo "<tr bgcolor='#E5E5E5'>"; } $i++; if (($row['width'] ==0) && ($row['height']== 0)){ echo "<td>" . $row['name'] . "</td>"; } else { echo "<td>" . $row['name'] . " -" . $row['width'] . "/" . $row['height'] . "</td>"; } echo "<td>" . $row['normal_fill'] . "/" . $row['our_fill'] . "</td>"; if ($row['old_price'] !=0){ echo "<td>" . $row['old_price'] . "</td>"; } else { echo "<td></td>"; } echo "<td>" . $row['price'] . "</td>"; echo "<td><select name=". $row['goosedown_id'] ."> <option value=''> 0 </option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> </select> </td>"; echo "</tr>"; } echo "</table>"; ?> </br></br> <?php //Start session //session_start(); //Include database connection details require_once('config.php'); //Array to store validation errors $errmsg_arr = array(); //Validation error flag $errflag = false; //Connect to mysql server $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); if(!$link) { die('Failed to connect to server: ' . mysql_error()); } //Select database $db = mysql_select_db(DB_DATABASE); if(!$db) { die("Unable to select database"); } $result = mysql_query("SELECT * FROM 5050duckdown ORDER BY price ASC"); echo "<table border='0' width='496'> <tr> <th width='30%'><b>50/50 Duck Down:</b></th> <th width='30%'><i>Normal Fill / Our Fill</i></th> <th width='12.5%'><i>Price</i></th> <th width='12.5%'><i>Quantity</i></th> </tr>"; $i = 1; while($row = mysql_fetch_array($result)){ echo "<tr bgcolor='#F5F5F5'>"; if($i%2 == 0){ echo "<tr bgcolor='#E5E5E5'>"; } $i++; if (($row['width'] ==0) && ($row['height']== 0)){ echo "<td>" . $row['name'] . "</td>"; } else { echo "<td>" . $row['name'] . " -" . $row['width'] . "/" . $row['height'] . "</td>"; } echo "<td>" . $row['normal_fill'] . "/" . $row['our_fill'] . "</td>"; echo "<td>" . $row['price'] . "</td>"; echo "<td><select name=". $row['duckdown_id'] ."> <option value=''> 0 </option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> </select> </td>"; echo "</tr>"; } echo "</table>"; ?> </br></br> <?php //Start session //session_start(); //Include database connection details require_once('config.php'); //Array to store validation errors $errmsg_arr = array(); //Validation error flag $errflag = false; //Connect to mysql server $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); if(!$link) { die('Failed to connect to server: ' . mysql_error()); } //Select database $db = mysql_select_db(DB_DATABASE); if(!$db) { die("Unable to select database"); } $result = mysql_query("SELECT * FROM 955goosedown ORDER BY price ASC"); echo "<table border='0' width='496'> <tr> <th width='30%'><b>95/5 Goose Down:</b></th> <th width='30%'><i>Normal Fill / Our Fill</i></th> <th width='12.5%'><i>Old Price</i></th> <th width='12.5%'><i>Price</i></th> <th width='12.5%'><i>Quantity</i></th> </tr>"; $i = 1; while($row = mysql_fetch_array($result)){ echo "<tr bgcolor='#F5F5F5'>"; if($i%2 == 0){ echo "<tr bgcolor='#E5E5E5'>"; } $i++; if (($row['width'] ==0) && ($row['height']== 0)){ echo "<td>" . $row['name'] . "</td>"; } else { echo "<td>" . $row['name'] . " -" . $row['width'] . "/" . $row['height'] . "</td>"; } echo "<td>" . $row['normal_fill'] . "/" . $row['our_fill'] . "</td>"; if ($row['old_price'] !=0){ echo "<td>" . $row['old_price'] . "</td>"; } else { echo "<td></td>"; } echo "<td>" . $row['price'] . "</td>"; echo "<td><select name=". $row['955goosedown_id'] ."> <option value=''> 0 </option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> </select> </td>"; echo "</tr>"; } echo "</table>"; ?> </br> <h3>Pillows</h3> <?php //Start session //session_start(); //Include database connection details require_once('config.php'); //Array to store validation errors $errmsg_arr = array(); //Validation error flag $errflag = false; //Connect to mysql server $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); if(!$link) { die('Failed to connect to server: ' . mysql_error()); } //Select database $db = mysql_select_db(DB_DATABASE); if(!$db) { die("Unable to select database"); } $result = mysql_query("SELECT * FROM goosedownpillows ORDER BY price ASC"); echo "<table border='0' width='496'> <tr> <th width='62.5%'><b>Goose Down Pillows:</b></th> <th width='12.5%'><i>Price</i></th> <th width='12.5%'><i>Quantity</i></th> </tr>"; $i = 1; while($row = mysql_fetch_array($result)){ echo "<tr bgcolor='#F5F5F5'>"; if($i%2 == 0){ echo "<tr bgcolor='#E5E5E5'>"; } $i++; echo "<td>" . $row['name'] ."</td>"; echo "<td>" . $row['price'] . "</td>"; echo "<td><select name=". $row['goosedownpillows_id'] ."> <option value=''> 0 </option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> </select> </td>"; echo "</tr>"; } echo "</table>"; ?> </br> <h3>Feather Mattress Toppers</h3> <?php //Start session //session_start(); //Include database connection details require_once('config.php'); //Array to store validation errors $errmsg_arr = array(); //Validation error flag $errflag = false; //Connect to mysql server $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); if(!$link) { die('Failed to connect to server: ' . mysql_error()); } //Select database $db = mysql_select_db(DB_DATABASE); if(!$db) { die("Unable to select database"); } $result = mysql_query("SELECT * FROM feathermattresstoppers ORDER BY price ASC"); echo "<table border='0' width='496'> <tr> <th width='62.5%'><b>95/5 Mattress Toppers:</b></th> <th width='12.5%'><i>Old Price</i></th> <th width='12.5%'><i>Price</i></th> <th width='12.5%'><i>Quantity</i></th> </tr>"; $i = 1; while($row = mysql_fetch_array($result)){ echo "<tr bgcolor='#F5F5F5'>"; if($i%2 == 0){ echo "<tr bgcolor='#E5E5E5'>"; } $i++; if (($row['width'] ==0) && ($row['height']== 0)){ echo "<td>" . $row['name'] . "</td>"; } else { echo "<td>" . $row['name'] . " -" . $row['width'] . "/" . $row['height'] . "</td>"; } if ($row['old_price'] !=0){ echo "<td>" . $row['old_price'] . "</td>"; } else { echo "<td></td>"; } echo "<td>" . $row['price'] . "</td>"; echo "<td><select name=". $row['feathermattresstoppers_id'] ."> <option value=''> 0 </option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> </select> </td>"; echo "</tr>"; } echo "</table>"; ?> <p><b>Additional Info:</b><br /> <textarea name="comments" rows="10" cols="40"></textarea></p> </br></br>496 Access code: <input type="text" name="code" /><br /> Please enter <i>MYCODE</i> above. </br></br> <input type="submit" value="Submit" id="myButton" /> </td> </tr> </table> </td>
это orderformDNP, доза которого, похоже, не работает правильно .., которую я просто не могу понять, почему ..
<?php session_start(); $body_items = ''; $total_price = 0; /* Set Redgraves Email address, so they receive the orders */ $myemail = "clientsEmail@gmail.com"; /* Check all form inputs using check_input function */ $yourname = check_input($_POST['yourname'], "Enter your name"); $phonenumber = check_input($_POST['phonenumber'], "Enter your phone number"); $mobilenumber = check_input($_POST['mobilenumber']); $email = check_input($_POST['email'], "Enter your E-mail address"); $deliveryaddress = check_input($_POST['deliveryaddress'], "Enter your delivery address"); $comments = check_input($_POST['comments']); $random = substr(number_format(time() * rand(),0,'',''),0,10); $goosedown_id = ($_POST[$row['goosedown_id']]); if (strtolower($_POST['code']) != 'mycode') { die('Wrong access code'); } /* If e-mail is not valid show error message */ if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) { show_error("E-mail address not valid"); } /* If phone number has characters show error message */ if (preg_match("/\D/",$phonenumber)) { die("Please enter numbers only for Phone Number"); } /* If mobile number has characters show error message */ if (preg_match("/\D/",$mobilenumber)) { die("Please enter numbers only for Mobile Number"); } // 5050duckdown $flag = 0; $i = 1; $order_content = ''; foreach ($_POST['5050goosedown'] as $key => $value ) { if ($value > 0) { $flag = 1; if($i%2 == 0) $order_content .= "<tr bgcolor='#E5E5E5'>"; else $order_content .= "<tr bgcolor='#F5F5F5'>"; $i++; if (($row['width'] ==0) && ($row['height']== 0)) $order_content .= "<td>" . $_SESSION['5050goosedown'][$key]['name'] . "</td>"; else $order_content .= "<td>" . $_SESSION['5050goosedown'][$key]['name'] . " -" . $_SESSION['5050goosedown'][$key]['width'] . "/" . $_SESSION['5050goosedown'][$key]['height'] . "</td>"; $order_content .= "<td>" . $_SESSION['5050goosedown'][$key]['price'] . "</td>"; $order_content .= "<td>" . $value . "</td>"; $sub = $_SESSION['5050goosedown'][$key]['price'] * $value; $total_price += $sub; $order_content .= "<td>" . $sub . "</td></tr>"; } } if ($flag == 1) { $body_items .= "<table border='0' width='600'> <tr> <th width='30%'><b>50/50 Goose Down:</b></th> <th width='12.5%'><i>Item Price</i></th> <th width='12.5%'><i>Quantity</i></th> <th width='12.5%'><i>Price</i></th> </tr>"; $body_items .= $order_content; $body_items .= '</table><br /><br />'; } ////////////// $flag = 0; $i = 1; $order_content = ''; foreach ($_POST['5050duckdown'] as $key => $value ) { if ($value > 0) { $flag = 1; if($i%2 == 0) $order_content .= "<tr bgcolor='#E5E5E5'>"; else $order_content .= "<tr bgcolor='#F5F5F5'>"; $i++; if (($row['width'] ==0) && ($row['height']== 0)) $order_content .= "<td>" . $_SESSION['5050duckdown'][$key]['name'] . "</td>"; else $order_content .= "<td>" . $_SESSION['5050duckdown'][$key]['name'] . " -" . $_SESSION['5050duckdown'][$key]['width'] . "/" . $_SESSION['5050duckdown'][$key]['height'] . "</td>"; $order_content .= "<td>" . $_SESSION['5050duckdown'][$key]['price'] . "</td>"; $order_content .= "<td>" . $value . "</td>"; $sub = $_SESSION['5050duckdown'][$key]['price'] * $value; $total_price += $sub; $order_content .= "<td>" . $sub . "</td></tr>"; } } if ($flag == 1) { $body_items .= "<table border='0' width='600'> <tr> <th width='30%'><b>50/50 Duck Down:</b></th> <th width='12.5%'><i>Item Price</i></th> <th width='12.5%'><i>Quantity</i></th> <th width='12.5%'><i>Price</i></th> </tr>"; $body_items .= $order_content; $body_items .= '</table><br /><br />'; } ///////////////// $flag = 0; $i = 1; $order_content = ''; foreach ($_POST['955goosedown'] as $key => $value ) { if ($value > 0) { $flag = 1; if($i%2 == 0) $order_content .= "<tr bgcolor='#E5E5E5'>"; else $order_content .= "<tr bgcolor='#F5F5F5'>"; $i++; if (($row['width'] ==0) && ($row['height']== 0)) $order_content .= "<td>" . $_SESSION['955goosedown'][$key]['name'] . "</td>"; else $order_content .= "<td>" . $_SESSION['955goosedown'][$key]['name'] . " -" . $_SESSION['955goosedown'][$key]['width'] . "/" . $_SESSION['955goosedown'][$key]['height'] . "</td>"; $order_content .= "<td>" . $_SESSION['955goosedown'][$key]['price'] . "</td>"; $order_content .= "<td>" . $value . "</td>"; $sub = $_SESSION['955goosedown'][$key]['price'] * $value; $total_price += $sub; $order_content .= "<td>" . $sub . "</td></tr>"; } } if ($flag == 1) { $body_items .= "<table border='0' width='600'> <tr> <th width='30%'><b>95/5 Goose Down:</b></th> <th width='12.5%'><i>Item Price</i></th> <th width='12.5%'><i>Quantity</i></th> <th width='12.5%'><i>Price</i></th> </tr>"; $body_items .= $order_content; $body_items .= '</table><br /><br />'; } ////// $flag = 0; $i = 1; $order_content = ''; foreach ($_POST['goosedownpillows'] as $key => $value ) { if ($value > 0) { $flag = 1; if($i%2 == 0) $order_content .= "<tr bgcolor='#E5E5E5'>"; else $order_content .= "<tr bgcolor='#F5F5F5'>"; $i++; if (($row['width'] ==0) && ($row['height']== 0)) $order_content .= "<td>" . $_SESSION['goosedownpillows'][$key]['name'] . "</td>"; else $order_content .= "<td>" . $_SESSION['goosedownpillows'][$key]['name'] . " -" . $_SESSION['goosedownpillows'][$key]['width'] . "/" . $_SESSION['goosedownpillows'][$key]['height'] . "</td>"; $order_content .= "<td>" . $_SESSION['goosedownpillows'][$key]['price'] . "</td>"; $order_content .= "<td>" . $value . "</td>"; $sub = $_SESSION['goosedownpillows'][$key]['price'] * $value; $total_price += $sub; $order_content .= "<td>" . $sub . "</td></tr>"; } } if ($flag == 1) { $body_items .= "<table border='0' width='600'> <tr> <th width='30%'><b>Goose Down Pillows:</b></th> <th width='12.5%'><i>Item Price</i></th> <th width='12.5%'><i>Quantity</i></th> <th width='12.5%'><i>Price</i></th> </tr>"; $body_items .= $order_content; $body_items .= '</table><br /><br />'; } ////// $flag = 0; $i = 1; $order_content = ''; foreach ($_POST['feathermattresstoppers'] as $key => $value ) { if ($value > 0) { $flag = 1; if($i%2 == 0) $order_content .= "<tr bgcolor='#E5E5E5'>"; else $order_content .= "<tr bgcolor='#F5F5F5'>"; $i++; if (($row['width'] ==0) && ($row['height']== 0)) $order_content .= "<td>" . $_SESSION['feathermattresstoppers'][$key]['name'] . "</td>"; else $order_content .= "<td>" . $_SESSION['feathermattresstoppers'][$key]['name'] . " -" . $_SESSION['feathermattresstoppers'][$key]['width'] . "/" . $_SESSION['feathermattresstoppers'][$key]['height'] . "</td>"; $order_content .= "<td>" . $_SESSION['feathermattresstoppers'][$key]['price'] . "</td>"; $order_content .= "<td>" . $value . "</td>"; $sub = $_SESSION['feathermattresstoppers'][$key]['price'] * $value; $total_price += $sub; $order_content .= "<td>" . $sub . "</td></tr>"; } } if ($flag = 1) { $body_items .= "<table border='0' width='600'> <tr> <th width='30%'><b>95/5 Mattress Toppers:</b></th> <th width='12.5%'><i>Item Price</i></th> <th width='12.5%'><i>Quantity</i></th> <th width='12.5%'><i>Price</i></th> </tr>"; $body_items .= $order_content; $body_items .= '</table><br /><br />'; } $body_items .= "<br /><b>Total: $total_price</b></b></b>"; /*-------------------First Email--------------------*/ /* Set Email for Redgraves, so they can for-full the order form */ $message = "A order form has been submitted by: $yourname<br /><br /> Order number :<u>$random</u><br /><br /> <b>Name:</b> $yourname<br /> <b>E-mail:</b> $email<br /> <b>Phone Number:</b> $phonenumber<br /> <b>Mobile Number:</b> $mobilenumber<br /> <b>Delivery Address:</b> $deliveryaddress<br /> <b>Comments:</b> $comments<br /><br /> $body_items <br /><br />**End of message** "; /* Send the message using mail() function */ $header= "MIME-Version: 1.0\r\n"; $header.= "Content-type: text/html\r\n"; mail($myemail, "Order Submitted", $message, $header); /* Send the message using mail() function */ //mail($myemail, "Order Submitted", $message); /*---------------Second Email---------------------*/ /* This email is to confirm the order and act as a receipt to the purchaser */ $respond_message = "Order Completed<br /><br /> Your order has been submitted! details are as follows<br /><br /> <b>Name:</b> $yourname<br /> <b>E-mail:</b> $email<br /> <b>Phone Number:</b> $phonenumber<br /> <b>Mobile Number:</b> $mobilenumber<br /> <b>Delivery Address:</b> $deliveryaddress<br /> <b>Comments:</b> $comments<br /><br /> $body_items <br /><b>Reference Number:</b> <u>$random</u><br /><br /> Please make payment using the refrence number above within 7 working days or your order will be canceled <br /> ASB 000-0000-0000-00 "; /* Send the message using mail() function */ $headers= "MIME-Version: 1.0\r\n"; $headers.= "Content-type: text/html\r\n"; mail($email, "Thank you for your order", $respond_message, $headers); /* Redirect visitor to the thank you page */ header('Location: thankyou.html'); exit(); /* Functions we used */ function check_input($data, $problem='') { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); if ($problem && strlen($data) == 0) { show_error($problem); } return $data; } function show_error($myError) { ?> <html> <body> <b>Please correct the following error:</b><br /> <?php echo $myError; ?> </body> </html> <?php exit(); } ?>
это то, что происходит с электронной почтой … 🙁
A order form has been submitted by: kc Order number :8674170468 Name: kc E-mail: testing@gmail.com Phone Number: 0941 Mobile Number: 64215 Delivery Address: japan Comments: 95/5 Mattress Toppers: Item Price Quantity Price Total: 0 **End of message**
Я был на этом уже пару дней и, похоже, может быть, эта ошибка может быть вызвана версиями php на базе данных или что-то в этом роде ???
любая помощь будет с благодарностью
UPDATE: это то, что генерируется print_r ($ _ POST);
Array ( [yourname] => kc [phonenumber] => 987 [mobilenumber] => 987 [email] => test@gmail.com [deliveryaddress] => testing 66 [1] => [2] => [comments] => sdsdf [code] => MYCODE )
Обновление 2: выход электронной почты не выдает цену, а также пару других значений
if ($flag = 1)
должно быть, if ($flag == 1)
Это написано правильно как последнее для большинства условностей, но не для матрацев. Вот почему всегда появляется пустое место для матрацев.
Основываясь на том, что появляется в $_POST
похоже, что существует несоответствие между именами ваших реальных полей формы и именами, которые ваш PHP ожидает найти. Например, раздел 50/50 Goosedown ищет: $_POST['5050goosedown']
но выпадающее я предполагаю, что это связано с <select name=". $row['goosedown_id'] .">
Чтобы оно отображалось в $ _POST с ключом, равным любому $row['goosedown_id']
. Похоже, что это числа (пустые значения в $_POST
для 1
и 2
.
Почему они пустые? Я предполагаю, что эти идентификаторы будут доступны для нескольких полей, поэтому у вас есть несколько вариантов с одинаковым именем, и они будут противоречить друг другу при отправке.
Попробуйте изменить выборки, чтобы выглядеть так (пример для первого):
echo '<td><select name="5050goosedown[' . $row['goosedown_id'] . ']">' . "<option>1</option> <option>2</option> and so on
Это заставит его отображаться в $_POST
как вложенный массив, например
array( [5050goosedown] => array( [1] => 2, [2] => ) )
с идентификаторами конкретных элементов здесь 1 и 2. Это, похоже, то, что ожидает PHP-код.