【问题标题】:Insert Only One Record In MYSQL database using php使用php在MYSQL数据库中只插入一条记录
【发布时间】:2021-07-25 01:00:26
【问题描述】:

我正在做一个项目,我想在特定时间只插入一条记录。

例如:在项目中,客户只给承包商打分一次。(在施工期间)一旦他打分,他就不能再打分了。

我在网上查了一下,但没有找到我要找的东西。

现在我有 2 个想法。

1- 插入复选框并使其永久禁用,一旦评级完成(通过服务器端验证)。

2- 根据数字(如 7/10)进行评分并显示出来。

选择哪一个是击球手策略。

代码部分:

CheckBox 解决方案代码(Google 上没有关于服务器端验证的解决方案):

Checkbox: <input type="checkbox" id="myCheck">

<p>Click the "Try it" button to disable the checkbox.</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction() {
  document.getElementById("myCheck").disabled = true;
}
</script>

还在stackoverflow上检查了这个(但这不是我要找的):

[服务器端解决方案示例链接][1]

数解:

<table>
  <tr><td>Rate Your Contractor (Out Of 10)</td><td><input id="intLimitTextBox"></td></tr>
</table>

<script>

function setInputFilter(textbox, inputFilter) {
  ["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {
    textbox.addEventListener(event, function() {
      if (inputFilter(this.value)) {
        this.oldValue = this.value;
        this.oldSelectionStart = this.selectionStart;
        this.oldSelectionEnd = this.selectionEnd;
      } else if (this.hasOwnProperty("oldValue")) {
        this.value = this.oldValue;
        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
      } else {
        this.value = "";
      }
    });
  });
}

// Install input filters.
setInputFilter(document.getElementById("intLimitTextBox"), function(value) {
  return /^\d*$/.test(value) && (value === "" || parseInt(value) <= 10); });

</script>

是否有任何php方式(或两种方式)来实现我的问题的解决方案?

PS:我不是很擅长网络开发,如果我做错了,请见谅。

【问题讨论】:

    标签: php html css mysql validation


    【解决方案1】:

    编辑:问题已经完全改变了!?这是对原始问题的回答。


    那么,我会尝试回答您的第二个问题,但它有点模糊......

    呈现表单:

    检查该用户是否存在提交。

    如果是,则使用该值将评级呈现为只读。 (如果评级是您拥有的唯一字段,甚至不要渲染标签)

    如果否,则显示可提交的表单。

    处理提交

    在处理提交时,检查该用户是否存在提交。

    如果它已经存在,返回一个错误(用户试图欺骗你) 否则,添加一个新的。

    【讨论】:

      【解决方案2】:

      编辑:问题已经完全改变了!?这是对原始问题的回答。


      也许我理解错了;您的标题是关于 php,但您的问题似乎是符合人体工程学的。

      对于评分,当前的演示文稿是一个星星列表,用户点击想要的星星。

      一旦用户提交了评分,我建议您使用相同的演示文稿,不使用 javascript 并且不使用 :hover 规则。

      可能会更改颜色(提交时为黄色,提交时为黑色或灰色且只读)

      $('.star').on('click', function() {
        var v = $(this).data('value');
        $('input[name="rating"]').val(v);
        $('.star').each(function() {
          var $this = $(this);
          $this.toggleClass('active', $this.data('value') <= v);
        });
      });
      /* remove spaces between stars */
      .stars {
        font-size:0;
      }
      
      .star::after {
        content:"☆";
        display:inline;
        font-size: 14pt;
        padding: 0 5px;
      }
      
      /* by default, only fills active stars */
      .stars:not(:hover) .star.active::after,
      .stars:hover .star::after {
        content:"★";
      }
      
      /* unfill stars following the current hovered */
      .stars:hover .star:hover ~ .star::after {
        content:"☆";
      }
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      
      <div class="stars">
        <input type="hidden" name="rating" value="" />
        <span class="star" data-value="1"></span>
        <span class="star" data-value="2"></span>
        <span class="star" data-value="3"></span>
        <span class="star" data-value="4"></span>
        <span class="star" data-value="5"></span>
      </div>

      【讨论】:

      • 我的主要问题是仅在数据库中由 certin 用户向 certin 人插入一次值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多