У кого была такая же ошибка как и у меня, а именно: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in и т.д. У меня была ошибка в том, что между OR и "(Двойными кавычками) не было пробела, на видео он есть, но я не стал заострять на этом внимание. Потом уже как всё перепроверил, понял в чем заключалась ошибка.
Спасибо за комментарий. Вижу много вопросов возникает по этому скрипту и люди невнимательно смотрят. Часто ошибка кроется в синтаксисе. Попробую выложить сей код в mysqli и PDO в обоих вариантах
мы каждой выведенной ссылке(которая является заголовком статьи - поле title) прикрепляем её же id, чтобы передать его значение методом GET на следующую страницу, чтобы по нему произвести выборку из БД - вывести ту запись, у которой id равен полученному значению ("SELECT * FROM таблица WHERE id=$_GET['id']" ) и выводим эту статью отдельно целиком.
Спасибо! Очень полезно для меня чайника. Подскажите, что нужно добавить в этот код - 1) Что бы при пустом запросе в поле поиска выдало бы сообщение "Пожалуйста, введите поисковый запрос". 2) При поиске не оказалось совпадений с запросом и тогда должно выдать сообщение: "Поиск не дал результатов". Спасибо!
Здр, Я наверное уже все перепробовал, но не меняется кодировка, в место русских букв, знаки вопроса. Что может быть не так, делал все по вашему видео? И еще при написание больше одного слова в поиске идет ошибка "Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in…" Я смотрел таблицу правильно записал, делал по идее все по видео. if(isset($_POST['submit'])){ $search = explode(" ", $_POST['search']); $count = count($search); $array = array(); $i = 0; foreach($search as $key) { $i++; if($i < $count) { $array[] = "CONCAT (`title`, `text`) LIKE '%".$key."%' OR"; } else { $array[] = "CONCAT (`title`, `text`) LIKE '%".$key."%'"; } } $sql = "SELECT * FROM `test` WHERE ".implode("", $array); $query = mysqli_query($connect, $sql); while($row = mysqli_fetch_assoc($query)) echo "".$row['title']."".$row['text'].""; }
Благодарю за вопрос. Проблема решается очень просто. Вот варианты: 1) проверить чтобы сам файл был создан в кодировке utf8 2) добавить между тегами head метатег 3) установить кодировку самого соединения с БД mysqli_set_charset($link, "utf8") Подробнее www.php.net/manual/ru/mysqli.set-charset.php 4) создать в корне сайта файл .htaccess В нём прописать AddDefaultCharset UTF-8
Если как я понял, вывелись записи из бд в виде статей с заголовками или ещё что-то, эти заголовки сделать как ссылки, а в адресе ссылок прописать файл для отдельного просмотра одной записи (например, view_page.php?id=номер записи). Т.е. через метод GET мы передаём на другую страницу информацию о номере той или иной записи, а там уже через выборку подставляем полученную информацию
спасибо, у меня всё работает, получилось, но нужно выводить фотографию ещё, а она выводится просто названием(по типу 55dfdf.jpg) не подскажешь, как сделать, чтоб она выводилась именно фотографией, а не таким текстом?
@@vika_28423 у вас путь к картинке на сервер хранится в таблице БД в каком-то поле (тип поля при создании лучше указывать text)? Правильно понимаю? Мы выводим её в цикле или одиночно, неважно, это поле имеет название. Вот это название нужно поставить в ковычки как здесь echo $row['имя_поля_картинки'];
спасибо за видео! у меня возникает ошибка Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in Z:\home\localhost\www\bd\index.php on line 27 вот строка: while($row = mysqli_fetch_assoc($query)) echo " ".$row ['name']."".$row['text'].""; я ведь правильно понимаю, что различие этой строки с вашей лишь в том, что ваше title меняется на мое name, так как у меня такое название в бд?
Извините, я протупила, еще раз спасибо за видео, только говорите побольше, я в некоторых местах совсем не понимала что вы делаете, думала, что звук выключился
Ура, у меня наконец-то получилось, когда я заменил некоторые одинарные кавычки на скошенные кавычки, они находятся в тех же местах кода, как и в видео. Чтобы написать скошенную одинарную кавычку нужно на английской раскладке клавиатуры нажать там, где буква Ё (слева сверху)
У кого была такая же ошибка как и у меня, а именно: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in и т.д. У меня была ошибка в том, что между OR и "(Двойными кавычками) не было пробела, на видео он есть, но я не стал заострять на этом внимание. Потом уже как всё перепроверил, понял в чем заключалась ошибка.
Спасибо за комментарий. Вижу много вопросов возникает по этому скрипту и люди невнимательно смотрят. Часто ошибка кроется в синтаксисе. Попробую выложить сей код в mysqli и PDO в обоих вариантах
@@architector7199 ПОжете готовы код скинуть?
Спасибо тебе, добрый человек. Сколько видео пересмотрел, не понятно было - всё разъяснил
Чувак ты крут все работает, объясняешь все доходчиво спасибо тебе!
Спасибо очень помог лайк тебе
спасибо, очень помог
кому нужен id записи:
while($row = mysqli_fetch_assoc($test))
{
$id = $row['id'];
echo "".$row['title']."";
}
мы каждой выведенной ссылке(которая является заголовком статьи - поле title) прикрепляем её же id, чтобы передать его значение методом GET на следующую страницу, чтобы по нему произвести выборку из БД - вывести ту запись, у которой id равен полученному значению ("SELECT * FROM таблица WHERE id=$_GET['id']" ) и выводим эту статью отдельно целиком.
Большое спасибо зв урок, было очен интересно !
Спасибо! Очень полезно для меня чайника. Подскажите, что нужно добавить в этот код - 1) Что бы при пустом запросе в поле поиска выдало бы сообщение "Пожалуйста, введите поисковый запрос". 2) При поиске не оказалось совпадений с запросом и тогда должно выдать сообщение: "Поиск не дал результатов". Спасибо!
*Неужели так сложно выложить код...*
$connect = mysqli_connect('localhost','mysql','mysql','application') or die("Error");
if(!empty($_POST['search'])) {
if(isset($_POST['submit'])) {
$search=$_POST['search'];
$exp=explode(" ", $search);
$search=" LIKE '%";
$search .= implode("%' or CONCAT(text, title) LIKE '%", $exp);
$search .= "%' ";
$sql="SELECT * FROM `search` WHERE CONCAT(text, title) " .$search;
$result=mysqli_query($connect,$sql);
while($row=mysqli_fetch_assoc($result)) {
echo "" . $row['title'] . "" . $row['text'] . "";
}
}
}
Пишет Notice: Undefined index: search in C:\xampp\htdocs\siite\search11.php on line 21, как исправить?
А как добавить в код если ничего не найдено вывести ничего не найдено?
Архитектору ставим лайки
19:06 У меня выдал ошибку что делать?
Спасибо! Отличное видео, но как сделать, чтобы в результат поиска попадали только строки, где встречаются все слова из запроса в произвольном порядке?
Спасибо...
KODE
Как вы меня выручили вы бы знали :) Лайк, подписка однозначно)
Здр,
Я наверное уже все перепробовал, но не меняется кодировка, в место русских букв, знаки вопроса. Что может быть не так, делал все по вашему видео?
И еще при написание больше одного слова в поиске идет ошибка "Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in…" Я смотрел таблицу правильно записал, делал по идее все по видео.
if(isset($_POST['submit'])){
$search = explode(" ", $_POST['search']);
$count = count($search);
$array = array();
$i = 0;
foreach($search as $key) {
$i++;
if($i < $count) {
$array[] = "CONCAT (`title`, `text`) LIKE '%".$key."%' OR";
}
else {
$array[] = "CONCAT (`title`, `text`) LIKE '%".$key."%'";
}
}
$sql = "SELECT * FROM `test` WHERE ".implode("", $array);
$query = mysqli_query($connect, $sql);
while($row = mysqli_fetch_assoc($query)) echo "".$row['title']."".$row['text']."";
}
Благодарю за вопрос. Проблема решается очень просто. Вот варианты: 1) проверить чтобы сам файл был создан в кодировке utf8 2) добавить между тегами head метатег 3) установить кодировку самого соединения с БД mysqli_set_charset($link, "utf8")
Подробнее www.php.net/manual/ru/mysqli.set-charset.php
4) создать в корне сайта файл .htaccess
В нём прописать AddDefaultCharset UTF-8
Что касается ошибки, она в sql. Надо поставить пробел после оператора OR
@@architector7199 Спасибо, все заработало)))
cпасибо, а как сделать что бы после поиска открывало страницу?
Если как я понял, вывелись записи из бд в виде статей с заголовками или ещё что-то, эти заголовки сделать как ссылки, а в адресе ссылок прописать файл для отдельного просмотра одной записи (например, view_page.php?id=номер записи). Т.е. через метод GET мы передаём на другую страницу информацию о номере той или иной записи, а там уже через выборку подставляем полученную информацию
@@architector7199нет возможности что бы ты мог это записать и показать? я бы помог с распространением твоего видео и был бы тебе очень благодарен
@@architector7199 или может быть у тебя есть телеграмм?
@@SMALLDan есть телеграм канал, но я давно не заходил на телегу
@@architector7199 а как бы нам с тобой с
контактировать?
как можно исправить такой момент: при пустом запросе выводит весь список товаров из бд
просто поставить условие, что если поле пустое - не выполнять скрипт
!empty
@@architector7199 а как поставить условие,что поле пустое?
@@vika_28423 надо гуглить и смотреть не сайте php.net Я думаю проверить на пустоту if(!empty(переменная)) или if(strlen(переменная) != 0)
Architector спасибо!
спасибо, у меня всё работает, получилось, но нужно выводить фотографию ещё, а она выводится просто названием(по типу 55dfdf.jpg)
не подскажешь, как сделать, чтоб она выводилась именно фотографией, а не таким текстом?
у меня он ищет только если полностью вписать название
Привет, брат
Сделай продолжение как обезопасить, пжпж
Ютуб творит чудеса, канал: Architector 3,63 млн подписчиков.
А что написать в переменной $row, чтобы можно было вместе с текстом вывести картинку?
echo $row['имя_поля_картинки'];
Architector а вместо ‘text’ что написать?Какой тип нужен для картинки,чтобы он открылся?Пробовала varchar не получилось
@@vika_28423 у вас путь к картинке на сервер хранится в таблице БД в каком-то поле (тип поля при создании лучше указывать text)? Правильно понимаю? Мы выводим её в цикле или одиночно, неважно, это поле имеет название. Вот это название нужно поставить в ковычки как здесь echo $row['имя_поля_картинки'];
Architector у меня тип поля указан varchar(255),думаете лучше указать text?Разве тогда картинка отобразится?
@@vika_28423 всё зависит от того сколько символов складывается из названия файла и пути к нему, если не вмещается в 255, следует использовать текст
спасибо за видео! у меня возникает ошибка
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in Z:\home\localhost\www\bd\index.php on line 27
вот строка:
while($row = mysqli_fetch_assoc($query)) echo " ".$row ['name']."".$row['text']."";
я ведь правильно понимаю, что различие этой строки с вашей лишь в том, что ваше title меняется на мое name, так как у меня такое название в бд?
Извините, я протупила, еще раз спасибо за видео, только говорите побольше, я в некоторых местах совсем не понимала что вы делаете, думала, что звук выключился
можете поделиться как вы решили проблему?
@@tory_f24 Какое решение этой проблемы?
как вы исправили эту ошибку?
Ура, у меня наконец-то получилось, когда я заменил некоторые одинарные кавычки на скошенные кавычки, они находятся в тех же местах кода, как и в видео. Чтобы написать скошенную одинарную кавычку нужно на английской раскладке клавиатуры нажать там, где буква Ё (слева сверху)
привет у меня ест проблема
Какая?
@@architector7199
вот код
include 'conn1.php';
if (isset($_POST['poisk'])){
$key = explode(" ",$_POST['date']);
$count = count($key);
$array = array();
$i = 0;
foreach($key as $q){
$i++;
if($i < $count)$array[]="CONCAT (`data`,`name`) LIKE '%".$key."%' OR ";else $array[] = "CONCAT (`data`,`name`) LIKE '%".$key."%'";
}
$sql = "SELECT * FROM `place` WHERE ".implode("", $array);
echo $sql;
$sq = mysqli_query($conn,$sql);
While($r = mysqli_fetch_assoc($sq))
echo '
'.$r['name'].'
'.$r['data'].'
'.$r['didan'].'
'.$r['date'].'
Муфассалтар
' ;
};
?>
ест ошибка ?