Постоянно добавлять несколько строк базы данных mysql в таблицу html, используя раскрывающийся список

У меня есть небольшой проект, с которым мне нужна помощь!

У меня есть база данных MYSQL, содержащая: «ID» «FoodTitle» «Serving» «Carbs» «Protein» «Fat»

Теперь у меня есть столбец «FoodTitle» в раскрывающемся меню. Поэтому всякий раз, когда пользователь выбирает, какую еду он хочет, столбец «Подача», «Углеводы», «Белки», «Жиры» в этой конкретной строке отображается в соответствующем текстовом вводе внутри таблицы html.

Я хотел бы, чтобы пользователь мог продолжать выбирать «FoodTitle», чтобы они могли продолжать добавлять строки/контент в таблицу html. Почти как они создают рецепт.

Я просто не могу найти способ позволить пользователю продолжать добавлять содержимое в таблицу html, например список.

Вот мой код...

<?php
// create a connection
$conn = mysqli_connect("localhost", "root", "root", "DBPT_MP_breakfast");
// check connection
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
?>
<html>
<head>
<style>
th, td {border:1px solid black;}
</style>
<meta charset="utf-8">
<title>DBPT Food Database</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<section>
  <div class="form-fields">
<?php
      $breakfast = 'SELECT * FROM breakfast';
      $breakfastDisplay = mysqli_query($conn, $breakfast); 

      echo '<form action="" method="post">';
      echo '<select class="meal-planner-selector" name="searchFood">'; 
       echo '<option>Select a food:</option>';
          while($bDis=mysqli_fetch_array($breakfastDisplay)){            
            echo '<option value="' . $bDis['ID'] . '">' . $bDis['FoodTitle'] . '</option>';
          }
           echo '</select>'; // Closing of list box 
           echo '<input type="submit" value="Add Food">';
           echo '</form>';

//SEARCH FOOD DATABASE
if (!empty($_REQUEST['searchFood'])) {

$Search = mysqli_real_escape_string($conn, $_REQUEST['searchFood']);     
$sql = "SELECT * FROM breakfast WHERE ID LIKE '%".$Search."%'";
$r_query = mysqli_query($conn, $sql); 
$r = '';

        $r .= '<table id="foodTable">'; 
        while ($row = mysqli_fetch_array($r_query)){
            $r .= '<tbody id="test">';
            //HEADINGS
            $r .= '<tr id="table-headings">';
            $r .= '<th>'. 'Food Title' . '</th>';
            $r .= '<th>'. 'Serving' . '</th>';
            $r .= '<th>'. 'Carbs' . '</th>';
            $r .= '<th>'. 'Protein' . '</th>';
            $r .= '<th>'. 'Fat' . '</th>';
            $r .= '</tr>';
            //DATA
            $r .= '<tr id="table-data">';
            $r .= '<td>' .$row['FoodTitle'] . '</td>';
            $r .= '<td><input type="text" value=" '.$row['Serving'] . '"</td>';
            $r .= '<td><input type="text" value=" '.$row['Protein'] . '"</td>';
            $r .= '<td><input type="text" value=" '.$row['Carbs'] . '"</td>';
            $r .= '<td><input type="text" value=" '.$row['Fat'] . '"</td>';
            $r .= '<td><input type="button" onclick="addRow()" id="add-row" value="Add Row"</td>';
            $r .= '</tr>';
        }
        $r .= '</tbody>';
        $r .= '</table>';
        echo $r; 
        }
?>
  <script>
    function addRow() {
      var row = document.createElement('tr'); // create row node
      var col1 = document.createElement('td'); // create 1st column node
      var col2 = document.createElement('td'); // create 2nd column node
      var col3 = document.createElement('td'); // create 3rd column node
      var col4 = document.createElement('td'); // create 4th column node
      var col5 = document.createElement('td'); // create 5th column node
      var col6 = document.createElement('td'); // create 6th column node
      row.appendChild(col1); // append 1st column to row
      row.appendChild(col2); // append 2nd column to row
      row.appendChild(col3); // append 3rd column to row
      row.appendChild(col4); // append 4th column to row
      row.appendChild(col5); // append 5th column to row
      row.appendChild(col6); // append 6th column to row
      col1.innerHTML = "<? echo $row['FoodTitle'] ?>"; // put data in 1st column
      col2.innerHTML = "<input type='text' value='<? echo $row['Serving']?>'/>"; // put data in 2nd column
      col3.innerHTML = "<input type='text' value='<? echo $row['Carbs']?>'/>"; // put data in 3rd column
      col4.innerHTML = "<input type='text' value='<? echo $row['Protein']?>'/>"; // put data in 4th column
      col5.innerHTML = "<input type='text' value='<? echo $row['Fat']?>'/>"; // put data in 5th column
      col6.innerHTML = "<input type='button' onclick='addRow()' id='add-row' value='Add Row'/>"; // put data in 6th column
      var table = document.getElementById("foodTable"); // find table to append to
      table.appendChild(row); // append row to table
    }
  </script> 
</div>
</section>
<?php  
$conn->close();
?>
</body>
</html>

Любая помощь будет принята с благодарностью!


person IllusionalQuestions    schedule 31.10.2015    source источник
comment
с Jquery и Ajax будет проще   -  person tom fox    schedule 31.10.2015
comment
Привет! Я начал с этой ссылки, используя ajax. У меня это сработало, после поиска в Google я также получил часть jQuery для добавления строки, но я не мог найти способ добавить несколько материалов. он просто продолжал заменять исходную строку. - Имеет ли это смысл? Я должен что-то упустить!   -  person IllusionalQuestions    schedule 31.10.2015
comment
отредактируйте свой вопрос последним, что вы сделали с помощью jquery, чтобы я мог вам помочь   -  person tom fox    schedule 31.10.2015
comment
Хорошо, я добавил часть jQuery, но я знаю, что сделал это неправильно... Я просто не могу найти, как получить именно то, что мне нужно! - моя голова болит!   -  person IllusionalQuestions    schedule 02.11.2015
comment
ваша проблема в том, что каждый раз, когда вы меняете поле выбора, вы обновляете всю страницу, поэтому старая запись, отображаемая на странице, исчезает, поэтому лучший подход здесь - использовать ajax для получения данных без обновления страницы.   -  person tom fox    schedule 02.11.2015


Ответы (1)


в вашем случае вам нужны две страницы, одна для отображения формы выбора, а другая просто возвращает данные, переданные на почтовый запрос, и на первой странице каждый раз, когда вы меняете поле выбора, отправляете запрос на публикацию ajax на вторую страницу и получить массив json и отобразить его с помощью jquery

http://www.infotuts.com/fetch-record-from-database-using-jquery-and-php/

http://openenergymonitor.org/emon/node/107

http://www.codexworld.com/load-more-data-using-jquery-ajax-php-from-database/

person tom fox    schedule 02.11.2015
comment
хорошо... спасибо за помощь... Я вернулся к этой ссылке и я посмотрю, смогу ли я отредактировать его, чтобы он соответствовал тому, что мне нужно сделать ... Поскольку это может быть немного не в моей рулевой рубке, у вас есть какие-либо ссылки на учебные пособия, которые вы можете предоставить, которые могли бы помочь мне выбить это? - person IllusionalQuestions; 02.11.2015