2016-06-10 4 views
2

У меня есть форма (add_company_form.php) в моей submit_form_company.php, которая принимает значения из POST и отправляет их в mysql через соединение pdo. Но я не могу получить подтверждение validation.php для подтверждения ввода. Я хочу, чтобы пользователь остался на одной странице, поэтому у меня нет действия в форме. Сам код не является полным, и есть много улучшений, которые можно сделать, но я застрял на проверке на данный момент. Я нахожусь на правильном пути, добавив validation.php раньше, чем мой db.php?Включить файл validation.php не выполняется

Submit_form_company.php

<?php 
if ($_SERVER['REQUEST_METHOD'] == "POST") { 
    try { 
     include('db.php'); 
     include('validation.php'); 

     if(empty($_SESSION["error_message"]) && $_POST['submit_company']) { 

      $STH = $conn->prepare(" 
        INSERT INTO companies (Name,Notes,OrganizationNumber) 
        VALUES (:Name,:Notes,:OrganizationNumber)"); 
      $STH->bindParam(':Name', $_POST['Name'], PDO::PARAM_STR); 
      $STH->bindParam(':Notes', $_POST['Notes'], PDO::PARAM_STR); 
      $STH->bindParam(':OrganizationNumber', $_POST['OrganizationNumber'], PDO::PARAM_INT); 
      $STH->execute(); 
     } elseif ($_SESSION["error_message"] && $_POST['submit_edit']) { 
      foreach ($_POST['company'] as $i => $value) { 
       $STH = $conn->prepare(" 
         UPDATE companies 
         SET Name = :Name,Notes = :Notes,OrganizationNumber = :OrganizationNumber 
         WHERE Id = :Id"); 
       $STH->bindParam(':Id', $value['Id'], PDO::PARAM_INT); 
       $STH->bindParam(':Name', $value['Name'], PDO::PARAM_STR); 
       $STH->bindParam(':Notes', $value['Notes'], PDO::PARAM_STR); 
       $STH->bindParam(':OrganizationNumber', $value['OrganizationNumber'], PDO::PARAM_INT); 
       $STH->execute(); 
      } 

     } 
     if(empty($_SESSION["error_message"])){ 
      echo "<meta http-equiv='refresh' content='0'>"; 
     } 


    } 

    catch (PDOException $e) { 
     echo $e->getMessage(); 
    } 

} 

require("add_company_form.php"); 
$DBH = null; 
?> 

add_company_form.php

<div class="row"> 
<form class="col-md-4 navbar-form" method="POST" action="" enctype="multipart/form-data"> 
    <div class="form-group"> 
     <label class="sr-only" for="Name">Name:</label> <input type="text" class="form-control" name="Name" placeholder="Name"><br /> 
     <label class="sr-only" for="Notes">Notes:</label> <input type="text" class="form-control" name="Notes" placeholder="Notes"><br /> 
     <label class="sr-only" for="OrganizationNumber">OrganizationNumber:</label> <input type="text" class="form-control" name="OrganizationNumber" placeholder="OrganizationNumber"><br /> 
     <input type="submit" name="submit_company" class="btn btn-default" value="Submit"> 
    </div> 
</form> 
    <?php 
if(!empty($_SESSION["error_message"])){ 
    echo'<div id="error_message" class="col-md-8">'; 
    print_alert_error($_SESSION["error_message"]); 
    $_SESSION["error_message"] = ""; 
    echo'</div>'; 
} ?>- 

Validation.php

<? 
$error = ""; 

if(isset($_POST['submit_company'])) { 
    $name = $_POST['Name']; 
    $notes = $_POST['Notes']; 
    $organization_number = $_POST['OrganizationNumber']; 

    if (!ctype_alpha(str_replace(array("'", "-"), "",$name))) { 
     $error .= '<p class="error">Name should be alpha characters only.</p>'; 
    } 

} 

//Add error message to session 
if (!empty($error)){ 
    $_SESSION["error_message"] = $error; 
} 
?> 

DB.php

<?php 
$servername = "127.0.0.1"; 
$username = "root"; 
$password = ""; 
$dbname = "test"; 
$conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

?>

+0

Вы пробовали отлаживать, повторяя инструкции if, чтобы узнать, какие шаги кода достигнут файлом? –

+0

Im using xdebug, поэтому я могу отслеживать, когда он перескакивает в файлы, и из того, что я вижу, он не вводит validation.php .. –

+0

Входит ли этот оператор if: 'if ($ _SERVER ['REQUEST_METHOD'] = = "POST") '? –

ответ

1

Глупое предложение, но попробуйте использовать полный <?php открывающий тег в файле validation.php.

+0

И вот он у нас есть. Я знал, что это было что-то простое, что я был слеп. Спасибо. –

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