Соответствующий идентификатор не отображается как "выбранный" результат в выпадающем списке - PullRequest
1 голос
/ 10 ноября 2019

У меня есть страница php, которая покажет форму. В форме необходимо выбрать драйвер. Драйверы выбираются из базы данных MySQL, эта часть работает просто отлично. Тем не менее, я хотел бы видеть, что пользователь, который вошел в систему, автоматически выбран в качестве драйвера по умолчанию для этой формы.

Чего мне не хватает? Любая помощь очень ценится!

mysqli_set_charset($connection, 'utf8');

$query  = "SELECT name, substring_index(substring_index(mrb_users.user_qualified,'|',-2),'|',1) as driver, id  ";
$query .= "from mrb_users having driver like 'B%' ORDER BY name ";
$sql = mysqli_query($connection, $query);

$row = mysqli_num_rows($sql);
while ($row = mysqli_fetch_array($sql)){
echo "<option value='". $row['id'] ."' if('".$row['id']."'==='".$_SESSION['id']."') 'selected'>" .$row['name'] . ' - ' .$row['chauffeur'] ."</option>" ;
}

$conn->close();

1 Ответ

0 голосов
/ 11 ноября 2019

Похоже, что оператор PHP if включен в двойные кавычки и поэтому печатается дословно. Если это так, вы сможете увидеть его, используя HTML-инспектор вашего браузера.

Для ясности я рекомендую (1) выделить if в отдельную строку и (2) вместо sprintf()объединения большого количества строк:

$sel = ($row['id'] === $_SESSION['id'])
  ? 'selected'
  : '';
sprintf('<option value="%s" %s>%s - %s</option>',
        $row['id'], $sel, $row['name'], $row['chauffeur']);

...