#php #jquery #mysql
#php #jquery #mysql — сервер #mysql
Вопрос:
Благодарен за любую помощь в этом. Я очень новичок во всем этом.
Я создал форму jquery ‘live search’, которая связывает входные символы формы с соответствующими изображениями буквенного оформления в моей базе данных mysql (например, пользователь вводит f-l-o-w-e-r в режиме реального поиска, и php отображает шесть изображений).
Вот php-код для справки, который передает изображения в div в index.php:
foreach(str_split($_POST['search_term']) as $alpha)
{
echo "<img src='../delete/images/{$alpharray[$alpha][0]['imagePath']}' width='100' height='140'></src></a>";
}
Я бы хотел, чтобы пользователь щелкнул по одному из этих изображений, чтобы открыть карусель связанных изображений, из которых он / она мог перетащить новое изображение, чтобы заменить старое. В конечном итоге они могли бы отправлять весь самостоятельно выбранный массив букв в качестве заказа.
Со стороны jquery я могу разобраться с каруселью и с тем, как сделать что-то перетаскиваемое. Но у меня возникли проблемы с мысленным отображением того, как я выполняю заменяемую часть. Создать новый массив? Может быть, кто-нибудь может помочь мне разобраться с некоторыми подсказками …?
Большое спасибо!
Комментарии:
1. Честно говоря, это запрос на руководство, защищенное от идиотов, чтобы направить новичка на путь лучшего изучения этого вопроса. Насколько я понимаю, я последовательно повторяю определенные значения массива. Это статический вывод. Чтобы сделать его динамичным, нужно ли мне (например) вместо этого создать новый массив из этих значений и передать этот массив в jquery? затем я должен использовать что-то вроде .replacewith() в jquery, чтобы позволить пользователю динамически взаимодействовать с этим массивом и изменять его? Такой подход, вероятно, неверен. Мне нужна помощь в прояснении этой части.
Ответ №1:
Не уверен, в чем именно ваша проблема, но вы могли бы прочитать исходные тексты изображений, которые являются .each(), и опубликовать их в своем php-скрипте. Как кажется, у вас есть массив, который содержит все данные, и вы просто читаете нужные вам элементы. Таким образом, вы можете просто перезаписать элементы, которые вы хотите изменить, или создать новый массив, в зависимости от того, что именно вы хотите сделать. А также вы отметили свой вопрос mysql, не совсем уверенные в том, как хранятся ваши данные.
Редактировать:
Хорошо, я вижу здесь два возможных пути. Можно было бы создавать все изображения для каждого изображения в div прямо при создании, как это:
foreach(str_split($_POST['search_term']) as $alpha)
{
echo "<img class="clickable" src='../delete/images/{$alpharray[$alpha][0]['imagePath']}' width='100' height='140'></src></a>";
echo '<div class="editimages">';
// Code that creates the images with which the above image can be replaced
echo '</div>';
}
Недостатком является то, что пользователь получает все изображения одновременно, что может замедлять загрузку и создавать большой трафик. Плюсом является то, что это самое простое решение, и оно быстро реагирует, когда пользователь нажимает. Вы могли бы просто сделать что-то вроде
$(".clickable").click(function(){
$(".editimages").hide();
$(this).next().show();
});
В вашем JS.
Другим решением было бы загружать изображения по щелчку мыши, в тот момент, когда пользователь хочет отредактировать одно. Преимущество в том, что он будет загружать только нужные вам изображения, что сэкономит трафик и ускорит загрузку при инициализации, но он начнет получать заменяющие изображения, когда пользователь захочет их увидеть, поэтому в зависимости от того, насколько быстр сервер и насколько велики изображения, это может показаться немного медленнее.
Комментарии:
1. Спасибо за ваши мысли. Я понимаю, что делает .each(), но я не уверен, что я вас понимаю. Я попытался добавить пояснения в комментариях выше. В конечном итоге у меня могут быть сотни изображений. Таблица mysql имеет атрибуты для изображений, одним из которых является путь к изображениям, хранящимся в папке. Спасибо за вашу помощь.
2. Спасибо за всю помощь. Это хорошая пища для размышлений. Я посмотрю, где я могу это использовать. Моя цель — сделать так, чтобы при нажатии вызывалось только «портфолио» определенной буквы (например, портфолио h во введенном слове h-o-n-e-y). Я, вероятно, неправильно читаю ваш скрипт, но, похоже, ваш способ вызовет тот же совокупный портфель, независимо от того, какая буква была нажата. Возможно, мне потребуется запустить новый php-запрос onclick или что-то подобное тому, что вы предлагаете во втором варианте.
3. что это будет делать: если вы нажмете на изображение, то сразу после него будет показан div. Таким образом, у вас есть по одному для каждой буквы, которая создана в вашем foreach выше. Вам нужно только создать их в строке с предыдущим комментарием.
4. Конечно! Спасибо! Я думаю, это отлично сработает. Я создал несколько вложенных foreach, чтобы сгладить массив и отобразить все изображения из запроса. У меня возникли проблемы с пониманием того, как выбрать только для введенного символа, а не для всех запрошенных строк, но я думаю, что это другой вопрос. Еще раз спасибо.