2015-10-28 58 views
0

我将表中某一行的属性列表回显到用户选择的选项列表中,以便稍后用于插入到另一列表中表。我试图做的是,为了存储该行的'id' - 不单独使用外键,而是保存的'id'是列表中最后一行的'id'。下面是一个片段,以我的代码:在mysql选项选择列表中存储行的标识

 <?php 
     $conn = mysqli_connect('localhost', 'root', '', 'database'); 

      $result = mysqli_query($conn, "SELECT * FROM myTable WHERE region = '{$thisRegion}' "); 
      //$result .= " "); 
      while ($row = mysqli_fetch_assoc($result)) 
      { 
      $selected = (isset($_POST['list']) && $_POST['list'] == $row['id']) ? 'selected' : ''; 
       echo "<option value='$row[streetAddress] $row[apt] $row[city] $row[zip] $row[_state] $row[country]' $selected >$row[city] $row[zip] $row[_state] $row[country] $row[streetAddress] $row[apt]</option>"; 
       $thisId= $row['id']; 
       $_SESSION["thisId"] = $thisId; 
      } 
      ?> 
     </select> 
+1

你正在覆盖'$ _SESSION ['thisId']'循环的每一次迭代。这样做,你将永远结束最后一个。 –

+1

如果你想要选择的ID,只需使用'$ _SESSION [“thisId”] ='$ _POST ['list']' – Barmar

+0

你必须在数组中包含'{}',而不是'$ thisRegion' 。数组的关键字必须在引号之间:'$ row ['streetAddress']' –

回答

0

您的问题,它是在代码

while ($row = mysqli_fetch_assoc($result)) 
{ 
    ... 
    $thisId= $row['id']; 
    $_SESSION["thisId"] = $thisId; 
} 

该代码意味着,在每次迭代,$ _SESSION [“thisId”]将用编号取代当前行,使得在循环结束时只有最后一行的ID会在那里。

我认为要做到这一点的方式是将id添加到选项中,然后像显示一样打印行。

echo "<option value='{$row['id']}'> {$row['apt']} {$row['city']}... </option>"; 

然后,接收页面可以读取

$selectedRowId = $_GET['optionKey'] 

我希望帮助,你应该阅读更多关于PHP和前进,因为它会让你更容易的编码形式。这里是一个基本的教程http://www.w3schools.com/php/php_forms.asp

+0

嗨,我实际上需要显示供用户选择的行。仅仅为用户显示ID本身会挫败选择列表选择的目的,因为他们不知道哪个ID属于哪一行,而且我不希望他们真正知道该行的ID是什么。 – Ash

+0

你也应该看看选项标签我的朋友。语法是。正如我将它放在我的代码上,该表单将显示行信息并在提交时发送行ID。 – Jimmy

+0

然后,它会发送id,通过这样做,我的表上的其他实体将只显示在未发送。所以,我需要将我的ID单独存储 - 我正在尝试这样做 - 并且我还需要将其他实体作为一个变量单独发送,如我的代码中所示。谢谢我的朋友 – Ash

相关问题