2010-11-01 75 views

回答

2

您應該有一個可用選項表(在這種情況下,類似於cities表),然後是用戶到城市的查找表。然後,您可以遍歷城市,還可以獲取用戶已檢查的城市。

的樣品,不知道你的數據庫結構,將如下所示:

$uid = $_SESSION['user']['id']; // your logged in user's ID 

$cities = array(); 

// get an array of cities 
$sql = "SELECT id, name FROM cities"; 
$res = mysql_query($sql); 
while ($row = mysql_fetch_object($res)) { 
    $cities[$row->id] = $row->name; 
} 

// get an array of cities user has checked 
$sql = "SELECT DISTINCT city_id FROM users_cities WHERE user_id = '$uid'"; 
$res = mysql_query($sql); 
while ($row = mysql_fetch_object($res)) { 
    $checked[] = $row->city_id; 
} 

// this would be templated in a real world situation 
foreach ($cities as $id => $name) { 
    $checked = ""; 
    // check box if user has selected this city 
    if (in_array($checked, $id)) { 
     $checked = 'checked="checked" '; 
    } 
    echo '<input type="checkbox" name="city[]" value="'.$id.'" '.$checked.'/>'; 
} 
1

如果我理解你的問題正確,明顯的和最簡單的方法是,你需要獲取從數據庫記錄,如果該值時產生HTML [類似的循環OT東西當檢查存在於數組中的結果。您沒有給我們任何關於您的數據庫結構或代碼的例子,所以您必須自己決定如何去做。

0

通常,您將值插入到數據庫中。插入後,您應該再次訪問相同的值。目前還不清楚你如何設置你的腳本,所以我們假設你重定向到另一個腳本。

您需要做的是再次從數據庫中檢索複選框的值。然後你知道哪些被選中。這可以用來確定您的複選框是否需要檢查。

注:

  • 我這裏假設你的查詢的結果與 選擇的ID的數組作爲值。
  • 我在這裏假設您的字段存儲在 的某個查詢結果中,基本上是一個數組 ,其中字段ID爲鍵,字段名稱 爲值。

例如,像這樣:

<?php 
// Retrieve values from database. 
$resultArray = ... some code ... ; 

?> 

<?php foreach ($field_types as $field_name => $field_value): ?> 
<input type="checkbox" name="<?php echo $field_name; ?>" value="<?php echo $field_value ?>" <?php if (in_array($field_name, $resultArray)) { echo 'checked'; }/> 
<?php endforeach; ?> 

這導致其被選中複選框,如果field_name是結果數組內(用已選中的結果)。否則,他們只會呈現爲未經檢查的複選框。希望這已經夠清楚了。

相關問題