как конфертировать из html в php - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужно сгенерировать следующий доступный идентификатор, который является первичным ключом в таблице, но для этого мне нужно преобразовать HTML в PHP в атрибуте value во входном теге.

Это не работает, поскольку PHP-файл зависает между ними и не позволяет загружать полную страницу.

Я пробовал этот код:

<input type="number" id="id" class="textbox" name="s_id" onkeyup="showAvailableId(this.value)" min="10000" max="999999" 
value ="<?php $mysqli = new mysqli('localhost', 'root', '', 'project_db');
   if($mysqli->connect_error) {
        exit('Could not connect');
       }
   $sql = 'SELECT student_id from students WHERE student_id = 11120';
   $stmt->execute();
   $stmt->store_result();
   $stmt->bind_result($result);          
   $stmt->fetch();
   $stmt->close();

   if ($result != NULL){
          echo ++$result;
   }?>" required><label id="demo"></label>

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Я не думаю, что вы хотите сделать это, что, если 100 человек все будут запускать этот код одновременно, все они получат один и тот же следующий доступный идентификатор, но тогда только 1 из них действительно сможет что-то с ним сделать, потому что это первичный ключ, поэтому тот, кто отправляет форму первым, получает идентификатор, но все остальные возвращают false, и все они зацикливаются, пока достаточное количество людей не сдастся или не подождет достаточно долго, чтобы отправить форму.

Вы должны переосмыслить то, что вы пытаетесь достичь

0 голосов
/ 02 апреля 2019

Я не совсем понял необходимость, я бы использовал автоинкремент mysql и, если перед этим фрагментом кода есть вставка, я бы использовал «Выбрать последний идентификатор». Но вы должны быть осторожны с этим способом генерации удостоверения личности. Вы должны отправить форму без идентификатора и сгенерировать идентификатор в MySQL

    <?php 
  $nextID = array("student_id"=>0);

  $mysqli = new mysqli('localhost', 'root', '', 'project_db'); 

  /* check connection */
  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  $sql = 'SELECT MAX(student_id) + 1 AS student_id from students';  
  if ($result = $mysqli->query($sql)) {
    while ($row = $result->fetch_row()) {
        $nextID = $row[0]['student_id'];
    }  
    $result->close();
  }
  $mysqli->close();

?>

<input type="number" id="id" class="textbox" name="s_id" onkeyup="showAvailableId(this.value)" min="10000" max="999999" 
value="<?php echo $result['student_id']; ?>" required><label id="demo"></label>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...