При выборе первого выпадающго списка подгружается база, выдаёт сам список. Выбираю из него элемент - это тип кабеля с параметрами. Параметры должны автоматически переключить нужные поля. Строки 96-98 этот вопрос решают - но все поля не реагируют потом на выбор. Я так понимаю, значения просто регулярно забиваются назад, не дав получить новые..
Потому я сейчас закомментировал эти строки - теперь форма не активирует параметры кабеля. Как решить эту проблему без JavaScript? Я всё ещё далёк от него. И да, в файле немного лишнего - это фрагмент из уже отлаженной части проекта.
<?php
require_once"init.php";
?>
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="test.css" />
</head>
<BODY>
<?php
if ($_POST['type']<>"") {
$type = $_POST['type'];
}
if ($_POST['modules']<>"") {
$modules = $_POST['modules'];
$arrayModules[$id]= $modules;
}
if ($_POST['fibers']<>"") {
$fibers = $_POST['fibers'];
$arrayFibers[$id] = $fibers;
}
if ($_POST['fibcolor']<>"") {
$fibcolor = $_POST['fibcolor'];
$arrayFibcolor[$id] = $fibcolor;
}
if ($_POST['cable']<>"") {
$cable = $_POST['cable'];
}
if (($type=="") or ($modules=="") or ($fibers=="") or ($fibcolor=="")) {
$cablescreate="disabled"; // НЕ РАБОТАЕТ ДИЗАБЛЯ КНОПКИ ПО УСЛОВИЮ. убрал
} else {
$cablescreate="enabled";
}
if ($_POST['create']<>"") { // обработчик сабмита формы СОЗДАТЬ
$link = mysqli_connect($host, $user, $pass, $base);
$sql= "INSERT INTO ".$base.".cables"." (type, modules, fibers, fibcolor)
VALUES ('{$type}','{$modules}','{$fibers}','{$fibcolor}');";
mysqli_query($link, $sql);
mysqli_close($link);
$resultat= "<br>Тип кабеля ".$type." ДОБАВЛЕН в базу!";
}
if ($_POST['delete']<>"") { // Обработчик сабмита формы УДАЛИТЬ
$link = mysqli_connect($host, $user, $pass, $base);
$sql = "DELETE FROM cables WHERE id=".$cable.";";
mysqli_query($link, $sql);
mysqli_close($link);
$cable=0;
$resultat= "<br>Тип кабеля ".$type." УДАЛЁН из базы!<br>Текст запроса: ".$sql;
}
if ($_POST['edit']<>"") { // Обработчик сабмита ИЗМЕНИТЬ
$link = mysqli_connect($host, $user, $pass, $base);
$sql = "UPDATE IGNORE cables SET modules=".$modules.", fibers=".$fibers.
", fibcolor=".$fibcolor." WHERE id=".$cable.";";
mysqli_query($link, $sql);
mysqli_close($link);
$resultat= "<br>Тип кабеля ".$type." ИЗМЕНЁН!<br>Текст запроса :".$sql;
}
?>
<div class="diagnostic"">
<?php
echo "РЕЗУЛЬТАТ: ".$resultat;
?>
</div>
<div class="editor">
Форма для ИЗМЕНЕНИЯ ТИПА КАБЕЛЯ<br><br>
<form id="cablesedit" name="cablesedit" action="" method="POST">
<select required id="cable" name="cable" size="1" onchange="submit()" >
<option <?php if ( $cable == 0 ) echo ' selected="selected"'; ?>>Выберите тип кабеля для ИЗМЕНЕНИЯ</option>
<!-- ЗДЕСЬ ВЫБОР КАБЕЛЯ-->
<?php
$link = mysqli_connect($host, $user, $pass, $base);
if ($result = mysqli_query($link, 'SELECT * FROM cables ORDER BY id')) {
while( $row = mysqli_fetch_assoc($result) ){
// цикл вычитки таблицы, пока есть строки
// $row - строка из базы, массив
$id=$row['id']; // Получаем ID и пляшем от него
$arrayType[$id] = $row['type']; // в массивы под номером id вносим
$arrayModules[$id] = $row['modules']; // все характеристики кабелей
$arrayFibers[$id] = $row['fibers'];
$arrayFibcolor[$id] = $row['fibcolor'];
};
};
mysqli_close($link);
// Сбор списка кабелей завершён, выводим список
foreach($arrayType as $id => $type) { // Пока есть значения в массиве..
if ($id == $cable){ // Если поле выбрано..
echo " <option value=".$id.' selected="selected" >'.$type."</option>"; // то выбираем
// $modules=$arrayModules[$id]; // И назначаем старые данные
// $fibers=$arrayFibers[$id]; // ..загруженные в массив из базы
// $fibcolor=$arrayFibcolor[$id]; // ..для вывода стартовой позиции для изменения.
} else {
echo " <option value=".$id.">".$type."</option>"; // Или нет, если нет
}
}
?>
</select><br>
<select id="modules" name="modules" size="1" onchange="submit()">
<option value="1" <?php if (( $modules == 0 ) or ($modules == 1)) echo ' selected="selected"'; ?>>1 модуль</option>
<option value="2" <?php if ( $modules == 2 ) echo ' selected="selected"'; ?>>2 модуля</option>
<option value="4" <?php if ( $modules == 4 ) echo ' selected="selected"'; ?>>4 модуля</option>
<option value="6" <?php if ( $modules == 6 ) echo ' selected="selected"'; ?>>6 модулей</option>
<option value="8" <?php if ( $modules == 8 ) echo ' selected="selected"'; ?>>8 модулей</option>
</select>
<select id="fibers" name="fibers" size="1" onchange="submit()">
<option value="1" <?php if (( $fibers == 0 ) or ($fibers == 1)) echo ' selected="selected"'; ?>>1 Волокно</option>
<option value="2" <?php if ( $fibers == 2 ) echo ' selected="selected"'; ?>>2 Волокна</option>
<option value="4" <?php if ( $fibers == 4 ) echo ' selected="selected"'; ?>>4 Волокна</option>
<option value="8" <?php if ( $fibers == 8 ) echo ' selected="selected"'; ?>>8 Волокон</option>
<option value="12" <?php if ( $fibers == 12 ) echo ' selected="selected"'; ?>>12 Волокон</option>
<option value="16" <?php if ( $fibers == 16 ) echo ' selected="selected"'; ?>>16 Волокон</option>
<option value="24" <?php if ( $fibers == 24 ) echo ' selected="selected"'; ?>>24 Волокна</option>
</select><br>
<select id="fibcolor" name="fibcolor" size="1" onchange="submit()">
<option <?php if ( $fibcolor == 0 ) echo ' selected="selected"'; ?>>Выберите раскладку волокон</option>
<!-- Здесь будет добавлен выбор раскладки вариантами для выбранного количества волокон-->
<?php
$link = mysqli_connect($host, $user, $pass, $base);
$id=1;
if ($result = mysqli_query($link, 'SELECT * FROM fibcolor ORDER BY id')) {
while( $row = mysqli_fetch_assoc($result) ){
// цикл вычитки таблицы, пока есть строки
// $row - строка из базы, массив
if ($row['colcolors']==$fibers){ // Если количество волокон совпадает
$array[$id] = $row['name']; // в массив под номером id вносим псевдоним набора
}
$id=$id+1; // наращиваем счётчик строк
};
};
mysqli_close($link);
// Выборка по количеству волокон завершена, выводим список
foreach($array as $id => $name) { // Пока есть значения в массиве делаем строки списка
if ($fibcolor==$id) { // Если строка выбрана
echo " <option value=".$id.' selected="selected" >'.$name."</option>"; // то выбираем
} else {
echo " <option value=".$id.">".$name."</option>"; // Или нет, если нет
}
}
?>
</select>
<input id="edit" name="edit" type="submit" value="Изменить">
</form>
</div>
</BODY>
</html>
$_POST['type']<>""и получается что если$_POST['type'] != '', то Вы определяете переменную$type, ниже Вы проверяете$type=="", но саму переменную$typeВы определяете только когда значение в$_POST['type'] != '', не находите здесь никакого противоречия? Это же касается и всех остальных проверок. – Simon Feb 10 '24 at 22:07