|
|
|
|
|
для: babilonian
(23.03.2006 в 14:26)
| | Все оказалось проще. Нужно было просто подойти с другой стороны к анализу.
$num=0;
$result = mysql_query("SELECT id FROM table ORDER BY id");
while ($row = mysql_fetch_array($result))
{
$num++;
$arr_id[$num]=$row[id];
$last=$row[id]+2;
}
for($q=0;$q<$last;$q++)
{
if($q!=$arr_id[$q]){$num=$q; break;}
}
|
| |
|
|
|
|
|
|
|
для: babilonian
(23.03.2006 в 14:26)
| | А какой тип у поля id в базе?
ежели оно автоинкрементное, то вроде счет начинается с 1 а не с 0.
Попробуй вначале поставить вместо $gool=0; $gool=1;
но действительно из-за этого нарушается целостность базы. поэтому нафиг такой геморрой?
если уж хочется вставлять свое id, то делаем поле id не автоинкрементным, перед добавлением в базу делаем запрос
<?
$sql = "SELECT MAX(user_id) AS total FROM TABLE";
$user_id = $row['total'] + 1;
|
| |
|
|
|
|
|
|
|
для: babilonian
(23.03.2006 в 14:26)
| | так делать нельзя ... если у вас поле auto_increment то ничего вы с этим не поделаете.
На ум приходит мысль сделать простое поле и самому ... присваивать id , а вот как это сделать я затрудняюсь ответить.
...... если я не прав пусть меня поправят :)) | |
|
|
|
|
|
|
|
для: babilonian
(23.03.2006 в 14:26)
| | А почуму она должна генерировать число, которое уже было? Ведь при этом нарушается целостность БД. | |
|
|
|
|
|
|
| Никто никогда не занимался следующей ерундой: В мускульной базе есть колонка id. Числовые значения в ней для каждой строки соответственно идут по порядку от нуля и до бесконечности. Удаляем определенный id из середины, допустим 2. Остаются id 1 и 3. А вот как при следующем добавлении новой строки в эту таблицу генерировать id, которое бы замещало ранее удаленное. В данном случае равнялось 2?
Вот такой код пришел мне в голову:
$gool=0;
$result = mysql_query("SELECT id FROM somebase ORDER BY id");
while ($row = mysql_fetch_array($result))
{
$gool++;
$id=$row[id];
if(empty($id) or $id!=$gool){$num=$gool;}
}
|
Соответственно $gool – генерируемое число.
Но при всей его видимой правильности он упорно продолжает генерировать число, которое на 1 больше чем самое большое в базе. Что я здесь упустил? | |
|
|
|
|