2015-04-22 3 views
0

В настоящее время я работаю над небольшим проектом для класса с использованием PHP, MySQL и HTML для создания простой веб-страницы ввода данных, в которой вы вводите номер детали, номер клиента, количество частей и цену в HTML-форму, и как только вы нажмете «Отправить», она отправляет данные в базу данных MySQL, пока (теоретически) обновляет верхнюю часть экрана, на которой отображается содержимое базы данных MySQL.Как я могу правильно обновить HTML-страницу, когда я нажал кнопку отправки, чтобы отправить данные в мою базу данных SQL?

Странная вещь, когда я впервые нажимаю кнопку «Отправить» после создания новой записи, она ничего не делает. Когда вы добавляете другую запись и нажмите «Отправить», экран обновится, и вы увидите предыдущую запись, введенную в верхней половине экрана, хотя в базе данных есть две записи. Когда вы добавляете записи, отображаемые записи всегда являются одной записью за тем, что действительно находится в базе данных.

Это заставило меня поверить, что это была какая-то проблема с обновлением экрана, поэтому я попробовал множество подходов к освещению экрана без каких-либо результатов.

Итак, мой вопрос заключается в следующем: есть ли способ, чтобы я нажал кнопку отправки после внесения записи, а затем обновил экран, чтобы он показывал вновь добавленную запись?

Вот мой код для проекта до сих пор:

<html> 
<head> 
<title>Homework Database - Sales Table </title> 
</head> 

<body> 
    <h1>Homework Database - Sales Table</h1> 
    <?php 
    $mysqli = new mysqli('localhost', 'root', 'moebius1', 'homework'); // hostname , user, password, database name 
    if ($mysqli->connect_error) 
    { 
     die('Connect Error (' . $mysqli->connect_errno . ') ' 
      . $mysqli->connect_error); 
    } 
    ?> 
    <form action="sales2.php" method="POST"> 
    <input type="hidden" name="action" value="delete" /> 
    <table> 
     <tr> 
      <th width="10%" align="left"> Delete &nbsp&nbsp </th> 
      <th width="10%" align="left"> ID Number &nbsp&nbsp </th> 
      <th width="10%" align="left"> Part Number &nbsp&nbsp </th> 
      <th width="10%" align="left"> Customer Number &nbsp&nbsp </th> 
      <th width="10%" align="left"> Quantity &nbsp&nbsp</th> 
      <th width="10%" align="left"> Price &nbsp&nbsp </th> 
     </tr> 
    <?php 
     $result = $mysqli->query("SELECT * FROM sales"); 
     while($row = $result->fetch_assoc()) 
     { 
      print "<tr>"; 
      print "<td><input type='checkbox' name='checkboxes[]' value='".$row["IDnumber"]."' /></td>"; 
      print "<td>".$row["IDnumber"]."</td>"; 
      print "<td>".$row["partNbr"]."</td>"; 
      print "<td>".$row["custNumber"]."</td>"; 
      print "<td>".$row["quantity"]."</td>"; 
      print "<td>".$row["price"]."</td>"; 
      print "</tr>"; 
     } 
    ?> 
    </table> 
    <input type="submit" value="Delete"/> 
    </form> 
    <hr> 
    <form action="sales2.php" method="POST" > 
     <input type="hidden" name="action" value="insert" /> 
     Part Number: <input name="partNbr" /><br/> 
     Customer Number: <input name="custNumber" /><br/> 
     Quantity: <input name="quantity" /><br/> 
     Price: $ <input name="price" /><br/> 
     <input type="submit" value=" Submit " /> 
    </form> 
    <?php 
     if(isset($_REQUEST["action"])) 
     { 
      switch($_REQUEST["action"]) 
      { 
       case "insert": 
        $SQL="INSERT INTO sales (partNbr, custNumber, quantity, price)VALUES ("; 
         $SQL=$SQL."'".$_REQUEST["partNbr"]."',"; 
         $SQL=$SQL."'".$_REQUEST["custNumber"]."',"; 
         $SQL=$SQL."'".$_REQUEST["quantity"]."',"; 
         $SQL=$SQL."'".$_REQUEST["price"]."'"; 
         $SQL=$SQL.");"; 
    if ($mysqli->query($SQL)=== FALSE) 
    { 
     printf("Error . Unable to insert data to table. ".$mysqli->error); 
    } 

         break; 
       case "delete": 
        $SQL="DELETE FROM sales WHERE"; 
        for($i=0; $i<count($_REQUEST['checkboxes']); $i++) 
        { 
          $SQL=$SQL." IDnumber=".$_REQUEST['checkboxes'][$i]." or"; 
        } 
        $SQL=rtrim($SQL, "or"); 
        if ($mysqli->query($SQL)== FALSE) 
        { 
         printf("Error. Unable to delete value.".$mysqli->error); 
        } 
        break; 
    } 
    } 
    $mysqli->close(); 
    ?> 
</body> 
</html> 

Заранее спасибо за любую помощь и все.

Denzil Bennett

+0

Если вы хотите обновить всю страницу, то вы можете использовать http://stackoverflow.com/questions/768431/how-to-make-a-redirect-in-php после процесса $ _Request [' action '] block statement –

ответ

3

Вы извлекаете данные из своей базы данных перед выполнением вставки.

Поток это: страница загружает данные из базы данных и отображает ее. Затем он проверяет, есть ли запрос на изменение данных - если это необходимо, выполните это действие.

Если вы переместите последний набор тегов php ниже раздела подключения к базе данных, он должен работать нормально. Затем поток: проверяет, добавляет/удаляет, затем извлекает данные и отображает их.

+0

То, что сказал @Burrito. Поменяйте по-разному: переместите весь свой HTML-код с первого тега

ко второму закрывающему тегу
в нижней части кода - прямо над. Это простой способ выразить это, но вы получите эту идею. – NYCBilly

+0

Пробовал это, как сказал Буррито, и это сработало как шарм. Похоже, вам нужно более внимательно рассмотреть темы потока страниц. –

0

Просто перезагрузите страницу после операции.

header('location:yourpage.php'); 
exit; 

Надеюсь, что проблема будет решена.

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