JavaScript — множество элементов списка в другой

Это первый раз, когда я использую эту среду, чтобы попросить о помощи. Я хотел знать, как в моем коде включить два списка. Тот, который делает запрос к базе данных и, с помощью кнопки, отправляет ее другому, и делает это с более чем одной опцией, а затем, как в коде php, помещает данные из второго списка в базу данных таблицы. Спасибо.

<?php
include("server.php");
$conexion = mysql_connect($server,$user, $pass) or die ("<br> No se puede conectar con la base de datos");
$conectarbase = mysql_select_db ($bd);

$consulta = mysql_query("SELECT * FROM modalidad")

?>
<html lang = "es">
<head>
<meta charset = "iso-8859-1"/>
<meta name = "description" content = "Ejemplo de HTML5"/>
<meta name = "keywords" content = "HTML5, CSS3, Javascript"/>
<title>PRECEPTORÍA</title>
<link rel="shortcut icon" href="./style/favicon.png" />
<link rel = "stylesheet" href = "./style/style.css">
</head>
<body class = "body">
<section class = "section">
<div class = "div">
<form>
<fieldset id = "fieldsetalum">
<legend id = "legendalum">Registro de nuevos alumnos</legend>
<select name="combo1" multiple size="8">
<?php
while ($fila = mysql_fetch_row($consulta))
{
echo "<option value='".$fila['0']."'>".$fila['1']."</option>";
}
?>
</select>
<select name="combo2" multiple size=></select>
</fieldset>
</form>
</div>
</section>
</body>
</html>

0

Решение

Ваша форма нуждается в действии, чтобы представить себе:

     <form name="form" id="form" action="<?php echo echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>" method="post">

Вы можете добавить onChange (); событие для вашего select1 падать

     <select name="combo1" multiple size="8" onChange="submit_this();">

и иметь скрипт JavaScript в вашем <head>

     <script language="javascript"> function submit_this(){ this.form.submit();}</script>

Тогда вам придется использовать php для сбора значений с представленной страницы

      $combo1 =  mysqli_real_escape_string( $_POST['combo1'] );

и затем вы можете вернуть страницу со вторым раскрывающимся списком, построенным примерно так же, как вы сделали первый, используя данные, полученные из первого, для настройки второго. Вы могли бы обернуть первый выпадающий в isset():

        if( !isset( $combo1 ) ){
// make your first select boxes
}

и второй в

        if( isset( $combo1 ) ){
// make your second select boxes if combo1 returned a value
}

так что они будут появляться только при необходимости.

Как говорит @NanaPartykar, mysqli — единственный путь.

Он будет зависеть от JavaScript, поэтому, если вы предпочитаете, вы можете использовать кнопку отправки вместо функции JavaScript:

     <input type="submit" name="submit" value="Pick Sizes" />

Это выглядит удобной ссылкой для использования полей выбора: PHP-код для получения выделенного текста поля со списком

Я надеюсь, что это даст вам представление о том, как это можно сделать — переменные SESSION остаются правильно определенными в цикле для второго раскрывающегося списка, но они, вероятно, будут поступать непосредственно из вашей базы данных в этот момент, а не из массива сеансов, используемого для демонстрационные цели.

Все значения установлены как числа;

intval(); преобразует все, что представлено в целое число, чтобы очистить его.

Затем вы можете получить обратно соответствующее значение того, что было отправлено из переменной сеанса, которую вы изначально установили в своей базе данных.

Таким образом, вы будете получать только одно числовое значение из выпадающего меню, которое вы можете использовать для поиска нужного ответа.

  <?php session_start(); ?>
<!DOCTYPE html>
<html lang = "es">
<head>
<title>PRECEPTORÍA</title>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
<?php
$main_opt = array();
$_SESSION['opt_vals'] = array();
$main_opt[0] = "Select Item";
$main_opt[1] = "Ice Cream";
$main_opt[2] = "Trousers";
$main_opt[3] = "Tee Shirts";
$_SESSION['opt_vals'][1][0] = "Select Flavour";
$_SESSION['opt_vals'][1][1] = "Vanilla";
$_SESSION['opt_vals'][1][2] = "Chocolate";
$_SESSION['opt_vals'][1][3] = "Strawberry";
$_SESSION['opt_vals'][1][4] = "Tuttifrutti";
$_SESSION['opt_vals'][2][0] = "Select Colour";
$_SESSION['opt_vals'][2][1] = "Black";
$_SESSION['opt_vals'][2][2] = "Red";
$_SESSION['opt_vals'][2][3] = "Green";
$_SESSION['opt_vals'][2][4] = "Blue";
$_SESSION['opt_vals'][3][0] = "Select Size";
$_SESSION['opt_vals'][3][1] = "Small";
$_SESSION['opt_vals'][3][2] = "Medium";
$_SESSION['opt_vals'][3][3] = "Large";
$_SESSION['opt_vals'][3][4] = "X Large";
$i = 0;
if(!isset($_POST['combo1']) && !isset($_POST['combo2'])){
echo '<select name="combo1" onChange="submit();">' . "\n";
//while ($fila = mysqli_fetch_row($consulta)){
while($i < count($main_opt)){
echo "<option value='".$i."'>".$main_opt[$i]."</option>\n";
$o = 0;
// load your sub options array here
if(!$_SESSION['opt_vals'][$i]) $_SESSION['opt_vals'][$i] = array();
while($i < count($_SESSION['opt_vals'][$i])){
$_SESSION['opt_vals'][$i] = $o;
if(!$_SESSION['opt_vals'][$i]) $_SESSION['opt_vals'][$i] = array();
$_SESSION['opt_vals'][$i][$o] = $_SESSION['opt_vals'][$i][$o];
$o++;
}
$i++;
}
echo '</select>'  . "\n";
}else{
if(intval($_POST['combo1']) >= 1) $_SESSION['combo1_val'] = $combo1_val =intval($_POST['combo1']);
if(intval($_POST['combo1']) >=1){
$i = 0;
echo '<select name="combo2" onChange="submit();">' . "\n";
while($i < count($_SESSION['opt_vals'][$combo1_val])){
echo "<option value='".$i."'>".$_SESSION['opt_vals'][$combo1_val][$i]."</option>\n";
$i++;
}
}
echo '</select>'  . "\n";
}
if(intval($_POST['combo2']) >= 1) $_SESSION['combo2_val'] = $combo2_val =intval($_POST['combo2']);
if($_SESSION['combo1_val'] >=1 && $_SESSION['combo2_val'] >=1){
// use the result to do  whatever you want
echo 'Thank you! You have selected ' . $_SESSION['opt_vals'][$_SESSION['combo1_val']][$_SESSION['combo2_val']] . " " . $main_opt[$_SESSION['combo1_val']] . '.';
}
// Do any mysqli adjustments to your database here
// reset to go again
if($_SESSION['combo2_val'] >= 1){
$_SESSION['combo1_val'] = 0;
$_SESSION['combo2_val'] = 0;
}
?>
</form>
<a href="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>">Click to start a new selection</a>
</body>
</html>

Вы могли бы удалить onChange="submit();" и замените его обычной кнопкой отправки в форме, если хотите.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]