Задать вопрос
@LuckySheeer

Как передать переменную из браузера в PHP?

На странице сайта имеется поле select, который позволяет выбирать объекты с базы. Мне необходимо во втором поле select вывести объекты у которых подразделение будет равно id первого select

Запрос в базу
function initV(){
    $conn = connect();
    $isId = $_POST['isId']; 
    $sql = "SELECT vId, vFIO FROM vBase WHERE isId= '$isId'";
    $result = mysqli_query($conn, $sql);
    if (mysqli_num_rows($result) > 0){
        $out = array();
        while ($row = mysqli_fetch_assoc($result)) {    
            $out[$row["vodId"]] = $row;
        }
        echo json_encode($out);
    }   else{
        echo "0";
    }
    mysqli_close($conn);    
}


Передача параметра

var isId = $('.poleCi select option:selected').attr('data-isId');

    $.post(
        "../../php/function.php",
        {
            "isId" : isId
        },
        initV
    )


Если в Sql запросе вместо переменной вставлять сразу число, то все работает корректно, но в данном варианте он забирает значение равное "0", помогите или объясните, пожалуйста, с чем это связано и как это решить?

upd: Прошу прощения за потраченное время. Спасибо всем кто пытался помочь. Ошибка таилась в том, что переменная передавалась 2 раза, первый раз правильная, вторая перебивала первый неправильным и из-за этого в БД уходило 0.
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
@nozzy
Symfony, Laravel, SQL, Python, Telegram
Это такой http-адрес?
"../../php/function.php"
Ответ написан
@psiklop
Если в Sql запросе вместо переменной вставлять сразу число, то все работает корректно,

значит isId потерялся, надо искать где именно, вероятно $.post его уже не шлет
надо тестить код, начиная отсюда:
var isId = $('.poleCi select option:selected').attr('data-isId');
console.log(isId);  //!!!


Но тут скорее всего неверно, после события change первого select спрашивать сервер это маяться, надо сразу вывести в страницу эти обьекты и ограничиться только js
Ответ написан
Комментировать
coderisimo
@coderisimo Куратор тега JavaScript
Передавать параметр сразу в запрос это "АДЪ" (опасно - все погибнут! См. SQL injection)
Алгоритм решения описанной проблемы стандартный. Надо проверить передачу переменной на всех этапах. Понять, где переменная пропадает и исправить это.
Итак :

1) Проверяем на клиенте
var isId = $('.poleCi select option:selected').attr('data-isId');
// что у нас здесь ?
console.log(isId)


2) Проверяем на сервере
$conn = connect();
// что у нас здесь ?
var_dump($_POST);
$isId = $_POST['isId'];


Так же смотрим в консоль браузера - как выглядит то, что отправляется на сервер ?
Например, вот так
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы