Нужна помощь в упрощении моей таблицы php - PullRequest
2 голосов
/ 18 мая 2010

Я относительно новичок в php и у меня такое ощущение, что я собираюсь пойти по кругу, отображая данные из MySQL.

У меня есть таблица, я хочу показать несколько полей из моей базы данных.

Как бы я этого достиг без необходимости повторять каждый бит таблицы ???

Вот код:

     <?php
$query1 = mysql_send("SELECT firstname, lastname, email, user, country FROM customers WHERE id='".$_COOKIE['custid']."'");

while ($row = mysql_fetch_array($query1))

{

      echo     ' <table id="account_table" style="width:550px; border:none; ">
              <tr>
                <td width="155">Contact Name</td>';
      echo          '<td width="335">';

    echo $row['firstname'] ;
    echo '&nbsp;';
    echo $row['lastname'];

    echo '</td>
              </tr>
              <tr>
                <td>Email Address</td>
          <td>';
   echo $row['email'];

  echo '  </td>
             </tr>
              <tr>
                <td>Username</td>
                <td>' ;

    echo $row['user'];

    echo '</td>
              </tr>
              <tr>
                <td>Country</td>
                <td>';

    echo $row['country'];

    echo '</td>
              </tr>
              <tr>
                <td>Time Zone</td>
                <td>GMT+1</td>
              </tr>
              <tr>
                <td>Activated</td>
                <td>16 Dec 2009</td>
              </tr>
            </table>';

            }
?>

Ответы [ 4 ]

4 голосов
/ 18 мая 2010

Я бы посоветовал взглянуть на какой-нибудь шаблонизатор, такой как Smarty , который позволит вам отделить презентацию от php-кода.

3 голосов
/ 18 мая 2010

Вы можете сначала извлечь все данные в массив, а затем выполнить итерацию по этому массиву. Нет необходимости отображать весь этот HTML с PHP.

В верхней части вашего файла вы должны выполнить всю обработку (т.е. получение, проверка данных), а в остатке вы просто напишите обычный HTML , только печать значений с PHP.

Это уже дает вам определенную степень разделения. Другие упоминают шаблоны двигателей (Smarty и т. Д.). Я не думаю, что вам это действительно нужно, потому что PHP сам по себе является механизмом шаблонов.
Только не поддавайтесь искушению делать сложные вещи в вашей презентации;)

Также альтернативный синтаксис для управляющих структур очень полезен для использования в сочетании с презентацией, поскольку он намного лучше читается.


Я немного изменил структуру таблицы, потому что вы не генерировали корректный HTML (вы создаете много таблиц с одинаковым идентификатором в исходном коде).
Это просто генерирует одну таблицу со строкой для каждого клиента.

<?php
$customers = array();
$query1 = mysql_send("SELECT firstname, lastname, email, user, country FROM customers WHERE id='".$_COOKIE['custid']."'");

while ($row = mysql_fetch_array($query1)) {
    $cusomters[] = $row;
}
?>

<table id="account_table" style="width:550px; border:none;">
    <tr>
       <th width="155">Contact Name</th>
       <th>Email Address</th>
       <th>Username</th>
       <th>Country</th>
       <th>Time Zone</th>
       <th>Activated</th>
    </tr>
<?php foreach($customers as $customer): ?>
    <tr>           
        <td width="335">
             <?php echo $row['firstname'] ?>
             &nbsp;
             <?php echo $row['lastname'] ?>
        </td>          
        <td><?php echo $row['email'] ?> </td>     
        <td><?php echo $row['user'] ?></td>           
        <td><?php echo $row['country'] ?></td>
        <td>GMT+1</td>
        <td>16 Dec 2009</td>
    </tr>
<?php endforeach; ?>
</table>
0 голосов
/ 18 мая 2010

Сначала несколько советов, держите окно / вкладку открытой для руководства php. (т.е. функция mysql_send () не существует).

Сделайте отступ в вашем коде и попытайтесь найти согласованное соглашение, чтобы ваш код читался.

Вы вставляете разметку таблицы в цикл while, что неверно. Ваш стол должен обернуть вашу петлю.

Использование $ _COOKIE как есть для выбора из вашей базы данных действительно плохо. Отфильтруйте и очистите ваш ввод, прежде чем использовать его в любом запросе.

Чтобы не смешивать представление данных и бизнес-логику, вы можете взглянуть на механизм шаблонов.

Посмотрите на 19 многообещающих шаблонных шаблонов PHP , чтобы найти его, или посмотрите список википедии .

0 голосов
/ 18 мая 2010

Основы кажутся правильными, хотя вам нужно будет убрать тег <table> из цикла while, теперь вы создаете таблицу для каждой записи, и я предполагаю, что это не то, что вы хотите.

Вам также необходимо подготовить вывод для вывода в браузер с помощью чего-то вроде htmlspecialchars($row[...]). Таким образом вы избежите потенциальных проблем, если выходные данные содержат теги html (javascript и т. Д.).

...