За последние 24 часа нас посетили 97967 программистов и 5738 роботов. Сейчас ищут 2985 программистов ...

вывод из mysql

Тема в разделе "PHP для новичков", создана пользователем enkee, 4 июн 2016.

  1. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    Хай ребятушки. Помогите новичку со связкой php+mysqli.
    У меня есть таблица в бд с полями "id", "nickname", "access". Собсна, "nickname" содержит ник пользователя, а "access" - буковки. пример: zxc.
    При выводе этих данных на страничку есть небольшая проблема. Не получается сделать проверку на буквы.
    пример вывода:
    Ник, флагZ, флагXC

    Надо сделать так, что бы проверка была с учётом LIKE. Например: если у юзверя с id=1 в поле access прописаны все буквы(zxc), то при выводе на страничку под полями флагZ и флагXC стояло значение "Да", а если букв XC например нет, то под флагXC стояло значение "Нет", а под флагZ - "Да", т.к. буква Z есть.

    Я сделал таким образом:
    PHP:
    1. $flgz= "z";
    2. $flgxc = "xc";
    3. if($data['access'] == $flgz) $ez = "Да"; else $ez = "Нет";
    4. if($data['access'] == $flgxc) $xc = "Да"; else $xc = "Нет";
    Создаю юзверя с id=1, nickname=test, access=zxc.
    Результат при выводе - под полями стоит значение "Нет", но если пропишу юзверю только одну букву "Z", то под "флагZ" будет значение - Да. Или если пропишу "XC", так же получу ответ - Да. Но если пропишу все 3 буквы(zxc), то везде ответ будет - Нет. Надеюсь смог хоть как-то объяснить, ибо я новичок в этой сфере;)
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    что-то я не понял что надо
     
  3. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    Объяснил как только мог))
    Попробую в скриншотах...
    У пользователя "enkee", прописаны буквы в поле "access" = zxc.
    [​IMG]
    [​IMG]
    Как видите, буквы прописаны для пользователя "enkee", а ответ при выводе "Нет".

    кусок кода, отвечающий за значения "Да,нет" при выводе:
    PHP:
    1. $flgz= "z";
    2. $flgxc = "xc";
    3. if($data['access'] == $flgz) $ez = "Да"; else $ez = "Нет";
    4. if($data['access'] == $flgxc) $xc = "Да"; else $xc = "Нет";
     
  4. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    Ну так а что надо то? :)
     
  5. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    Чтобы под обеими полями стояло "да" :D
     
  6. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    У тебя флаг прописан zxc, а ты проверяешь на совпадение "z" и "xc". Конечно у тебя всегда будет "Нет"...
    --- Добавлено ---
    Тогда пропиши обеим полям "Да"...
     
  7. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    Вот в этом то и вся проблема, как сделать проверку не по одиночке, а по совпадению с флагом z например?
     
  8. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    Делай запрос в базу сразу с проверкой ("SELECT * FROM `таблица` WHERE `access` LIKE `%{$flgz}%`")
     
  9. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    так?
    PHP:
    1. $flgzZ = "z";
    2. $flgzZZ= "SELECT * FROM `таблица` WHERE `access` LIKE `%{$flgzZ}%`";
    3. $flgz = $connect->query($flgzZZ);
    4.  
    5. if($data['access'] == $flgz) $ez= "Да"; else $ez= "Нет";
    В общем, таким образом тоже не работает =(
     
    #9 enkee, 4 июн 2016
    Последнее редактирование: 4 июн 2016
  10. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    Нет, не так. У тебя нет переменной $flagzZ Интерпретатор считает $flagzZ одной переменной.
     
  11. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    ну сходу в лоб - вытаскиваешь одно поле access с полной строкой и потом проверяешь его на совпадение с z и с xc
     
  12. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    вроде можно искать подстроки в строках
     
    enkee нравится это.
  13. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    Вроде? Да точно можно :)
    --- Добавлено ---
    1 минута гугла и чувствуешь себя победителем...
     
    enkee нравится это.
  14. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    Ну вот я и надеюсь что наш новичок догадается про подстроки в строках.
     
  15. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    Теперь подстрока возвращает ответ, что флаг найден, хотя он не прописан(
     
    #15 enkee, 4 июн 2016
    Последнее редактирование: 4 июн 2016
  16. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    показывай как делаешь
     
  17. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    Сделал на примере из мануала php

    PHP:
    1. $mystring = $connect->query("SELECT `access` FROM `users`");
    2. $findme   = 'z';
    3. $pos = strpos($mystring, $findme);
    4.  
    5. if ($pos === false) {
    6.     echo "Строка '$findme' не найдена";
    7. } else {
    8.     echo "Строка '$findme' найдена";
    9. }
     
  18. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
  19. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    неверный результат.
    Ставлю любую букву - результат один и тот же "Строка '$findme' найдена". Как она найдена, если в поле "access" её нет!?
     
  20. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.599
    Симпатии:
    206
    Даю подсказку: у тебя $mystring не строка.
     
    denis01 нравится это.
  21. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    и каким же способом мне получить значение поля access?
     
  22. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.599
    Симпатии:
    206
    А вообще какой библиотекой для подключения к бд ты пользуешься?
    И ещё сделай var_dump($mystring);
     
  23. enkee

    enkee Новичок

    С нами с:
    4 июн 2016
    Сообщения:
    10
    Симпатии:
    0
    mysqli
    результат var_dump:
    PHP:
    1. object(mysqli_result)#3 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) }
     
  24. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    Ну вот. Это еще только результат запроса, из которого нужно еще выдернуть данные.
     
  25. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв