Как я могу использовать PHP для заполнения динамической таблицы в форме с ранее предоставленными пользователями ответами? - PullRequest
1 голос
/ 24 июня 2011

Это сложное название, я знаю.Я думаю, что пример лучше всего иллюстрирует то, что я имею в виду:

Допустим, я спрашиваю пользователя о его любимых рок-альбомах: albumName и albumArtist.У меня есть таблица с двумя столбцами, которая начинается только с одной строки.Когда пользователь нажимает кнопку, функция JavaScript добавляет другую строку с соответствующими полями ввода в соответствующих ячейках.Затем все эти данные хранятся в таблице MySQL.Все это прекрасно работает.

Когда пользователь вернется, я бы хотел перерисовать таблицу, вставив все предоставленные пользователем значения.Тем не менее, когда я вызываю ту же функцию JS с использованием PHP <echo>, она отображается выше формы.Как я могу это исправить?

Пример кода ниже:

Javascript в голове:

function addInputCell(newRow, cellNum, size, maxLength, fieldID, inputID, value)
{
  var newCell = newRow.insertCell(cellNum);
  var elem = document.createElement('input');
  elem.type = 'text';
  elem.size = size;
  elem.maxlength = maxLength;
  elem.name = fieldID + inputID;
  elem.value = value;
  newCell.appendChild(elem);
  alert(elem.value);
}

function add3CellRow(fieldID, size1, maxlength1, size2, maxlength2, value)
{
  var table = document.getElementById(fieldID);
  var lastRow = table.rows.length;

  if(lastRow <22){
    var newRow = table.insertRow(lastRow - 1);

    var cellLeft = newRow.insertCell(0);
    var textNode = document.createTextNode(lastRow - 1);
    cellLeft.appendChild(textNode);

    addInputCell(newRow, 1, size1, maxlength1, fieldID, 'Name[]', value);
    addInputCell(newRow, 2, size2, maxlength2, fieldID, 'Artist[]', value);
  }
  else
  {
    alert('You can only enter 20 values in this field');
  }
}

HTML в теле:

<table width="450" border="0" id='album' cellspacing="0" cellpadding="0">   
  <thead>
    <tr>
      <td width="3"></td>
      <td width="90%" align="center"><b>Album Name</b></td>
      <td width="10%" align="center"><b>Album Artist</b></td>
    </tr>
  </thead>

  <tr>
    <td align="right">1</td>
    <td><input type="text" size="20" name="albumName[]" maxlength="20" value='<?php echo($onfile['albumName']);?>'/></td>
    <td><input type="text" size="20" name="albumArtist[]" maxlength="20" value='<?php echo($onfile['albumArtist']);?>'/> </td>
  </tr>

  <tr>
    <td></td><td></td><td align="right"><input type="button" value="Add Concern" onClick="add3CellRow('album',20,20,20,20 ,'');"/></td>
  </tr>
</table>

PHP в теле:

<?php 
  echo ("<script type='text/javascript'>");

  //Get the data in the rock table where userID matches
  $result = mysql_query("SELECT * FROM rock WHERE userID = '$_SESSION[userID]'");

  while($onfile = mysql_fetch_array($result)) //Set the data into an array
  {
    echo ("add3CellRow('rock',20,20,20,20, '$onfileConcern[albumName]');");
  }
  echo ("</script>");
?>

Ответы [ 2 ]

1 голос
/ 24 июня 2011

Я не совсем уверен, является ли это ответом, который вы ищете, но если он хранится в базе данных, просто возьмите данные из базы данных, отобразите их в атрибуте «value» для входных тегов и информация должна быть там.

Пример:

<input type='text' value='<?php echo $firstName ?> name='firstName' />

$ firstName будет иметь значение того, что пользователь ранее сохранял в базе данных.

Это то, что вы ищете?

0 голосов
/ 24 июня 2011

Понял. Создана функция PHP, которая называется onLoad. Включено ниже. Обратите внимание, что первая запись игнорируется, так как она уже отображается в разделе HTML кода

function displayData()
{
$ii = 0;
$result = mysql_query("SELECT * FROM rock WHERE userID = '$_SESSION[userID]'"); //Get the data in the concern table where userID matches
while($onfile = mysql_fetch_array($result)) //Set the data into an array
{
    if($ii > 0)
    {
        echo ("add3CellRow('rock',20,20,20,20, '$onfile[albumName]','$onfile[albumArtist]');");
    }
    $ii += 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...