2015-04-25 3 views
3

Правильно, это должен быть очень простой php, однако я не могу на всю жизнь понять, почему это не работает.php form submit is not inserting в базу данных

У меня есть форма, которая при отправке должна захватить поля, а затем вставить данные в базу данных. У меня на моем index.php раздел, который фактически отбрасывает информацию из базы данных и работает отлично, поэтому я не вижу, что это проблема соединения.

db_connection.php я хэшированная информацию здесь, как сва для моей базы данных, но все правильно

<?php 
define("DB_SERVER","**********"); 
define("DB_USER","*************"); 
define("DB_PASS","*********"); 
define("DB_NAME","reviews"); 

$connection = mysqli_connect(DB_SERVER,DB_USER,DB_PASS,DB_NAME); 

if(mysqli_connect_errno()){ 
    die("database connection failed"); 
} 


?> 

functions.php

<?php 
function redirect_to($new_location) { 
     header("Location: " . $new_location); 
     exit; 
    }  
function confirm_query($result){ 
    if(!$result){ 
     die("database query failed"); 
    } 
} 
function find_reviews($connection){ 
    $query = "SELECT * "; 
    $query .= "FROM reviews"; 
    $result = mysqli_query($connection,$query); 
    confirm_query($result); 
    while($reviews = mysqli_fetch_assoc($result)){ 
     $output = "<li class=\"first\">"; 
     $output .= $reviews["name"]; 
     $output .= "</li>"; 
     $output .= "<li class=\"second\">"; 
     $output .= $reviews["company"]; 
     $output .= "</li>"; 
     $output .= "<li class=\"third\">"; 
     $output .= $reviews["comment"]; 
     $output .= "</li>"; 
     $output .= "<li class=\"line\"></li>";  
     echo $output; 
    } 
    mysqli_free_result($result); 

    return $reviews; 
} 
?> 

index.php отметить, что функция find_reviews() работает и захватывает информацию из базы данных. Кроме того, выше «db_connection.php» и «functions.php» необходимы в index.php

<?php 
require("includes/header.php"); 
$page_title = "All County Road Markings"; 
$description = "Specialising in Road Marking & Car Park Lining. We are a professional established road marking service with over 20 years experience";?> 
<?php require("includes/db_connection.php"); ?> 
<?php require("includes/functions.php"); ?> 

<?php if(isset($_POST["submit"])){ 
    $name = $_POST["name"]; 
    $company = $_POST["company"]; 
    $comment = $_POST["comment"]; 
    $query = "INSERT INTO `reviews` (name,company,comment) VALUES ('$name','$company','$comment')"; 

    $result=mysqli_query($connection,$query); 
    confirm_query($result); 
    redirect_to("index.php"); 
} 
?> 
<div id="banner"></div> 
<div id="paragraph"> 
    <h2>All County Road Markings are a professional established road marking<br>service with over 20 years experience within the industry</h2> 
    <hr style="width: 1050px;"> 
</div> 
<div id="content"> 
    <div id="left"> 
     <div class="slot"> 
      <div class="top carpark"> </div> 
      <div class="linkbar"> 
       <h1>Car Parks</h1> 
      </div><div class="linktext"> 
       <ul class="comments display"> 
        <li>- Car Parking Bays</li> 
        <li>- Disabled Parking Bays</li> 
        <li>- Parent and Child Bays</li> 
        <li>- Lettering</li> 
        <li>- Hatchings</li> 
        <li>- Arrows</li> 
        <li>- Customised Lettering</li> 
       </ul> 
      </div> 
     </div> 
     <div class="slot"> 
      <div class="top roadmark"> </div> 
      <div class="linkbar"> 
       <h1>Road Markings</h1> 
      </div> 
      <div class="linktext"> 
       <ul class="comments display"> 
        <li>- Hatchings</li> 
        <li>- Centre Lines</li> 
        <li>- Double Yellow lines</li> 
        <li>- Give way junctions</li> 
        <li>- Reinstatement of existing markings</li> 
       </ul> 
      </div> 
     </div> 
     <div class="slot"> 
      <div class="top sportcourt"> 
      </div> 
      <div class="linkbar"> 
       <h1>Sports/Playground Court</h1> 
      </div> 
      <div class="linktext"> 
       <ul class="comments display"> 
        <li>- Tennis Court</li> 
        <li>- Basketball Court</li> 
        <li>- 5 A side Court</li> 
        <li>- Netball Court </li> 
        <li>- Reinstatement of existing markings</li> 
        <li>- Custom designs available</li> 
       </ul> 
      </div> 
     </div> 
    </div> 
    <div id="right"> 
     <div id="rightbar"> 
      <h2 style="color: white;">Testimonials</h2> 
     </div> 
     <div id="comment"> 
      <ul class="comments"> 
       <?php echo find_reviews($connection); ?> 
      </ul> 
     </div> 
     <div id="write"> 
      <p style="margin: 0px; padding-top: 5px;color: grey; font-size: 1.25em;">Click to write a review...<p> 
     </div> 
    </div> 
    <a href="contact.php"><div id="quote"><div class="link-text">contact us</div></div></a> 
</div> 
<div id="add"> 
    <div id="close"></div> 
    <form action="index.php" method="POST"> 
     <div id="name"> Name:<br/><span>Please Enter Full Name</span> 
      <input type="text" name="name" id="textbox"> 
     </div> 
     <div id="company"> Company<br/><span>Please Enter Company Name</span> 
      <input type="text" name="company" id="textbox1"> 
     </div> 
     <div id="review"> Review<br/><span>Please Enter Review</span> 
      <textarea name="comment" id="reviewComment"></textarea> 
     </div> 
     <div id="save"> 
      <input type="submit" name="submit"> 
     </div> 
    </form> 
</div> 
</body> 
</html> 

ОК так может кто-нибудь увидеть что-нибудь, что я делаю не так? как при отправке формы она просто не вставляется в базу данных.

EDIT ::

при попытке эхо mysqli-> ошибка; я получаю следующее сообщение об ошибке:

Parse error: syntax error, unexpected T_OBJECT_OPERATOR, expecting ',' or ';' in /hermes/bosoraweb140/b484/ipg.allcountyroadmarking/index.php on line 17 

Так я изменил его на

if(!results){ 
    echo "hello"; 
} 

и я не вижу «привет», так это о том, что я даже не попасть в часть, что он имеет дело с почтовые поля

SELF ПОСТАНОВИЛИ :::::

Ive установил это, я изменил действие = "index.php" в действии = ""

Я не понимаю, он должен был сработать, но почему-то сработало действие. оба должны быть приемлемыми!

+0

Чтобы сфокусировать свое устранение неполадок, вам нужно написать сообщение об ошибке. После запроса вы можете выполнить 'if (! $ Result) echo mysqli-> error;' и добавить ошибку в свой пост? –

+0

ive обновленный пост –

+0

Моя ошибка, которая должна была быть '(! $ Result) echo $ connection-> error;' для соответствия вашему коду. Я вижу, что это не проблема в любом случае, но все же полезный инструмент для отладки в будущем. –

ответ

0

формы действия, которое было установлено в

<form action="index.php" method="POST"> 

не работает, однако я не понимаю, почему не так, как это ссылки на текущую страницу.

Однако, при изменении этой проблемы возникла проблема.

<form action="" method="POST"> 
+0

Это странно .. –

0

Оператор if для $ _POST ['submint'] может быть ложным на каждом представлении. Может быть, попробовать! Пусто ($ _ POST)

+0

попробовал, это не помогло. –

0

Ну вы получили PHP в том же файле, так что, может быть, почему действие = «» работает, если он по умолчанию на одной странице .. Действие = «index.php» должен предварять текущий веб-адрес. Возможно, попробуйте поместить полный веб-адрес в action = "url для index.php", чтобы увидеть, работает ли это. Если это так, то action = "index.php" не должно поступать в нужный файл.

+0

Это было бы еще страннее, если бы op не использовал счетчик интуитивно понятных правил htaccess, которые испортили бы запрос referrer –