За последние 24 часа нас посетили 17490 программистов и 1700 роботов. Сейчас ищут 1776 программистов ...

Система друзей и ее реализация php mysql

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 14 мар 2017.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нет. Но судя по тому, что ты сказал, ты не понимаешь, что она делает. Тоже. Что она делает?

    Например думая, что если сейчас запрос прошел удачно, то он будет проходить удачно всегда.
     
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Ну и что делать значит? Я вообще запрос правильно сделал? Прокомментируй ты его)))
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну почитай доку по PDO и хоть что-то про мускул
     
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Всем привет, загрузить картинку получается, а вывести ее не получается помогите пожалуйста:
    PHP:
    1. $stmt = $pdo -> prepare('SELECT * FROM `users` WHERE `user_id` = ?');
    2. $stmt->execute([$_SESSION['user_id']]);
    3. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    4. if ($rows){
    5. foreach($rows as $val){
    6.             echo 'Мои данные<hr><div id="log">'.$val['login'].'</div>';
    7.             echo '<img src="'. $val['avatar'] .'"><hr>';
    8. }
    9. }
    Что не так в этом запросе я делаю?
     
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @_ne_scaju_ Воу полегче....
    https://php.ru/manual/pdostatement.fetchall.phphttp://php.net/manual/ru/pdostatement.fetchall.html

    Вот тебе пример прямо от туда же. Самый первый причём
    "Пример #1 Извлечение всех оставшихся строк результирующего набора"
    PHP:
    1. <?php
    2. $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    3. $sth->execute();
    4.  
    5. /* Извлечение всех оставшихся строк результирующего набора */
    6. print("Извлечение всех оставшихся строк результирующего набора:\n");
    7. $result = $sth->fetchAll();
    8. print_r($result);
    --- Добавлено ---
    Сделай так и поймёшь что не так делаешь)
     
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @askanim
    Спасибо, с выводом уже разобрался, мой пример тоже пошел, только не тот который выше.
    А как же обрезать картинку? и уменьшить ее вес?
    Нашел класс вроде не плохой а как им воспользоваться не знаю, что и где подключить или подставить.
    В мой пример который взял с оф сайта мануала, для загрузки картинки.
     

    Вложения:

  7. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @_ne_scaju_ Сделай авто подгрузку классов в своём проэкте через композер и более менее нормальная ide будет сама подставлять твои классы)
     
  8. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @askanim
    Ты заумными словами кидаешься) Я этого еще не знаю)))
     
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    ай блин, не могу аватар вывести выводился сейчас начал переделывать и уже не выводится что это такое?
    Как вывести аватар из базы? если путь к папке изменил, но для того что бы вывести аватар я не указываю папку от куда выводить, только делаю запрос и все. Который показал выше.
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @_ne_scaju_, а в каком виде ты хранишь файловые имена в базе?
     
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    Я просто имя файла беру и в базу сохраняю, покажу сейчас код. Полный что и как, и как я хочу вытащить файлы это будет другой файл.
    Данный код предназначен для загрузки аватара в бд, куда потом в поле сохраняется имя аватара.
    PHP:
    1. <?php
    2. //Если нажата кнопка foto_avatar то обрабатываем данные заполнения данных
    3. if(isset($_POST['foto_avatar']))
    4. {
    5. $uploaddir = dirname(__file__) . "/images/avatar/"; // каталог для хранения изображений
    6. $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
    7. if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    8.     echo "Файл корректен и был успешно загружен.\n";
    9. } else {
    10.     echo "Возможная атака с помощью файловой загрузки!\n";
    11. }
    12. /*Делаем запрос на добавления фото*/
    13. $stmt = $pdo->prepare("UPDATE `users` SET `avatar`= :avatar WHERE `user_id` = '". $_SESSION['user_id'] ."'");
    14. $stmt->execute(array($uploadfile));
    15. }
    16. ?>
    17. <h>Заполните данные</h>
    18. <form enctype="multipart/form-data" method="POST" action="" autocomplete='on'>
    19.     <input type="file" name="userfile" value=""><br>
    20.     <input type="submit" name="foto_avatar" value="Сохранить">
    21. </form>
    Только почему не выводится аватар не пойму что не так.
    А теперь второй файл где я хочу вывести аватар:
    PHP:
    1. <?php
    2. $stmt = $pdo -> prepare('SELECT * FROM `users` WHERE `user_id` = "'.$_SESSION['user_id'].'"');
    3. $stmt->execute();
    4. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    5. if ($rows){
    6. foreach($rows as $val){
    7.        
    8.             echo 'Мои данные<hr><div id="log">'.$val['login'].'</div>';
    9.             echo '<img src="'. $val['avatar'] .'"><hr>';
    10. }}
    11. ?>
     
  12. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @_ne_scaju_, не оставляй пользовательское имя файла, это не безоспасно. Сгенерируй свое. И это имя файла храни в базе, без пути.
    Т.е. "image_name.jpg" а не "/project/images/image_name.jpg"
    Путь формируешь уже на строное php при выводе картинок.
     
  13. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    А как это делается?
    Вообще я правильно сделал или нет, где и что я не правильно написал.?
     
  14. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @_ne_scaju_, ты сохраняешь в базу полный путь к картинке. Это чревато тем, что если ты захочешь переименовать какую либо из вложенных папок в пути к файлу, то пиши пропало, ничего не выведется.
    т.е. имеем путь к аватаркам:
    Код (Text):
    1. "/images/avatar/"
    ты решил переименовать папку avatar в avatars
    Код (Text):
    1. "/images/avatars/"
    И тут у тебя все рушится, так как в базе у тебя аватраки сохранены так:
    Код (Text):
    1. "/images/avatar/avatar.jpg"
    путь может отличатсья, не суть.
    Правильно будет генерировать новое имя файла, и хранить это сгенерированное имя в базе, без пути. Прежде нужно будет сохранить файл в файловой системе. Я в качестве имени файла использовал хеш на основе содержимого файла.
    --- Добавлено ---
    Вероятно, случилось то о чем я тебе говорю.
     
  15. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    Я в базе храню имена как varchar(255); Правильный тип?
    А на счет хранить имена без пути, ок сейчас попробую, хотя вряд ли получится потому что не получается прописать путь к файлу, я использую виндов7, и говорил кто то мне будут проблемы с выводом)))
     
  16. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @_ne_scaju_, ты не понимаешь о чем я тебе говорю.
    1. выводи на экран данные полученные из базы даанны
    2. смотри как ты прописываешь путь в html-шаблоне
    3. сравни путь прописанный в html-шаблоне с путем из базы и самое главное, смотри файловую систему, есть ли у тебя такой путь.
    --- Добавлено ---
    Varchar - это тип столбца таблицы MySQL а мы сейчас говорим о другом.

    Перечитай все заново, вникай, если не понял - перечитай еще раз. И попробуй воспроизвести все что я писал выше. Всегда выводи данные с которыми работаешь на экран это попожет тебе легко находить косяки.
    --- Добавлено ---
    @_ne_scaju_, какая у тебя IDE?
     
  17. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    1. выводить запросом?
    2. я прописываю путь так $upload = "/images/avatar/";
    3. сравниваю, путь похож что и в базе что я прописываю.
    --- Добавлено ---
    @mahmuzar
    У меня не IDE я работаю с Опен Сервером + sublime text 3
     
  18. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @_ne_scaju_, возьми за привычку искать в интернете не знакоме слово.
    sublime text 3 - это текстовый редактор, в котором ты работаешь. Т.е. ты не используешь IDE а работаешь в текстовом редакторе.

    Покажи мне структуру твоего проекта.
    --- Добавлено ---
    Перечитай, что я тебе выше советовал.
    --- Добавлено ---
    ты ж программист, ну чо ты))
     
  19. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    В базе получается так:
    и в коде так:
    $uploaddir = '../../images/avatar/';
    Структуру именно как вложены папки файлы и т.д.?
     

    Вложения:

    • 11.png
      11.png
      Размер файла:
      2,2 КБ
      Просмотров:
      3
  20. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @_ne_scaju_, Теперь, если ты все перечитаешь от начала нашей переписки то должен разобраться в чем у тебя проблема.

    А как насчет моей просьбы показать структуру проекта?
    --- Добавлено ---
    когда будешь делать скриншот, раскрой папку images и папку где у тебя шаблоны html
     
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    Ну вот как бы структура, она может и не о чем не скажет)))
    Надеюсь ты за эту структуру говорил.
    Шаблоны в папке blocks и кусок есть в index.php на главной
    Я же программист)
    И как мне правильно путь указать, без всяких наклонных и т.д.
     

    Вложения:

    • 12.png
      12.png
      Размер файла:
      7,1 КБ
      Просмотров:
      4
    #396 _ne_scaju_, 10 апр 2017
    Последнее редактирование: 10 апр 2017
  22. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Уже сказала. Картинку ты ишешь на две папки выше, а папка images на одну выше.

    Вот как избавиться от всей этой мороки, я тебе расписал выше. Перечитай будь добр, вникай, спрашивай.
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Вот нашел такой интересный код для генерации кода для картинки, теперь получается я храню не названия картинки а, с генерированный код)
    PHP:
    1. $type = pathinfo($_FILES['userfile']['name']);
    2. $uploadfile = $uploaddir .'/'. uniqid('files_') .'.'. $type['extension'];
    А вот вот эти слеши капец, хочется избавится от них)
     
    #398 _ne_scaju_, 10 апр 2017
    Последнее редактирование модератором: 10 апр 2017
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а если тебе расширение не картиночное пришлёт, а исполняемого файла?
     
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    будет жесть, взлом)))
    Дайте пожалуйста рабочий пример загрузки фотографий с правильным ресайзом картинок пожалуйста)))