Использование jquery для привязки символов в форме к изображениям в mysql

#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. Спасибо, что попробовали это. Действительно ценю это. К сожалению, это что-то еще, что идет не так. Отсутствующий / был остаточной опечаткой из-за того, что я слишком много играл с ним. Извините за путаницу. Это не сработало, даже когда у меня был правильный путь.