Вложенные HTML-элементы, отображающие непреднамеренный стиль

У меня есть этот код:

<?php $search =$_GET['search']?>

<p>Displaying search results for : <font style="font-weight:bolder;font-style:italic"><?php echo $search?></font></p>

<?php
$mysql_host='localhost';
$mysql_user='root';
$mysql_password='can't see my password..sorry';

mysql_connect($mysql_host,$mysql_user,$mysql_password);
@mysql_select_db('galaxall');
?>

<!--the results-->

<p style="background-color:rgb(250,250,250)">
<div style="background-color:rgb(250,250,250);padding-bottom:3%;margin-right:20%">
<?php
$hello='hello everybody!!!';

$query="SELECT * FROM `galaxall_uploads` WHERE Title LIKE '%$search%' ";
if($is_query_run=mysql_query($query) )
{
while($query_execute=mysql_fetch_assoc($is_query_run) )
{
echo $query_execute ['Title'].'<br>'.''.'<p style="background-color:blue;padding-bottom:5%">'.'<br>' ;
}
} else {
echo"Sorry, something went wrong...";
}
?>
</p>

В основном это код SQL для извлечения данных из базы данных в порядке. Каждая полученная запись должна быть стилизована (украшена с помощью CSS). Это работает хорошо, за исключением того, что первый и последний результат искажены. например первый результат показан без какого-либо стиля CSS (в то время как второй, третий и т. д. в порядке), а последний показан со стилем CSS, но сам результат отсутствует.

Скриншот:

введите описание изображения здесь

Как вы можете видеть, первый «ht» не имеет синего стиля, а последний имеет синий стиль БЕЗ «ht» (почти как если бы они отделялись друг от друга)

1

Решение

  • mysql_ функции устарели с php5.5.
  • Я буду рекомендовать при обновлении до mysqli, что вы узнаете об объектно-ориентированном синтаксисе, потому что он менее многословен, чем процедурный синтаксис.
  • При подключении легко назначить целевую базу данных, поэтому сверните все в одну строку.
  • Вы строите запрос к базе данных с данными, предоставленными пользователем, поэтому требуется подготовленный оператор. Когда нет предоставленного значения вы мог Избегайте готовых операторов, но чтобы уменьшить сложность кода, я пишу подготовленные операторы для обработки всех случаев.
  • При разработке вашего SELECT предложение, если вам не нужны все столбцы для вашей задачи, запрашивайте только те столбцы, которые вы будете использовать.
  • Вы должны стараться избегать встроенного стиля, написав объявления стиля в <head> тег или даже в отдельном файле. Это улучшит общую читабельность и удобство сопровождения вашего кода.
  • Запись проверок на ошибки в ваш код будет очень полезна, когда вам нужно отладить свою работу — так что приобретайте привычку делать это постоянно. В целях безопасности никогда не показывайте точные сведения об ошибках своим пользователям.
  • $query_execute не является хорошим выбором для переменной, которая содержит данные из строки набора результатов. Он ничего не «выполняет», поэтому постарайтесь не путать себя и будущих читателей кода (людей) с такой терминологией.
  • Что касается конкретной проблемы html, попробуйте удалить все ненужные элементы DOM (теги) в выводе. Кажется, вам нужен только один, содержащий div для тебя p элементы.

Не проверенный код:

echo "<div style=\"background-color:rgb(250,250,250); padding-bottom:3%; margin-right:20%\">";
if (!$conn = new mysqli("localhost", "root", "", "galaxall")) {
echo "<font style=\"color:red;\">Database Connection Error</font>"; // don't show this to the public--> $conn->connect_error;
} else {
if (!isset($_GET['search'])) {
$search = "";
echo "<p>No search keyword received.  Showing all rows<p>";
} else {
$search = strip_tags($_GET['search']);  // perform whatever sanitizing/filtering/preparation techniques in this line
echo "<p>Displaying search results for: <font style=\"font-weight:bolder; font-style:italic\">$search</font></p>";
}
if (!$stmt = $conn->prepare("SELECT Title FROM galaxall_uploads WHERE Title LIKE ? ORDER BY Title")) {
echo "<font style=\"color:red;\">Prepare Syntax Error</font>"; // don't show this to the public--> $conn->error;
} else {
if (!$stmt->bind_param("s", "%$search%") || !$stmt->execute() || !$result = $stmt->get_result()) {
echo "<font style=\"color:red;\">Statement Error</font>"; // don't show this to the public--> $stmt->error;
} elseif (!$result->num_rows){
echo "<p>No matches in the database for \"$search\"</p>";
} else {
while ($row = $result->fetch_assoc()) {
echo "<p style=\"background-color:blue; padding-bottom:5%\">{$row['Title']}</p>";
}
}
$stmt->close();
}
$conn->close();
}
echo "</div>";
2

Другие решения

Вы не можете использовать div элемент внутри p элемент, а также ваш код для печати результатов базы данных имеет некоторые ошибки, поэтому я предлагаю это: —

<!--the results-->

<div style="background-color:rgb(250,250,250);padding-bottom:3%;margin-right:20%">
<?php
$hello='hello everybody!!!';

$query="SELECT * FROM `galaxall_uploads` WHERE Title LIKE '%$search%' ";
if($is_query_run=mysql_query($query) )
{


while($query_execute=mysql_fetch_assoc($is_query_run) )
{

echo '<p style="background-color:blue;padding-bottom:5%">'.$query_execute ['Title'].'</p><br/>' ;


}

}

else
{
echo"Sorry, something went wrong...";
}


?>
</div>
0

Это потому, что вы делаете это неправильно. попробуйте следующее

while($query_execute=mysql_fetch_assoc($is_query_run) )
{
echo '<p style="background-color:blue;padding-bottom:5%">'.$query_execute ['Title'].'</p><br>' ;
}
-1
По вопросам рекламы [email protected]