下面的代码有什么问题? 我不知道如何对我的SQL INSERT记录下拉菜单的所选选项。 我已经编辑了问题,以便有人可以在此方面提供更多帮助。 预先感谢您的帮助。
<?php
$usuarioLogado = $_SESSION['email'];
$etapa = "semana1";
$showModal = false;
$query = "SELECT * FROM campeonato WHERE usuario = '$usuarioLogado' AND etapa = '$etapa'";
$ref = $select_db->query($query);
$row = mysqli_fetch_assoc($ref);
if(isset($_POST['time']) && isset($_SESSION['email'])) {
$showModal = true;
$times = $_POST["time"];
$dobrada = $_POST["dobrada"];
$sobrevivente = $_POST["sobrevivente"];
if ($row) {
$sql = "UPDATE campeonato SET ";
foreach ($times as $time => $valor) {
if ($valor != null) {
$sql .= "$time = $valor,";
}
}
$sql .= " dobrada = $dobrada, sobrevivente = $sobrevivente, datahora = now() WHERE usuario = '$usuarioLogado' AND etapa = '$etapa'";
if ($select_db->query($sql) === TRUE) {
//echo "Dados atualizados com sucesso";
} else {
//echo "Error: " . $sql . "<br>" . $select_db->error;
}
} else {
$sql = "INSERT INTO campeonato (datahora, usuario, etapa, dobrada, sobrevivente,";
foreach ($times as $time => $valor) {
if ($valor != null) {
$sql .= "$time,";
}
}
$sql = substr_replace($sql ,"", -1);
$sql .= ") VALUES (now(), '$usuarioLogado', '$etapa', $dobrada, $sobrevivente,";
foreach ($times as $time => $valor) {
if ($valor != null) {
$sql .= "$valor,";
}
}
$sql = substr_replace($sql ,"", -1);
$sql .= ")";
if ($select_db->query($sql) === TRUE) {
//echo "Dados cadastrados com sucesso";
} else {
//echo "Error: " . $sql . "<br>" . $select_db->error;
}
}
}
$query = "SELECT * FROM campeonato WHERE usuario = '$usuarioLogado' AND etapa = '$etapa'";
$ref = $select_db->query($query);
$row = mysqli_fetch_assoc($ref);
?>
<form method="post">
<div class="form-group">
<table>
<tr>
<td class="quantity">
<input name="time[time1]" type="number" min="0" max="99" step="1" value="<?=$row["time1"]?>" required />
<input name="time[time2]" type="number" min="0" max="99" step="1" value="<?=$row["time2"]?>" required />
</td>
</tr>
<tr>
<td class="text-center" colspan="6">
<select name="dobrada" required style="color: #000;">
<option value=""> - Selecione A - </option>
<?php
for ($i = 1; $i <= 16; $i++) {
if ($row["DOBRADA"] == $i) {
echo "<option value='$i' selected=selected>Jogo $i</option>";
} else {
echo "<option value='$i'>Jogo $i</option>";
}
}
?>
</select>
</td>
</tr>
<tr>
<td class="text-center" colspan="6">
<select name="sobrevivente" required style="color: #000;">
<option value=""> - Selecione B - </option>
<?php
$queryS = "SELECT * FROM lista_times";
$resultS = $select_db->query($queryS);
while ($list = $resultS->fetch_array(MYSQLI_ASSOC)){
echo "<option value='".$list['times']."'>".$list['times']."</option>";
}
?>
</select>
</td>
</tr>
<tr class="full-area">
<td class="text-center" colspan="6">
<input type="submit" value="Enviar" style="color: #000;" />
</td>
</tr>
</table>
</div>
</form>
朋友您好,下面的代码有什么问题? 我不知道如何对我的SQL INSERT记录下拉菜单的所选选项。 我已经编辑了问题,以便有人可以在此方面提供更多帮助。 预先感谢您的帮助。
答案 0 :(得分:3)
PHP代码在客户端(例如浏览器)发出请求时运行。从下拉列表中选择一个元素不会发出任何请求(页面已加载),因此,没有任何PHP代码可以在页面处于当前状态时实现此目的。
您有两个选择:
POST
元素中指定的任何页面的请求(通常为<form>
请求)。您必须使用表单提交的数据来处理该页面上的INSERT
。后一种选择似乎更适合您的用例。在这一阶段,我建议您对表单如何工作以及如何从PHP处理表单进行一些研究。
答案 1 :(得分:0)
无论何时在选择框上发生更改事件,您都可以使用Ajax调用将数据发送到服务器并从中获取响应。
您可以使用Jquery库进行Ajax调用。
添加ID以选择标签
<select name="sobrevivente" id="sobrevivente" required style="color: #000;">
<option value=""> - Selecione 1 time sobrevivente - </option>
<?php
$queryS = "SELECT * FROM libertadores_times";
$resultS = $select_db->query($queryS);
while ($list = $resultS->fetch_array(MYSQLI_ASSOC)){
echo "<option value='".$list['times']."'>".$list['times']."</option>";
}
?>
<!-- Jquery CDN Link (Jquery Library)-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
// based on the change event this section will be triggered
$("body").on('change', '#sobrevivente', function() {
var sobrevivente = $(this).val();
var post_data = {
sobrevivente: sobrevivente
}
var url = 'https://someurl.com/filename'
$.ajax({
type : "POST",
dataType: 'json',
url : url,
data : post_data,
success: function(response){
// Handling the response
}
})
});
</script>
url:https://someurl.com/filename -您可以在其中编写过程以插入数据并以json格式回显结果过程的地方。
<?php
$category_id = $_POST['sobrevivente'];
// your code to insert it into the database
if($success){
$ajax_response = "success";
}
else
{
$ajax_response = "failed";
}
echo json_encode($ajax_response);
?>
答案 2 :(得分:0)
感谢所有答案,但没有人是正确的。 我做到了!问题在于缺少报价。