Php 使用单选按钮将MySQL数据回送到html表单中,并带有其他文本字段

Php 使用单选按钮将MySQL数据回送到html表单中,并带有其他文本字段,php,html,mysql,sql,Php,Html,Mysql,Sql,在我的web表单中,用户可以将产品数据提交到MySQL数据库中。供应商字段为我们的用户提供了3个单选按钮的选择,我们最常用的供应商是Sigma Aldrich、VWR和Filter Service,或者第四个带有文本字段的“其他”单选按钮,用户可以在其中指定“其他”供应商。这是使用以下代码完成的: php方面: if (isset($_POST['submit'])) { $q2_productname = $conn->real_escape_string($_POST['q2_prod

在我的web表单中,用户可以将产品数据提交到MySQL数据库中。供应商字段为我们的用户提供了3个单选按钮的选择,我们最常用的供应商是Sigma Aldrich、VWR和Filter Service,或者第四个带有文本字段的“其他”单选按钮,用户可以在其中指定“其他”供应商。这是使用以下代码完成的:

php方面:

if (isset($_POST['submit'])) {
$q2_productname = $conn->real_escape_string($_POST['q2_productname']);
$q3_supplier = $conn->real_escape_string($_POST['q3_supplier']);
if ($q3_supplier =='other'){
  $q3_supplier = $conn->real_escape_string($_POST['q3_supplier_other']);
}
$sid = (int)$_GET['sid'];
$sql = "SELECT * FROM orders WHERE sid = '$sid'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $sid = $row['sid'];
        $q2_productname = $row['q2_productname'];
        $q3_supplier = $row['q3_supplier'];
    }
}
以及html端的表单:

<fieldset>
<div>
<label for="q2"><font color="red">*</font> Full product name:</label><br />
<input id="q2" type="text" style="width:400px" name="q2_productname" required="true" tabindex="2">
</div>
</fieldset>
<fieldset>
<div>
<label for="q3"><font color="red">*</font> Supplier:</label><br />
<input id="q3" type="radio" name="q3_supplier" required="true" tabindex="3" value="Sigma-Aldrich" onchange="disableTxt()" checked="checked" />Sigma-Aldrich &nbsp;
<input id="q3" type="radio" name="q3_supplier" required="true" tabindex="3" value="VWR" onchange="disableTxt()" />VWR &nbsp;
<input id="q3" type="radio" name="q3_supplier" required="true" tabindex="3" value="Filter-Service" onchange="disableTxt()" />Filter-Service &nbsp;
<input id="q3" type="radio" name="q3_supplier" required="true" tabindex="3" value="other" onchange="enableTxt()" />Other:
<input id="other" type="text" name="q3_supplier_other" required="true" tabindex="3" disabled="disabled" />
<script>
function disableTxt() {
    document.getElementById("other").disabled = true;
}
function enableTxt() {
    document.getElementById("other").disabled = false;
}
</script>
</div>
</fieldset>
<input type="hidden" name="sid" value="<?=$sid;?>"><br>
<font color="red">*</font> Product name: <input id="q2" type="text" style="width:400px" name="ud_q2_productname" required="true" value="<?=$q2_productname?>" tabindex="2"><br>
<font color="red">*</font> Supplier: 
<input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Sigma-Aldrich" onchange="disableTxt()" <?php if (isset($q3_supplier) && $q3_supplier=="Sigma-Aldrich") echo "checked";?> />Sigma-Aldrich &nbsp;
<input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="VWR" onchange="disableTxt()" <?php if (isset($q3_supplier) && $q3_supplier=="VWR") echo "checked";?> />VWR &nbsp;
<input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Filter-Service" onchange="disableTxt()" <?php if (isset($q3_supplier) && $q3_supplier=="Filter-Service") echo "checked";?> />Filter-Service &nbsp;
<input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="other" onchange="enableTxt()" <?php if (isset($q3_supplier) && $q3_supplier!="Sigma-Aldrich" OR "VWR" OR "Filter-Service") echo "checked";?> />Other:
<input id="other" type="text" name="ud_q3_supplier_other" required="true" tabindex="3" disabled="disabled" value="<?php if (isset($q3_supplier) && $q3_supplier!="Sigma-Aldrich" OR "VWR" OR "Filter-Service") echo $q3_supplier;?>" /><br />
<script>
function disableTxt() {
    document.getElementById("other").disabled = true;
}
function enableTxt() {
    document.getElementById("other").disabled = false;
}
</script>
和html端:

<fieldset>
<div>
<label for="q2"><font color="red">*</font> Full product name:</label><br />
<input id="q2" type="text" style="width:400px" name="q2_productname" required="true" tabindex="2">
</div>
</fieldset>
<fieldset>
<div>
<label for="q3"><font color="red">*</font> Supplier:</label><br />
<input id="q3" type="radio" name="q3_supplier" required="true" tabindex="3" value="Sigma-Aldrich" onchange="disableTxt()" checked="checked" />Sigma-Aldrich &nbsp;
<input id="q3" type="radio" name="q3_supplier" required="true" tabindex="3" value="VWR" onchange="disableTxt()" />VWR &nbsp;
<input id="q3" type="radio" name="q3_supplier" required="true" tabindex="3" value="Filter-Service" onchange="disableTxt()" />Filter-Service &nbsp;
<input id="q3" type="radio" name="q3_supplier" required="true" tabindex="3" value="other" onchange="enableTxt()" />Other:
<input id="other" type="text" name="q3_supplier_other" required="true" tabindex="3" disabled="disabled" />
<script>
function disableTxt() {
    document.getElementById("other").disabled = true;
}
function enableTxt() {
    document.getElementById("other").disabled = false;
}
</script>
</div>
</fieldset>
<input type="hidden" name="sid" value="<?=$sid;?>"><br>
<font color="red">*</font> Product name: <input id="q2" type="text" style="width:400px" name="ud_q2_productname" required="true" value="<?=$q2_productname?>" tabindex="2"><br>
<font color="red">*</font> Supplier: 
<input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Sigma-Aldrich" onchange="disableTxt()" <?php if (isset($q3_supplier) && $q3_supplier=="Sigma-Aldrich") echo "checked";?> />Sigma-Aldrich &nbsp;
<input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="VWR" onchange="disableTxt()" <?php if (isset($q3_supplier) && $q3_supplier=="VWR") echo "checked";?> />VWR &nbsp;
<input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Filter-Service" onchange="disableTxt()" <?php if (isset($q3_supplier) && $q3_supplier=="Filter-Service") echo "checked";?> />Filter-Service &nbsp;
<input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="other" onchange="enableTxt()" <?php if (isset($q3_supplier) && $q3_supplier!="Sigma-Aldrich" OR "VWR" OR "Filter-Service") echo "checked";?> />Other:
<input id="other" type="text" name="ud_q3_supplier_other" required="true" tabindex="3" disabled="disabled" value="<?php if (isset($q3_supplier) && $q3_supplier!="Sigma-Aldrich" OR "VWR" OR "Filter-Service") echo $q3_supplier;?>" /><br />
<script>
function disableTxt() {
    document.getElementById("other").disabled = true;
}
function enableTxt() {
    document.getElementById("other").disabled = false;
}
</script>

我认为你在打印单选按钮时的if语句在这里是错误的

非空字符串在布尔值中变为真。因此,第三季度的供应商=Sigma Aldrich或VWR或过滤器服务无论如何都会验证为true

你的条款应该是:$q3\u供应商=Sigma Aldrich或$q3_供应商=VWR或$q3_供应商=过滤服务


请参见

我通过添加php if、elseif和else标记找到了实现方法。我将checked=checked with each if/elseif/else放在相应的单选按钮上。 它就像一个符咒:-

我将在这里提供代码。如果有人想出一个更优雅的解决方案,请告诉我


尝试过这个,但结果相同。无论如何,谢谢你的回答。我也试着像这样把OR子句放在括号中,但也没有成功。如果设置了$q3\u供应商和$q3\u供应商=Sigma Aldrich或$q3_供应商=VWR或$q3_供应商=过滤服务警告:这看起来很像,为了您的利益,我希望这不是在公共互联网上。您需要确保任何和所有的用户参数都是安全的,或者您处于应用程序泄露的严重风险中。尽可能使用预先准备好的语句和占位符,以确保不会出现此类错误。您在这里使用的是PDO还是mysqli?1。它不在公共互联网上,只有我们的团队才能访问。2.它到底有多不安全?我是一个真正的初学者,但据我所知,我正在逃避所有的字符串,并在任何地方使用面向对象的mysqli…它现在不在公共互联网上,但你无法控制它在未来的使用方式。此代码已经是一项严重的责任。做得好,你就不会有问题了。如果您使用的是mysqli,请使用参数化查询并将用户数据添加到查询中。这使得犯严重错误变得更加困难。你说你到处都在逃避,但是你显然错过了$sid是在你的查询中插入的$\u GET参数的地方。这足以杀死您的应用程序。您对$\u GET参数的看法是正确的。我将其更新为$sid=int$_GET['sid'];。在我们的组中,此代码将始终是私有的,它只能由组内拥有已验证帐户的人员使用。然而,其他人确实可以将在SO上找到的部分代码用于自己的应用程序。我无法控制。我将不得不阅读有关参数化查询和bind_param的内容,但是对所有内容进行转义还不够吗?手动转义很容易出错,如果您遗漏了某些内容,就会给您带来麻烦。尽可能使用bind_param,这样可以避免这种情况。这并不难做到,而且作为奖励,它使您的代码更具可读性。
<form action="update_script.php" method="post">
<input type="hidden" name="sid" value="<?=$sid;?>"><br>
<font color="red">*</font> Product name: <input id="q2" type="text" style="width:400px" name="ud_q2_productname" required="true" value="<?=$q2_productname?>" tabindex="2"><br>
<?php
if($q3_supplier == 'Sigma-Aldrich'){ ?>
<font color="red">*</font> Supplier: 
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Sigma-Aldrich" onchange="disableTxt()" checked="checked" />Sigma-Aldrich &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="VWR" onchange="disableTxt()" />VWR &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Filter-Service" onchange="disableTxt()" />Filter-Service &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="other" onchange="enableTxt()" />Other:
    <input id="other" type="text" name="ud_q3_supplier_other" required="true" tabindex="3" disabled="disabled" /><br />
    <script>
    function disableTxt() {
        document.getElementById("other").disabled = true;
    }
    function enableTxt() {
        document.getElementById("other").disabled = false;
    }
    </script>
<?php
} elseif($q3_supplier == 'VWR'){ ?>
<font color="red">*</font> Supplier: 
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Sigma-Aldrich" onchange="disableTxt()" />Sigma-Aldrich &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="VWR" onchange="disableTxt()" checked="checked" />VWR &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Filter-Service" onchange="disableTxt()" />Filter-Service &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="other" onchange="enableTxt()" />Other:
    <input id="other" type="text" name="ud_q3_supplier_other" required="true" tabindex="3" disabled="disabled" /><br />
    <script>
    function disableTxt() {
        document.getElementById("other").disabled = true;
    }
    function enableTxt() {
        document.getElementById("other").disabled = false;
    }
    </script>
<?php
} elseif($q3_supplier == 'Filter-Service'){ ?>
<font color="red">*</font> Supplier: 
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Sigma-Aldrich" onchange="disableTxt()" />Sigma-Aldrich &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="VWR" onchange="disableTxt()" />VWR &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Filter-Service" onchange="disableTxt()" checked="checked" />Filter-Service &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="other" onchange="enableTxt()" />Other:
    <input id="other" type="text" name="ud_q3_supplier_other" required="true" tabindex="3" disabled="disabled" /><br />
    <script>
    function disableTxt() {
        document.getElementById("other").disabled = true;
    }
    function enableTxt() {
        document.getElementById("other").disabled = false;
    }
    </script>
<?php
} else { ?>
<font color="red">*</font> Supplier: 
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Sigma-Aldrich" onchange="disableTxt()" />Sigma-Aldrich &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="VWR" onchange="disableTxt()" />VWR &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="Filter-Service" onchange="disableTxt()" />Filter-Service &nbsp;
    <input id="q3" type="radio" name="ud_q3_supplier" required="true" tabindex="3" value="other" onchange="enableTxt()" checked="checked"/>Other:
    <input id="other" type="text" name="ud_q3_supplier_other" required="true" tabindex="3" enabled="enabled" value="<?php echo $q3_supplier;?>" /><br />
    <script>
    function disableTxt() {
        document.getElementById("other").disabled = true;
    }
    function enableTxt() {
        document.getElementById("other").disabled = false;
    }
    </script>
<?php
} ?>