автоинкрементное значение ID


у меня есть сомнения относительно значений AUTOINCREMENT в MySQL

в системе, которую я разрабатываю, он позволяет сохранять проекты и соответствующие документы, которые он должен нести (записи, письма, таблицы), в окне регистрации он просит вас ввести код, который будет идентификатором, я в моей таблице проектов у меня есть значение autoincremental.

но что происходит, код, который у меня есть для сохранения проекта, считывает значение, которое находится в текстовом поле proy_id, а затем делает сохранение, если я оставил этот флажок пустым в базе данных, если я сохранил запись как id:1, id: 2, id:3, но не сохранил документы, потому что я не нашел идентификатор проекта сохранить.

мой вопрос заключается в том, как я могу сделать, чтобы в коде появилось автоматическое значение, если возможно, которое будет сохранено в базе данных, которое выйдет 1 , 2 , 3 , 4, 5

    <input type="text" maxlength="5"  class="form-control" name="proy_id" id="proy_id" value="" placeholder="Código del Proyecto" >
    </div>
</div>

мне сказали поместить "value", но я не знаю, как назвать это из базы данных или как создать его

Этот код сохраняет проект и его требования

<?php 
include 'conexion.php'; 
bd_proyecto_agregar($_REQUEST);  
foreach ($_REQUEST['requ'] as $requisito_id){
  $requisito = array('proy_requ_id' => NULL, 'proy_id' => $_REQUEST['proy_id'], 'requ_id' => $requisito_id);
  bd_proyecto_requisito_agregar($requisito);
} 
header("Location: listado2.php"); 
exit; 
?>
 1
Author: Daniel Hernández, 2016-05-26

4 answers

Ваша функция "bd_projecto_regar" должна возвращать идентификатор проекта, который был автоматически создан в mysql, чтобы получить этот идентификатор, вы должны вызвать функцию "mysql_insert_id () " сразу после выполнения INSERT.

Как только вы вернете этот идентификатор, вы сохраните его в переменной и передадите его вместо передачи " $_REQUEST ['proy_id']".

С тем, что код будет выглядеть так:

<?php 
include 'conexion.php'; 
$id = bd_proyecto_agregar($_REQUEST);  
foreach ($_REQUEST['requ'] as $requisito_id){
  $requisito = array('proy_requ_id' => NULL, 'proy_id' => $id, 'requ_id' => $requisito_id);
  bd_proyecto_requisito_agregar($requisito);
} 
header("Location: listado2.php"); 
exit; 
?>
 1
Author: Fernando Cabrera, 2016-05-26 16:19:57

Доброе утро,

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

Определение поля с именем ID, которое является autoincremental и полем (в данном случае proy_id, я полагаю), где код вашего проекта сохраняется, идея поля AUTOINCREMENT в MySQL заключается в том, чтобы иметь ключ, который никогда не изменяется, в этом случае уникальный идентификатор ваших записей, который вы на 100% уверены, не будет повторяться в вашей таблице, потому что он автоматически увеличивается, с другой стороны, в вашем поле proy_id, которое может быть varchar(например), вы можете сохранить другую номенклатуру, PROY-001-а, PROY-001-B или что-то подобное.

¿Как сделать манипуляции с реестром?

Просто, когда вы делаете INSERT, вы пишете

INSERT INTO имя_таблицы ( proy_id,описание и т.д.... ) VALUES ( "PROY-001-а", "этот проект О"и т.д.... );

И будучи INSERT, поле AUTOINCREMENT будет автоматически введено и готово к следующей записи, и когда вы делаете UPDATE, вы пишете:

UPDATE имя_таблицы SET proy_id = "PROY-001-B", описание="это еще одна модификация" и т. д... WHERE id = $id

Где $ id будет значением, которое вы отправляете в своем $REQUEST (что-то вроде value, которое вам сказали добавить), что может выглядеть как

<input type="hidden" name="id" value="<?php echo $respuestaBD['id']?>" />

Вы можете вызвать идентификатор как $id = $_REQUEST['id'] и отправить его в свой массив $ требование, определенное в коде, который вы опубликовали.

Я надеюсь, что этот подход будет полезен для вас.

Приветствия,

 1
Author: Rudy Palacios, 2016-05-26 16:41:58

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

Надеюсь помочь вам, привет.

 0
Author: HCarrasko, 2016-05-26 15:27:37

Если вы хотите, чтобы идентификатор был назначен пользователем (например, потому что он напечатан в физической форме ), вы не должны использовать auto increment. Для связанных документов в другой таблице вы должны иметь два столбца, которые образуют ваш индекс идентификатор (документа ) auto inc и идентификатор проекта , поэтому, если вы введете проект 993 в таблицу проектов, он останется:

id: 99
obs: proyecto ingresado por pepito


en la de documentos:

id: 1023
proyecto_id: 99
documento: planilla excel

id: 1024
proyecto_id: 99
documento: documento pdf

И индекс на (project_id, id) во второй таблице поможет вам получить доступ по порядку и быстро проектная документация

SELECT * from documentos where proyecto_id=99 order by id
 0
Author: Juan Manuel Doren, 2016-05-27 05:01:23