2013-12-15 7 views
0

Это код моей домашней странице:Обновление таблицы со значениями из формы на той же странице

<html> 
<head> 
    <title>PHP test</title> 
    <link href="style.css" rel="stylesheet" type="text/css"> 
</head> 
<body> 


<div id="formDiv"> 
    <form action="testsql.php" method="post"> 
     Email: <input type="text" name="email"><br> 
     <textarea name="comment" rows="10" cols="40">Your comment here.</textarea> 
     <input type="submit" value="submit"> 
    </form> 


<div id="show">   
<?php 

    $con=mysqli_connect("","root","","my_db"); 
    // Check connection 
    if (mysqli_connect_errno()) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $result = mysqli_query($con,"SELECT * FROM Comments"); 

    echo "<table border='1'> 
    <tr> 
    <th>Email</th> 
    <th>Comment</th> 
    </tr>"; 

    while($row = mysqli_fetch_array($result)) 
    { 
     echo "<tr>"; 
     echo "<td>" . $row['Email'] . "</td>"; 
     echo "<td>" . $row['comment'] . "</td>"; 
     echo "</tr>"; 
    } 
    echo "</table>"; 

    mysqli_close($con); 
?> 
</div> 
</div> 
</body> 
</html> 

и вот код файла testsql.php:

<?php 
    $con=mysqli_connect("","root","","my_db"); 

if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 

header("Location: testphp.php"); 
if(empty($_POST["comment"])) 
    {echo "You have to write something. <br>";} 

else 
    { 
     if (mysqli_connect_errno()) 
     { 
      echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 

     if(empty($_POST["email"])) 
     { 
      $sql="INSERT INTO Comments (Email, comment) 
      VALUES 
      ('$_POST[email]', '$_POST[comment]')"; 
      echo "1 record added."; 
      if (!mysqli_query($con,$sql)) 
       { 
        die('Error: ' . mysqli_error($con)); 
       } 

     } 
     else{ 
      if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$_POST["email"])) 
      { 
       echo "Invalid email format <br>"; 
      } 
     else{ 
      echo "Your email is: {$_POST["email"]} <br>"; 
      $sql="INSERT INTO Comments (Email, comment) 
      VALUES 
      ('$_POST[email]', '$_POST[comment]')"; 
      echo "1 record added."; 
      if (!mysqli_query($con,$sql)) 
       { 
        die('Error: ' . mysqli_error($con)); 
       } 

      } 
     } 
    } 
    } 
?> 

Я хочу сделать, это взять значения из формы и поместить их в таблицу. Таблицу следует обновить после нажатия кнопки «Отправить». Он работает, когда у меня есть header(Location: "testphp.php");, но тогда он не будет отображать сообщения об ошибках, если пользователь неправильно пишет почту или не пишет комментарий.

Когда я не включать заголовок код работает правильно, но я попадаю на testsql.php, и я должен вернуться к testphp.php увидеть обновленную таблицу. Я знаю, что я могу использовать javascript, но наш профессор сказал нам, что сайт должен быть полностью полезен при отключенном javascript. Есть идеи?

+1

Вы используете свой заголовок ("Location: testphp.php"); 'преждевременно. Конечно, если запрос «POST», он выполнил свою работу. Вам нужно поместить 'header (" Location: testphp.php ");" после "он успешно запросил вашу БД. –

+0

Я попытался поместить заголовок после получения значений, но получаю предупреждение этого типа. Предупреждение: невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод запущен в /some/file.php:12) в /some/file.php в строке 23 – captain

+0

Используете ли вы сеансы случайно? –

ответ

0

Необходимо использовать Ajax aproach с JavaScript.

См. DataTable плагин для JQuery, чтобы сделать это легко.

+0

Профессор сказал, что JavaScript должен быть отключен: P – Salman

+0

Вы должны использовать **