2014-11-12 2 views
0

я имею таблицу в MySQL с 2 полями (NUM и название)

мне нужно вставить много имен и каждое имя имеет один номер, как на примере ниже

я необходимо ввести php в «page 2», чтобы вставить следующий номер после последнего (в этом случае номер 5), если я вставляю только имя и оставляю номер txt пустым, другими словами, мне нужно, чтобы он был с текстом по умолчанию внутри, но этот текст является последним номером в таблице (в данном случае номером 5).

текст по умолчанию в «ввода типа = текст»

1 - Джон
2 - мария
3 - моника
4 - джордж

страницы 1 form_page.html

<form action="add.php" method="post"> 
    <input type="text" name="txt_num"> 
    <input type="text" name="txt_name"> 
    <input type="submit"> 
</form> 

страница 2 add.php

<?php 
include('connect_db.php'); 
       $sql="INSERT INTO(
        num, 
        name, 
       ) 
       VALUES(
        '$_POST[txt_num]', 
        '$_POST[txt_name]', 
       )"; 
?> 

страница 3 connect_db.php

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "database_name"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 

// Check connection 
if (!$conn) { 
    die("<p2>Database connection failed: </p2>" . mysqli_connect_error()); 
} 
?> 
+1

Сначала вы вставить запрос не будет работать, потому что вам не хватает имя таблицы после INSERT INTO. Теперь, зачем вы вставляете $ _POST [txt_num]? почему бы не сделать это число целых чисел с auto_increment? – Jaylen

+3

'AUTO_INCREMENT'? – MamaWalter

+1

У вас есть дополнительные запятые в вашем запросе и отсутствует имя таблицы, чтобы вставить «в», не говоря уже о том, что вы не запрашиваете, поэтому я называю это * заполнением вопроса пробелов *. –

ответ

0

Ваше решение мой быть AUTO_INCREMENT, который будет делать работу за вас.

Вам нужно будет сделать свой номер auto_increment и сделать первичный ключ этой таблицы.

подключения к MySQL и попробовать следующие запросы:

ALTER TABLE tbl_name ADD COLUMN `id` int(11) unsigned primary KEY AUTO_INCREMENT; 
ALTER TABLE tbl_name DROP COLUMN num; 
ALTER TABLE tbl_name CHANGE id num int(11) unsigned; 

На стороне отметить ваш код не будет работать, потому что вам не хватает имя таблицы и имеют дополнительные запятые.

если вы изменить таблицы, как я полагаю, ваш запрос будет выглядеть следующим образом

 $sql="INSERT INTO tbl_name(name)VALUES($_POST[txt_name])"; 

Примечание: что вам нужно будет бежать значение txt_name в противном случае ваш код будет уязвим для атак.

0

Вы можете:

  • Набор "AUTO_INCREMENT" на "номер" в MySQL.
  • Выберите последние "num" и Insert.

Exemple (выберите последний и вставить, если вы не публикуете 'Num'):

//if 'num' is null 
if($_POST['txt_num'] == '' or !isset($_POST['txt_num']){ 

     $LastNum = "SELECT num FROM table_name ORDER BY num DESC LIMIT 1"; 
     $LastNum = mysql_fetch_array($LastNum); 
     $Num = $LastNum['num'] +1; 

//if you set value  
}else{             
     $Num = $_POST[txt_num]; 
} 


    $sql = "INSERT INTO table_name(num,name) VALUES('".$Num."','".$_POST['txt_name']."')";