нет. Но судя по тому, что ты сказал, ты не понимаешь, что она делает. Тоже. Что она делает? Например думая, что если сейчас запрос прошел удачно, то он будет проходить удачно всегда.
Всем привет, загрузить картинку получается, а вывести ее не получается помогите пожалуйста: PHP: $stmt = $pdo -> prepare('SELECT * FROM `users` WHERE `user_id` = ?'); $stmt->execute([$_SESSION['user_id']]); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); if ($rows){ foreach($rows as $val){ echo 'Мои данные<hr><div id="log">'.$val['login'].'</div>'; echo '<img src="'. $val['avatar'] .'"><hr>'; } } Что не так в этом запросе я делаю?
@_ne_scaju_ Воу полегче.... https://php.ru/manual/pdostatement.fetchall.phphttp://php.net/manual/ru/pdostatement.fetchall.html Вот тебе пример прямо от туда же. Самый первый причём "Пример #1 Извлечение всех оставшихся строк результирующего набора" PHP: <?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* Извлечение всех оставшихся строк результирующего набора */ print("Извлечение всех оставшихся строк результирующего набора:\n"); $result = $sth->fetchAll(); print_r($result); --- Добавлено --- Сделай так и поймёшь что не так делаешь)
@askanim Спасибо, с выводом уже разобрался, мой пример тоже пошел, только не тот который выше. А как же обрезать картинку? и уменьшить ее вес? Нашел класс вроде не плохой а как им воспользоваться не знаю, что и где подключить или подставить. В мой пример который взял с оф сайта мануала, для загрузки картинки.
@_ne_scaju_ Сделай авто подгрузку классов в своём проэкте через композер и более менее нормальная ide будет сама подставлять твои классы)
ай блин, не могу аватар вывести выводился сейчас начал переделывать и уже не выводится что это такое? Как вывести аватар из базы? если путь к папке изменил, но для того что бы вывести аватар я не указываю папку от куда выводить, только делаю запрос и все. Который показал выше.
@mahmuzar Я просто имя файла беру и в базу сохраняю, покажу сейчас код. Полный что и как, и как я хочу вытащить файлы это будет другой файл. Данный код предназначен для загрузки аватара в бд, куда потом в поле сохраняется имя аватара. PHP: <?php //Если нажата кнопка foto_avatar то обрабатываем данные заполнения данных if(isset($_POST['foto_avatar'])) { $uploaddir = dirname(__file__) . "/images/avatar/"; // каталог для хранения изображений $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "Файл корректен и был успешно загружен.\n"; } else { echo "Возможная атака с помощью файловой загрузки!\n"; } /*Делаем запрос на добавления фото*/ $stmt = $pdo->prepare("UPDATE `users` SET `avatar`= :avatar WHERE `user_id` = '". $_SESSION['user_id'] ."'"); $stmt->execute(array($uploadfile)); } ?> <h>Заполните данные</h> <form enctype="multipart/form-data" method="POST" action="" autocomplete='on'> <input type="file" name="userfile" value=""><br> <input type="submit" name="foto_avatar" value="Сохранить"> </form> Только почему не выводится аватар не пойму что не так. А теперь второй файл где я хочу вывести аватар: PHP: <?php $stmt = $pdo -> prepare('SELECT * FROM `users` WHERE `user_id` = "'.$_SESSION['user_id'].'"'); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); if ($rows){ foreach($rows as $val){ echo 'Мои данные<hr><div id="log">'.$val['login'].'</div>'; echo '<img src="'. $val['avatar'] .'"><hr>'; }} ?>
@_ne_scaju_, не оставляй пользовательское имя файла, это не безоспасно. Сгенерируй свое. И это имя файла храни в базе, без пути. Т.е. "image_name.jpg" а не "/project/images/image_name.jpg" Путь формируешь уже на строное php при выводе картинок.
@_ne_scaju_, ты сохраняешь в базу полный путь к картинке. Это чревато тем, что если ты захочешь переименовать какую либо из вложенных папок в пути к файлу, то пиши пропало, ничего не выведется. т.е. имеем путь к аватаркам: Код (Text): "/images/avatar/" ты решил переименовать папку avatar в avatars Код (Text): "/images/avatars/" И тут у тебя все рушится, так как в базе у тебя аватраки сохранены так: Код (Text): "/images/avatar/avatar.jpg" путь может отличатсья, не суть. Правильно будет генерировать новое имя файла, и хранить это сгенерированное имя в базе, без пути. Прежде нужно будет сохранить файл в файловой системе. Я в качестве имени файла использовал хеш на основе содержимого файла. --- Добавлено --- Вероятно, случилось то о чем я тебе говорю.
@mahmuzar Я в базе храню имена как varchar(255); Правильный тип? А на счет хранить имена без пути, ок сейчас попробую, хотя вряд ли получится потому что не получается прописать путь к файлу, я использую виндов7, и говорил кто то мне будут проблемы с выводом)))
@_ne_scaju_, ты не понимаешь о чем я тебе говорю. 1. выводи на экран данные полученные из базы даанны 2. смотри как ты прописываешь путь в html-шаблоне 3. сравни путь прописанный в html-шаблоне с путем из базы и самое главное, смотри файловую систему, есть ли у тебя такой путь. --- Добавлено --- Varchar - это тип столбца таблицы MySQL а мы сейчас говорим о другом. Перечитай все заново, вникай, если не понял - перечитай еще раз. И попробуй воспроизвести все что я писал выше. Всегда выводи данные с которыми работаешь на экран это попожет тебе легко находить косяки. --- Добавлено --- @_ne_scaju_, какая у тебя IDE?
@mahmuzar 1. выводить запросом? 2. я прописываю путь так $upload = "/images/avatar/"; 3. сравниваю, путь похож что и в базе что я прописываю. --- Добавлено --- @mahmuzar У меня не IDE я работаю с Опен Сервером + sublime text 3
@_ne_scaju_, возьми за привычку искать в интернете не знакоме слово. sublime text 3 - это текстовый редактор, в котором ты работаешь. Т.е. ты не используешь IDE а работаешь в текстовом редакторе. Покажи мне структуру твоего проекта. --- Добавлено --- Перечитай, что я тебе выше советовал. --- Добавлено --- ты ж программист, ну чо ты))
@mahmuzar В базе получается так: и в коде так: $uploaddir = '../../images/avatar/'; Структуру именно как вложены папки файлы и т.д.?
@_ne_scaju_, Теперь, если ты все перечитаешь от начала нашей переписки то должен разобраться в чем у тебя проблема. А как насчет моей просьбы показать структуру проекта? --- Добавлено --- когда будешь делать скриншот, раскрой папку images и папку где у тебя шаблоны html
@mahmuzar Ну вот как бы структура, она может и не о чем не скажет))) Надеюсь ты за эту структуру говорил. Шаблоны в папке blocks и кусок есть в index.php на главной Я же программист) И как мне правильно путь указать, без всяких наклонных и т.д.
Уже сказала. Картинку ты ишешь на две папки выше, а папка images на одну выше. Вот как избавиться от всей этой мороки, я тебе расписал выше. Перечитай будь добр, вникай, спрашивай.
Вот нашел такой интересный код для генерации кода для картинки, теперь получается я храню не названия картинки а, с генерированный код) PHP: $type = pathinfo($_FILES['userfile']['name']); $uploadfile = $uploaddir .'/'. uniqid('files_') .'.'. $type['extension']; А вот вот эти слеши капец, хочется избавится от них)
@igordata будет жесть, взлом))) Дайте пожалуйста рабочий пример загрузки фотографий с правильным ресайзом картинок пожалуйста)))