Hy ребята,
Мне нужна небольшая помощь с этим скриптом:
Я хочу повторить выбранный в PHP и встроенный селектор MySQL.
Это мой актуальный код
<?php
$mysqli = new mysqli('localhost','*****','thisisapassword','****');
if ($mysqli->connect_error) {
die('Errore : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}// CREATE QUERY STRING
$sql = "SELECT sede_ID, provincia, indirizzo FROM sedi ORDER BY sede_ID, provincia";
// RUN QUERY
$result = mysqli_query($mysqli, $sql);
/**
* TEST FOR QUERY SUCCESS HERE, POSSIBLY TRIGGER_ERROR()
*/
// START THE SELECT CONTROL
$out = '<select name="sede" class="form-control selectpicker" data-live-search="true" id="sede">' . PHP_EOL;
// THE CURRENT STATE IS KEPT HERE
$old = '?';
// THE INITIAL OPTGROUP STATUS IS KEPT HERE
$grp = FALSE;
// USE AN ITERATOR TO RETRIEVE THE ROWS OF THE RESULTS SET
while($row = mysqli_fetch_object($result))
{
// IF THIS IS A ROW WITH A NEW STATE?
if ($row->provincia != $old)
{
// IF THERE IS AN EXISTING OPT-GROUP
if ($grp)
{
// TIE OFF THE OLD OPT-GROUP
$out .= '</optgroup>' . PHP_EOL;
}
// ADD THE OPT-GROUP FOR THE NEW STATE
$out .= '<optgroup label="' . $row->provincia . '">' . PHP_EOL;
$out .= '<option value="' . $row->sede_ID . '">' . $row->indirizzo . '</option>' . PHP_EOL;
// CHANGE STATES
$old = $row->provincia;
$grp = TRUE;
}
// IF THIS IS ANOTHER CITY IN THE SAME STATE
else
{
// JUST ADD THE CITY OPTION
$out .= '<option value="' . $row->sede_ID . '">' . $row->indirizzo . '</option>' . PHP_EOL;
}
}
// AT THE END OF THE RESULTS SET, TIE OFF THE OPT-GROUP AND THE SELECT CONTROL
$out .= '</optgroup>' . PHP_EOL;
$out .= '</select>' . PHP_EOL;
?>
<?php echo $out; ?>
Проблема в том, когда я пытаюсь добавить код, чтобы выбрать опцию, определенную в БД.
Переменная для опции опции базы данных, которую нужно выбрать, — это $ sede, я попытался создать функцию, которая будет отображать эхо, если $ sede равно (==) строке-> sede_ID, но это не работает.
Может кто-нибудь, пожалуйста, помогите мне с этой проблемой?
Спасибо
Простое решение, включите дополнительную переменную в свой тег. Если значения не совпадают, вы оставляете это как пустую строку, в противном случае включите атрибут «selected»
(В вашем цикле)
// Show an option for the city
$out .= "<option value='{$row->sede_ID}'>{$row->indirizzo}</option>" . PHP_EOL;
становится
// Decide whether to select the current city as the selected value
if ( $sede == $row->sede_ID)
{
// Select this city
$selectedText = "selected='selected'";
}
else
{
// Don't select this city
$selectedText = "";
}
// Show an option for the city
$out .= "<option value='{$row->sede_ID}' $selectedText>{$row->indirizzo}</option>" . PHP_EOL;
Обратите внимание, что для ясности я удалил ваши текстовые объединения и просто включил переменные в строку: это обычно считается допустимым в PHP: фигурные скобки {} предотвращают странные вещи, происходящие с переменными поля $ object-> field
Если $ row-> sede_id == $ sede, он выводит
<option value='123' selected='selected'>yourtext</option>
В противном случае это выводит
<option value='123'>yourtext</option>
Других решений пока нет …