Использование комбинированного списка на странице редактирования с PHP

У меня есть две таблицы, tblPlayer(PlayerID, PlayerName,PlayerTeam(int)) и tblTeams (TeamID, TeamName)

На странице PHP у меня есть функция, чтобы найти выбранного игрока, функция выглядит следующим образом,

function find_selected_player() {
    global $sel_player;
    if (isset($_GET['id'])) {
        $sel_player = get_player_by_id($_GET['id']);
    } else {
        $sel_player = NULL;
    }
}

моя другая функция заключается в следующем,

function get_player_by_id($player_id) {
    global $conn;
    $query = "SELECT * ";
    $query .= "FROM tblPlayer ";
    $query .= "WHERE PlayerID =" . $player_id ." ";
    $query .= "LIMIT 1";
    $result_set = mysql_query($query, $conn);
    confirm_query($result_set);

    if ($player = mysql_fetch_array($result_set)) {
        return $player;
    } else {
        return NULL;
    }
}

Таким образом, в форме для редактирования я могу получить все значения, как

<input type="text" name="PlayerName" value="<?php echo $sel_player['PlayerName']; ?>" />

Но...:) когда я пытаюсь заполнить поле со списком в обратном порядке, я застреваю там. При добавлении чего-либо это работает как шарм, но $sel_player['PlayerTeam'] дает мне только ID:(

<?php include "conn.php" ?>
<?php include "function.php" ?>
<?php find_selected_player() ?>
<h2>Edit: <?php echo $sel_player['PlayerName'] ." ". $sel_player['PlayerLname']; ?></h2>
<form action="player.php" method="post">
<table>
<tr>
   <td>Name: </td>
   <td><input type="text" name="PlayerName" value="<?php echo $sel_player['PlayerName']; ?>" /></td>
   </tr>
   <tr>
   <td>Lastname:</td>
   <td><input type="text" name="PlayerLname" value="<?php echo $sel_player['PlayerLname']; ?>" /></td>
   </tr>
   <tr>
   <td>Team:</td>
   <td>
        <?php
$sql = "SELECT TeamName, TeamID FROM tblTeam";
$result = mysql_query($sql);

echo '<select name="TeamName"><option>';
echo "Choose a team.</option>";
echo '<option selected>' . $sel_player['PlayerTeam']  . '</option>';
while ($row = mysql_fetch_array($result)) {
    $team_name= $row["TeamName"];
    $team_id = $row["TeamID"];
    echo "<option value=\"$team_id\">$team_name</option>";
}
echo "</select>";
        ?>
    </td>
   </tr>
   <tr>
       <td><input type="submit" name="submit" value="Save" /></td>
       <td align="right">&nbsp;</td>
   </tr>
   </table>
</form>
<?php ob_end_flush() ?>
<?php include ("footer.php") ?>

3 ответа

Решение
<?php

                        $sql = "SELECT TeamName, TeamID FROM tblTeam";
                        $result = mysql_query($sql);
                        $player_id = $_GET['id'];
                        $current_team = mysql_query("SELECT
                                        tblteam.TeamID,
                                        tblteam.TeamName,
                                        tblplayer.PlayerID,
                                        tblplayer.PlayerTeam,
                                        tblplayer.PlayerName
                                        FROM
                                        tblplayer
                                        INNER JOIN tblteam ON tblplayer.PlayerTeam = tblteam.TeamID
                                        WHERE PlayerID = $player_id LIMIT 1 ");
                        $my_row = mysql_fetch_array($current_team);
                        ?>
                        <select name="TeamName">

                            <option selected value="<?php echo $my_row['TeamID']; ?>"> <?php echo $my_row['TeamName']; ?> </option>
                            <?php
                            while ($row = mysql_fetch_array($result)) {
                                $team_name= $row["TeamName"];
                                $team_id = $row["TeamID"];
                                echo "<option value=\"$team_id\">$team_name</option>";
                            }
                            echo "</select>";

                            ?>

Вы должны обновить свой код, чтобы использовать MySQLi_* или PDO. Я понял, что вы начали здесь. Попробуйте и посмотрите, как это работает для вас.

function getPlayerByID($pid = '')
{
    global $conn;

    if($pid == '')
        return false;

    $sql = mysql_query("SELECT * FROM tblPlayer WHERE PlayerID = '$pid'", $conn);
    $row = mysql_fetch_array($sql);

    if(mysql_num_rows($sql) == 1)
        return $row;
    else
        return false;
}

$id = isset($_GET['id']) ? $_GET['id'] : '';

$sel_player = getPlayerByID($id);

$sql = mysql_query("SELECT TeamName, TeamID FROM tblTeam");

$select = '<select name=""><option>Choose a Team</option>';

while($row = mysql_fetch_array($sql))
{
    $team_id = $row['TeamID'];
    $team_name = $row['TeamName'];

    $selected = $team_id == $sel_player['PlayerTeam'] ? 'selected' : '';

    $select .= '<option ' . $selected . ' value="' . $team_id . '">' . $team_name . '</option>';
}

$select .= '</select>';

echo $select;
$team_adi should be $team_name

Изменить:

echo "<option value=\"$team_id\">$team_adi</option>";

чтобы:

echo "<option value=\"$team_id\">$team_name</option>";
Другие вопросы по тегам