Как оформить вывод PHP? - PullRequest
       17

Как оформить вывод PHP?

3 голосов
/ 21 ноября 2011

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

это код, который получает имена: echo "<div class=\"results\"> $row[Name] </div>";

Я поместил div с классом результатов, чтобы я мог его стилизовать. На данный момент все, что я хотел сделать, это центрировать результаты. После стилизации его с помощью css для центрирования, глядя на источник страницы, у каждого имени, которое было отражено, есть div с классом результатов. Все они расположены по центру, как я и хотел, и это хорошо, но это не лучший способ сделать это, потому что для каждого нового имени в базе данных будет создан новый div (сейчас есть 18 div. Слишком много!) . Я надеялся, что будет создан только один div, но я был явно неправ в этом.

Итак, возможно ли предварительно создать div в html-разметке, в котором ничего нет, и вывести имена в div? Или вы думаете, что был бы способ заставить все это выводить сразу, чтобы все было в пределах одного div?

Вот остальная часть кода, чтобы вы могли понять, что происходит:

<?php 
$connect = mysql_connect("localhost","user","0123");
if(!$connect){
    die("Failed to connect: " . mysql_error());
}

if(!mysql_select_db("Test")) {
    die("Failed to select database: " . mysql_error());
}

$results = mysql_query("SELECT * FROM Friends");

while($row = mysql_fetch_array($results)){
    echo "<div class=\"results\"> $row[Name] </div>";
}

if ($_POST[name] !="") { $sql="INSERT INTO Friends 
(name) VALUES('$_POST[name]')";

if (!mysql_query($sql,$connect))
  {
  die('Error: ' . mysql_error());
  }
echo "<div id=\"added\"> $_POST[name] added to the database </div>";
}
else die("")

?>

Ответы [ 4 ]

4 голосов
/ 21 ноября 2011

Поскольку вы выводите div внутри цикла while, вы получите новый div для каждого результата. Просто переместите div вне цикла:

echo "<div class=\"results\">";
while($row = mysql_fetch_array($results)){
    echo $row['Name'];
}
echo "</div>";

Обратите внимание, что вы всегда должны указывать свои ключи. Используйте $row['Name'] вместо $row[Name] (очевидно, нет, если Name является определенной константой).

2 голосов
/ 21 ноября 2011

Не позволяйте php выводить HTML-теги. В коде это выглядит плохо, и ваш редактор не распознает его как html и не испортит цвет. Как правило, я бы посоветовал сначала выполнить всю вашу обработку php, а затем создать HTML-код с фрагментами вывода php. Примерно так:

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

<?php
 // do all php stuff here
 $persons = /* get collection from database here */
?>

<html>
 <head>
 </head>
 <body>
  <ul id="ListOfPersons">
   <? foreach ($persons as $person): ?>
    <li>
      <?= $person["Name"] ?>
    </li>
   <? endforeach ?>
  </ul>
 </body>
</html>
2 голосов
/ 21 ноября 2011

я думаю, что лучше иметь переменную для хранения вывода:

$out .= "<div class=\"results\">";
while($row = mysql_fetch_array($results)){
  $out .= $row[Name]."<br />";
}
$out .= "</div>";

echo $out;
0 голосов
/ 21 ноября 2011

Вы можете отделить создание div от результатов повторив :

echo '<div class="results">';
while($row = mysql_fetch_array($results)){
    echo $row['Name'].'<br/>';
}
echo '</div>';

и если вы не хотите div, если нет результатов (нет друзей), вы можете использовать mysql_num_rows

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...