Редактирование данных mysql с помощью раскрывающихся списков

У меня есть страница ввода данных, на которой существует несколько раскрывающихся списков. Выбранный элемент в раскрывающемся списке хранится в моей базе данных mysql без проблем.

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

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

<?php
    $position_sql = "SELECT id, position FROM ref_positions ORDER BY position ASC";
    $position_result = mysql_query($position_sql);
        echo "<select name='position'>";
            while ($row = mysql_fetch_array($position_result)) {
        echo "<option value='" . $row['id'] . "'>" . $row['position'] . "</option>";
        }
        echo "</select>";
?>  

Я использую POST и GET, чтобы получить правильный идентификатор записи.

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

Department:<input type="text" name="department" size="20" value="<?php echo "$row[department]"; ?>">

Я предполагаю, что мне нужно построить какой-то оператор if для отображения сохраненного значения?

не уверен, поможет ли это, но вот как я получаю идентификатор записи, которую хочу отредактировать:

        <?php
    $id= ($_GET["id"]);


      $sql = "SELECT * FROM people
WHERE id='$id' LIMIT 1";
      $result = mysql_query($sql);
      $row = mysql_fetch_array($result);
     ?>

Весь код:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Form Edit Data</title>
    </head>

    <body>

    <?php
$BASE_PATH = 'C:\xampp\htdocs\OGS';
include_once($BASE_PATH . "\includes\layouts\header.php");
?>

<div id="main">
    <div id="subnavigation">
        <?php include_once($BASE_PATH . "\mods\main_menu\index.html");?>
    </div>

  <div id="page"
  <br><br>
    <table border=1>
      <tr>
        <td align=center>Update Employee Information</td>
      </tr>
      <tr>
        <td>
          <table>
                  <?php 
    mysql_connect('localhost', 'root', '');
    mysql_select_db('ogs');
?>

        <?php
        $id= ($_GET["id"]);


          $sql = "SELECT * FROM people
    WHERE id='$id' LIMIT 1";
          $result = mysql_query($sql);
          $row = mysql_fetch_array($result);
         ?>

          <form method="post" action="edit_data.php">
          <input type="hidden" name="id" value="<?php echo "$row[id]"; ?>">

            <fieldset>
                <legend><b>Name</b></legend>
                    First Name:<input type="text" name="first_name" size="20" value="<?php echo "$row[first_name]"; ?>">
                    Last Name:<input type="text" name="last_name" size="40" value="<?php echo "$row[last_name]"; ?>">
            </fieldset>
    <br><br>
            <fieldset>
                <legend><b>Contact Information</b></legend>
                    Town:<input type="text" name="town" size="20" value="<?php echo "$row[town]"; ?>">
                    Address:<input type="text" name="address" size="40" value="<?php echo "$row[address]"; ?>">
                    Province:<input type="text" name="province" size="20" value="<?php echo "$row[province]"; ?>">
                    Postal Code:<input type="text" name="postal_code" size="40" value="<?php echo "$row[postal_code]"; ?>">
    <br><br>
                    Home Phone:<input type="text" name="home_phone" size="20" value="<?php echo "$row[home_phone]"; ?>">
                    Cell Phone:<input type="text" name="cell_phone" size="40" value="<?php echo "$row[cell_phone]"; ?>">
            </fieldset>
    <br><br>        
            <fieldset>
                <legend><b>Emergency Contact</b></legend>
                    Emergency Contact Name:<input type="text" name="first_name" size="20" value="<?php echo "$row[first_name]"; ?>">
                    Emergency Contact Number:<input type="text" name="last_name" size="40" value="<?php echo "$row[last_name]"; ?>">
            </fieldset>
    <br><br>        
            <fieldset>
                <legend><b>Work Information</b></legend>
                    Role:<input type="text" name="role" size="20" value="<?php echo "$row[role]"; ?>">
                    Employer:<input type="text" name="company_works_for" size="40" value="<?php echo "$row[company_works_for]"; ?>">
    <br><br>
                    Department:<input type="text" name="department" size="20" value="<?php echo "$row[department]"; ?>">
                    Position:
                        <?php
    $position_sql = "SELECT id, position FROM ref_positions ORDER BY position ASC";
    $position_result = mysql_query($position_sql);
    echo "<select name='position'>";

    // You should use PHP to get the existing value here, I have made it up here as 14
    $existing_id = '$row[id]';

    while ($row = mysql_fetch_array($position_result))
    {
        // Check if the existing id is the same as the current id we are displaying
        // If it is, set the selected attribute
        if($existing_id == $row['id'])
            echo "<option selected='selected' value='" . $row['id'] . "'>" . $row['position'] . "</option>";
        else
            echo "<option value='" . $row['id'] . "'>" . $row['position'] . "</option>";
    }
    echo "</select>";
?>  

    <br><br>
                    Is Supervisor?:
                            <input type="radio" name="is_supervisor" value="<?php echo "$row[is_supervisor]"; ?>"> Yes
                            <input type="radio" name="is_supervisor" value="<?php echo "$row[is_supervisor]"; ?>"> No
    <br><br>        
                    Is Active?:
                            <input type="radio" name="active_employee" value="<?php echo "$row[active_employee]"; ?>"> Yes
                            <input type="radio" name="active_employee" value="<?php echo "$row[active_employee]"; ?>"> No
    <br><br>
                    Start Date:<input type="text" name="start_date" size="40" value="<?php echo "$row[start_date]"; ?>">
            </fieldset>


                <input type="submit"
              name="submit value" value="Update">

          </form>




      </div>
      </div>
</body>
</html>

В послужном списке Николаса Ферлонга он указан как координатор по охране труда и технике безопасности. http://prntscr.com/3o34g2

Но когда я нажимаю «Изменить» и перехожу на свою страницу редактирования, он указан как контроллер. (Это первый вариант в столбце.) http://prntscr.com/3o36qu


person Nic326    schedule 30.05.2014    source источник
comment
базовый HTML: если вы хотите, чтобы <option> был уже выбранным параметром, вам нужно добавить атрибут selected="selected".   -  person Marc B    schedule 30.05.2014
comment
ему нужно будет выбрать сохраненное значение в базе данных mysql, разве мне не понадобится php для этого?   -  person Nic326    schedule 30.05.2014


Ответы (1)


Не совсем понятно, что вы спрашиваете. Но я попробую

<?php
    $position_sql = "SELECT id, position FROM ref_positions ORDER BY position ASC";
    $position_result = mysql_query($position_sql);
    echo "<select name='position'>";

    // You should use PHP to get the existing value here, I have made it up here as 14
    $existing_id = 14;

    while ($row = mysql_fetch_array($position_result))
    {
        // Check if the existing id is the same as the current id we are displaying
        // If it is, set the selected attribute
        if($existing_id == $row['id'])
            echo "<option selected='selected' value='" . $row['id'] . "'>" . $row['position'] . "</option>";
        else
            echo "<option value='" . $row['id'] . "'>" . $row['position'] . "</option>";
    }
    echo "</select>";
?>  
person Jake N    schedule 30.05.2014
comment
Я пытаюсь отредактировать информацию из таблицы 1. Это делается в моем файле edit.php. В одном из раскрывающихся меню в edit.php есть информация, хранящаяся в таблице 2. Я использую идентификатор из таблицы 1, чтобы заполнить все, включая сохраненное значение для раскрывающегося списка. Тем не менее, я хочу иметь возможность редактировать раскрывающийся список с вариантами, доступными из таблицы 2. - person Nic326; 30.05.2014
comment
$existing_id = '$row[id]'; неправильно. Вы должны использовать $existing_id = $row[id]; Кавычки превращают его в строку, поэтому он не будет выполняться как код. Вы имеете в виду, например, что у вас есть страна в первом раскрывающемся списке, а во втором раскрывающемся списке есть все страны, которые находятся внутри страны из 1-го раскрывающегося списка? - person Jake N; 30.05.2014
comment
Нет, я не пытаюсь сделать это условным или что-то в этом роде. У меня есть список позиций, предопределенных в таблице2. Таблица 1 содержит информацию о сотруднике, включая его должность. Поэтому, если сотрудник сменил должность, я хочу иметь возможность выбирать из предопределенного списка должностей. (Который хранится в другой таблице) - person Nic326; 30.05.2014
comment
добавил два изображения в свой пост, чтобы, надеюсь, проиллюстрировать, что я имею в виду. - person Nic326; 30.05.2014