Отобразить апостроф из таблицы MySQL на веб-странице в атрибуте заголовка изображения

У меня есть форма, которая позволяет пользователю вводить сокращение (например, собаки Ларри) в таблицу MySQL> Код выглядит следующим образом:

<?php


<?php
if(isset($_POST['submit'])){

$title = mysqli_real_escape_string($conn,$_POST['title']);


$insertImageQ = "INSERT INTO images (title, name, keyword1, keyword2, keyword3, enter_date) VALUES('$title', '$name', '$keyword1','$keyword2','$keyword3',now())";


if(!mysqli_query($conn, $insertImageQ)){
die('error inserting new image');
}
$newImage = "one new image added";
}
}
?>

Когда я повторяю поле «заголовок» на веб-странице, оно работает нормально, если оно не отображается в атрибуте заголовка изображения. Например,

<?php
$slideShowQ = "SELECT * FROM slideshow";
$result= mysqli_query($connection, $slideShowQ) or die("error getting connected");

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){

echo "<img class='lgImg'";
echo "id='";
echo $row['Id'];
echo "'";
echo "title='";
echo htmlentities($row['title']);
echo "'";
echo "alt='";
echo htmlentities($row['title']};
echo "'";
echo "src='_images/";
echo $row['name'];
echo "'/>";

}
?>
<?php
//release returned data
mysqli_free_result($result);
?>

В файле javascript я вызываю функцию, которая при наведении курсора мыши на изображение, div id = «topLeft», имеет html, установленный в заголовок. Например,

$('.lgImg').mouseover(function(){

var title =$(this).attr('title');
$('#topLeft').html(title);

Когда в поле заголовка происходит сжатие, все от апострофа обрезается.

Кроме того, на другой странице поле заголовка включено в приложение fancybox, где изображения извлекаются из таблицы mysql. Поле заголовка отображается так, как оно должно быть в приложении fancybox, если только в заголовке нет сокращения, в этом случае изображение даже не будет отображаться, как в приложении fancybox.

Кроме того, если я обновлю то же изображение с помощью этого кода,

<?php


if(isset($_POST['submit'])){



$title= mysqli_real_escape_string($conn,$_POST['title']);




$updateQ = "UPDATE images SET title='$title'";

if(!mysqli_query($conn, $updateQ)){
die('error inserting');
}



}
?>

поле в таблице становится пустым, а fancybox не работает.

В общем, я могу вставить сжатие и повторить это сокращение, пока я не отражаю его в атрибуте заголовка изображения, но я не могу обновить поле с сокращением.

Может кто-нибудь помочь мне понять это противоречие?

0

Решение

htmlentities () будет оставлять одинарные кавычки по умолчанию, и, поскольку вы используете их в своих атрибутах html, это приведет к недопустимому html.

Вы можете включить кодирование одинарных кавычек следующим образом:

htmlentities("'", ENT_QUOTES);

Больше информации на страница руководства

0

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

Других решений пока нет …

По вопросам рекламы [email protected]