我有一个选项菜单,我希望在从表格中读取录制的选项时显示。表中的项目有连字符(例如沃尔沃 - 3638,丰田 - 92131)。问题是我使用strcmp来回显选择存储的值。虽然它将值存储在表中,但是当我创建选项菜单以从先前存储的值更改选项菜单选项时,我无法对值进行回显。我试过==无济于事。我猜这是连字符。有没有一个解决方案,我可以保持连字符和回声选择?这是我的选项菜单:
<input type="text" name="Activity" class="form-control" id="Activity" value="<?php echo htmlentities($row_Recordset1['Activity'], ENT_COMPAT, 'utf-8'); ?>" required <?php
if($row_RecordsetTrans['SUM(`transaction`.quantity)'] >0){
echo 'readonly';
}
?>>
</div>
<div class="form-group">
<label for="Account">Account*</label>
<select class="form-control" name="Account" id="Account" required <?php
if($row_RecordsetTrans['SUM(`transaction`.quantity)'] >0){
echo 'readonly';
}else{
echo 'text';
}
?>>
<option value="" <?php if (!(strcmp("", $row_Recordset1['Account']))) {echo "selected=\"selected\"";} ?>>select account</option>
<?php
do {
?>
<option value="<?php echo $row_Accounts['acctname']?>"<?php if (!(strcmp($row_Accounts['acctname'], $row_Recordset1['Account']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Accounts['acctname']?></option>
<?php
} while ($row_Accounts = mysql_fetch_assoc($Accounts));
$rows = mysql_num_rows($Accounts);
if($rows > 0) {
mysql_data_seek($Accounts, 0);
$row_Accounts = mysql_fetch_assoc($Accounts);
}
?>
</select>
答案 0 :(得分:0)
原来我的代码是正确的。问题出在我导入的数据中。我正在使用:
$ sqlstatement =&#34; LOAD DATA LOCAL INFILE&#39; $ temp&#39; INTO TABLE帐户字段终止于&#39;,&#39;由&#39; \ r&#39;终止的线路IGNORE 1 LINES
事实证明,加载的数据在acctname字段中获得换行符。因此strcmp无法比较数据。
修复是在Terminated by上添加\ n以删除换行符:
$sqlstatement="LOAD DATA LOCAL INFILE '$temp' INTO TABLE accounts FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' IGNORE 1 LINES