За последние 24 часа нас посетили 22379 программистов и 1052 робота. Сейчас ищут 553 программиста ...

Помогите разобраться!

Тема в разделе "PHP и базы данных", создана пользователем Даниль1999, 19 сен 2018.

  1. Даниль1999

    Даниль1999 Новичок

    С нами с:
    3 окт 2017
    Сообщения:
    66
    Симпатии:
    0
    Код PHP


    PHP:
    1. <?php
    2.             if ((isset($_SESSION['email'])) AND ($_SESSION['payed']=='Yes')){
    3.                     $i_n_1=$_POST['vopros'];
    4.                     $i_n_2=$_SESSION['i_n_1'];
    5.                     $query="SELECT `i_n_1` FROM `block` WHERE `i_n_1` = '$i_n_1' AND `i_n_2` = '$i_n_2'";
    6.                     $result = mysqli_query($link, $query) or die("ERROR: ".mysql_error());
    7.                     $row2 = mysqli_fetch_assoc($result);
    8.                     if (!isset($row2['i_n_1'])) {
    9.                     $money=$_SESSION['money']=(string)($_SESSION['money']-round((15*(100-$_SESSION['skdk']))/100));
    10.                     $query="UPDATE `users` SET `money`='$money' WHERE `i_n_1`  ='$i_n_2'";
    11.                     $result = mysqli_query($link, $query) or die("ERROR: ".mysql_error());
    12.                     $query="SELECT * FROM `users` WHERE `i_n_1` = '$i_n_1'";
    13.                     $result = mysqli_query($link, $query) or die("ERROR: ".mysql_error());
    14.                     $row1 = mysql_fetch_array($result);
    15.                     if ($row1['pokaz']!='Yes'){
    16.                         $row1['phone']=$row1['email']='Скрыто';
    17.                     }
    18.                     echo json_encode($row1);
    19.                     exit;
    20.             }}
    21. ?>
    В возвращаемом массиве все столбцы undefined, кроме $row1['phone'] и $row1['email']. Они ровны 'Скрыто'.

    Почему, как получить данные?

    ajax запрос обрабатывается:
    Код (Javascript):
    1. <script>
    2.     $(document).ready(function(){
    3.     var str = document.location.href,
    4.     re = 'anketa[a-f0-9]{32}',
    5.     i_n_1 = str.match(re),
    6.     target = document.getElementById('target');
    7.     if (i_n_1.length){
    8.         if (confirm("Вы желаете вывести анкету кента c id="+i_n_1+"?")){
    9.         $.ajax({
    10.         dataType : "json",
    11.         url: 'profile/poid.php',
    12.         method: 'POST',
    13.         data: {vopros: i_n_1},
    14.         success:function(data){
    15.         target.insertAdjacentHTML('afterBegin', "...");
    16.    },  
    17.         dataType : "json"
    18. });
    19.             alert('Вы открыли анкету кента! Смотрите!');
    20. }}});
    21. </script>
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Здесь mysqli_query
    здесь mysql_fetch_array тебя это не смущает?
    ничего не находит потому и пусто
    а если б и находило то по нему нужно пройтись
    while ($row1 = mysql_fetch_array($result))
     
    #2 nospiou, 19 сен 2018
    Последнее редактирование: 19 сен 2018
  3. Даниль1999

    Даниль1999 Новичок

    С нами с:
    3 окт 2017
    Сообщения:
    66
    Симпатии:
    0
    14 строчка должна быть такой:
    PHP:
    1. $row1 = mysqli_fetch_assoc($result);
    В курсе, но всё равно не работает. Что то не то...
    --- Добавлено ---
    А вот эти две строчки:

    PHP:
    1. if ($row1['pokaz']!='Yes'){
    2.                         $row1['phone']=$row1['email']='Скрыто';
    3.                     }
    Работают.
     
  4. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  5. Даниль1999

    Даниль1999 Новичок

    С нами с:
    3 окт 2017
    Сообщения:
    66
    Симпатии:
    0
    Разве для аякс запроса нужно организовывать цикл, нельзя просто?
    PHP:
    1. echo json_encode($row1);
    Я раньше всегда так делал, а сейчас просто не срабатывает.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.790
    Симпатии:
    649
    Зависит от кол-ва возвращаемых строк, от тек. представления выборки из БД.

    Кстати, у вас может быть ноль строк в выборке. Нужно проверять не только результат выполнения запроса, но и $row1, например:
    PHP:
    1. echo $row1 = mysqli_fetch_аssoc($result)?json_encode($row1,true):'[]';
    Вместо возврата '[]' часто просто генерируют 404-ую.