2016-07-14 2 views
2

Я делаю это неправильно. У меня есть две переменные, одна - для получения даты и месяца, а другая для числа (000). Я объединил две переменные вместе и установил ее в другую переменную, а затем вставлял ее в базу данных. Так что я хочу обновлять столбец, чтобы иметь уникальное значение для каждой квитанции. Формат получения без форматов (14-07000) заключается в том, чтобы получить максимальное значение столбца вставленной переменной и добавить к нему каждый раз каждый раз находит новое максимальное значение. Но я не получаю именно то, что мне нужно. Он вставляет, как я хочу, но не обновляю. Я хочу, чтобы квитанция не имела колонки 14-7000). Затем начните обновление до 14-07001, 14-07002, 14-07003, 14-07004, 14-07005, 14-07006,14-07007 и т. Д. Поэтому завтра это может измениться до 15-07000 и в следующем месяце, это может измениться до 15-08000.Как получить максимальное значение двух соединенных переменных

Это код, который я использовал

<?php 
    // pass the data into the database 
    $tran_id1 = date('d-m'); 
    $tran_id2 = "000"; 
    $transaction_id = $tran_id1 . $tran_id2; 



    if (empty($received & $amount_to_pay & $amount_collected) == false) 
    { 

    $sql8 = "INSERT INTO `transactions` (`patient_name`,`total_amount`, `amount_tendered`, `payment_status`, `payment_date`, `paid_for`,`hospital_no`, `received_by`,`receipt_no`) VALUES ('$received', '$amount_to_pay', '$amount_collected', '$payment', '$payment_date', '$being_pay_for','$hosp_no', '$firstname','$transaction_id')"; 
    $query8 = mysqli_query($dbconnect, $sql8) or die (mysqli_error($dbconnect)); 
    $sql9 = "INSERT INTO `transaction_paid_for` (`paid_for_name`) VALUES ('$others')"; 
    $query9 = mysqli_query($dbconnect, $sql9) or die (mysqli_error($dbconnect)); 
    $max = "SELECT MAX(`receipt_no`) AS transaction_id FROM `transactions`"; 
    $max2 = mysqli_query($dbconnect, $max); 
    $result1 = mysqli_fetch_array($max2); 
    $result2 = $result1['transaction_id']; 
    $result3 = $result2+1; 
    $sql = "UPDATE `transactions` SET `receipt_no`='$result3' WHERE `patient_name`='$received'";  
    $result4 = mysqli_query($dbconnect, $sql); 
    } 
?> 
+0

varchar (50) NULL –

ответ

1

Я думаю, вы не можете использовать такие математические расчеты на поле VARCHAR. Хорошей альтернативой является сохранение d-m в отдельном столбце varchar и добавочное число в столбце int.

Затем вы можете использовать код для получения требуемого номера чека.

//create 2 columns in your table eg dm and receipt_no  
//to store tran_id1 & tran_id2 into dm and receipt_no columns 
$tran_id1 = date('d-m'); 
$tran_id2 = "000"; 

// Create connection & select 
$sql = "SELECT MAX(receipt_no)+1 MAX_RECEIPT_NO FROM transactions WHERE dm='" . $tran_id1 . "' LIMIT 0,1"; 
$result = $conn->query($sql); 
while($row = $result->fetch_assoc()) { 
    $tran_id2 = $row["MAX_RECEIPT_NO"]; 
} 
//create your receipt no 
$transaction_id = $tran_id1 . str_pad($tran_id2, 3, '0', STR_PAD_LEFT); 
//now use sql update with this $transaction_id 

Примечание:

  • Ваш код не займет год во внимание.
  • Возможно, вы захотите избежать дубликатов, поэтому ставьте уникальное ограничение на 2 столбца
  • Также вы можете обернуть sql в транзакции или использовать отдельный столбец для блокировки, см. SELECT and lock a row and then UPDATE.
+0

Спасибо за ответ. Он работает, но я хочу, чтобы он добавлял максимальную квитанцию ​​№ 1 в каждой точке. –

+0

Мой код 'SELECT MAX (receipt_no) + 1 уже добавляет 1 к максимальному номеру квитанции. В качестве альтернативы вы можете просто получить MAX и добавить 1 в свой php-код. –

+0

Да .... Спасибо. Есть ли способ выполнить арифметику функции 'date ('d-m')'? Как добавить 1 к нему –

Смежные вопросы