У меня есть требование, где мне нужно вставить user_id
в следующем формате
13310_userid_1
13310_userid_2
13310_userid_3
где
13310 = $_GET['userid'] //user id from session
userid = constant //constant text defined
1/2/3 = autoincrement value
Здесь вариация когда user_id
изменено, значение автоинкремента будет вставлено с начала, которое будет выглядеть
13311_userid_1
13311_userid_2
13311_userid_2
и не
13311_userid_4
13311_userid_5
13311_userid_6
Как я могу проверить, если user_id
изменяется и вставьте значение автоинкремента из 1
?
Спасибо
Я не уверен, что это то, что вам нужно, но вы можете использовать массив для хранения приращения каждого продолжения:
$const = 'userid';
$user_id = '13310';
$array_increment[$user_id] =1;
foreach(array('Franck','Robert','You','Me') as $index=>$test){
if($index==2)$user_id = '13311';
if(!isset($array_increment[$user_id])){
$array_increment[$user_id]=1;
}
$increment = $array_increment[$user_id];
echo $user_id.'_'.$const.'_'.$increment.'<br />';
$array_increment[$user_id]++;
}
Покажет :
13310_userid_1
13310_userid_2
13311_userid_1
13311_userid_2
Вы можете сохранить добавочное значение каждого идентификатора пользователя во временном сеансе:
Для каждого запроса проверьте, существует ли уже $ _GET [‘userid’] в сеансе, если не создайте его со значением ноль.
Увеличьте на единицу и используйте это значение, чтобы создать строку для вставки в БД.
//set up session if it is not already setif(!isset($_SESSION['users'][$_GET['userid'])){
$_SESSION['users'][$_GET['userid']=0;
}
$_SESSION['users'][$_GET['userid']=$_SESSION['users'][$_GET['userid']+1;
$user=$_GET['userid'].'_userid_'.$_SESSION['users'][$_GET['userid'];//insert $user into your DB or permanent storage.
$db->insert($user);
(это должен быть комментарий, но он немного многословен)
Ваш смысл имеет смысл только в том случае, если где-то здесь фигурирует база данных, но вы никогда не заявляли явно, что это так, и какая это база данных.
Проектирование реляционной базы данных (и в значительной степени проектирование нереляционной базы данных) подчиняется правилам нормализации. Это методы для описания структуры ваших данных и не позволяют вам делать глупости. это нарушает первое правило.
Предполагая, что вы проектировали систему правильно, вы бы оставили эти три атрибута в качестве отдельных полей. Но это не отвечает на вопрос о том, является ли идентификатор номинальным, кардинальным или порядковым (а в случае порядковых чисел существует ли требование, чтобы они были последовательными).