#php #jquery #mysql #image
#php #jquery — запрос #mysql — сервер #изображение #jquery #mysql
Вопрос:
Здесь новичок-любитель, поэтому заранее большое спасибо за любую помощь. Я здесь схожу с ума.
Я пытаюсь разработать скрипт jquery для поиска в mysql с помощью php изображений, хранящихся в моей базе данных. Пользователь должен ввести слово в поле ввода. Каждый символ, введенный в это слово, возвращает отдельное произведение искусства (например, введите f-l-o-w-e-r и получите шесть соответствующих изображений). С некоторой помощью я получил php-скрипт, нормально работающий с обычной html-формой. Но теперь, когда я попытался добавить часть jquery, все подключается нормально и, кажется, работает так, как я хочу, но вместо изображений я получаю только пустые поля со значком «поврежденное изображение».
Я прилагаю базовый сценарий find.php страница ниже. После этого, является index.php страница с jquery. Любые мысли глубоко ценятся…
$lettertype = str_split($lettertype);
$lettertype = "'" . implode("','", $lettertype) . "'";
$query = "SELECT * FROM Photos WHERE letter IN ($lettertype)";
$result = mysqli_query($cxn, $query)
or die ("No good");
$alpharray = array();
while($row = mysqli_fetch_assoc($result))
{
$alpharray[$row['search_term']][] = $row; //
}
foreach(str_split($_POST['search_term']) as $alpha)
{
echo "<a href='link.com'>
<img src='../delete/images/{$alpharray[$alpha][0]['imagePath']}' width='100' height='140'/></a>";
}
И тогда index.php …
<script type='text/javascript'>
$(document).ready(function(){
$("#search_results").slideUp();
$("#search_button").click(function(e){
e.preventDefault();
ajax_search();
});
$("#search_term").keyup(function(e){
e.preventDefault();
ajax_search();
});
});
function ajax_search(){
$("#search_results").show();
var search_val=$("#search_term").val();
$.post("./find.php", {search_term : search_val}, function(data){
if (data.length>0){
$("#search_results").html(data);
}
})
}
</script>
<title>Welcome!</title>
</head>
<body>
<h1>Search here</h1>
<form id="searchform" method="post">
<div>
<label for="search_term">Search</label>
<input type="text" name="search_term" id="search_term" />
<input type="submit" value="search" id="search_button" />
</div>
</form>
<div id="search_results"></div>
</body>
</html>
Комментарии:
1. Вы смотрели на сгенерированный источник (используя что-то вроде FireBug), чтобы увидеть, как выглядят URL-адреса к изображениям? Если вы получаете значок неработающего изображения, это, скорее всего, ошибка в URL, который генерируется для каждого изображения.
2. Ваш img src выглядит немного странно, поскольку начинается с двух точек «.. удалить / изображения». Обычно «..» используется для перемещения вверх по каталогу, а «/» обычно следует. Конечно, это не обязательно должно так работать, и у вас действительно может быть каталог, относящийся к доставленной странице, под названием «.. удалить».
3. Привет, спасибо за мысли. У меня есть папка с именем delete, в которой находятся файлы сценария и папка изображений. Может быть, это проблема?
4. Тодд, спасибо. Изображения сохраняются в папке в виде файлов JPG, к которым я обращаюсь с помощью скриптов, поэтому я не уверен, что получаю проблему с URL. Может быть, вы можете помочь мне понять?
5. Я получаю это сообщение, когда пытаюсь запустить его: «Ресурс интерпретируется как другой, но передается с неопределенным типом MIME». Я запускаю все на своем локальном компьютере с помощью MAMP. Я предполагаю, что это часть проблемы. Советы или указания к ресурсам, которые я мог бы использовать для самообразования, приветствуются. Возможно, следует опубликовать как новый вопрос.
Ответ №1:
Атрибут src <img>
всегда относится к URL фактической страницы, которую видит веб-браузер. Пример: www.example.com/test/index.php
содержит <img>
с src=../image.jpg
означает, что веб-браузер пытается загрузить www.example.com/image.jpg
Так что, если ваш index.php заключается в /
(например www.example.com/index.php ), вполне вероятно, что ссылка на изображение в ../delete
не будет работать, поскольку сервер не разрешает доступ к чему-либо за пределами своего веб-корня.
В любом случае, однако, если вы хотите получить доступ к родительскому каталогу, вам нужно ввести ../
(не только ..
)
Для вашего скрипта это будет означать:
foreach(str_split($_POST['search_term']) as $alpha)
{
echo "<a href='link.com'>
<img src='../delete/images/{$alpharray[$alpha][0]['imagePath']}' width='100' height='140'/></a>";
}
Комментарии:
1. Спасибо, что попробовали это. Действительно ценю это. К сожалению, это что-то еще, что идет не так. Отсутствующий / был остаточной опечаткой из-за того, что я слишком много играл с ним. Извините за путаницу. Это не сработало, даже когда у меня был правильный путь.