Не работает перебор значения в циклах for, foreach.
Конкретнее после удаления строки из таблицы, обновить столбец с id. Т.е. например мы имеем таблицу где в ней есть столбец id со значениями 1, 2, 3 ... послед удаления строки например 2 столбец с id принимает значения 1, 3.... Мне нужно осуществить обновление столбца id в соответствии количество строк, что бы стало id: 1, 2 ....
Логика такая удалить значение с бд и после обновить столбец с ID.
$delete = mysql_query("DELETE FROM test WHERE id='".$_GET['id']."'");
$id = mysql_query("SELECT id FROM test");
while($idCheck[] = mysql_fetch_assoc($id)) {
#echo $idCheck["id"]."\n";
}
echo count($idCheck);
for($i = 0; $i < count($idCheck); $i++) {
mysql_query("UPDATE test SET id=".$i);
}
получил массив со значениями в поле id он соответствует бд. Но в переборе в цикле значений в обновление бд вписывает общее значение строк после удаления . Т.е вместо 1, 2, 3 ... записывает 2, 2, 2...
Другой вариант тоже не работает - тут стоит включить отображение ошибок на экран, потому что исходя из "конструкции"
foreach ($idCheck as $key => $value) {
mysql_query("UPDATE test WHERE id='".$value[$key]."'");
}
вряд-ли существует индекс $value[$key] вообще
$delete = mysql_query("DELETE FROM test WHERE id=".$_GET['id']);
$id = mysql_query("SELECT id FROM test");
$rows = mysql_num_rows($id);
$fields = mysql_num_fields($id);
for($i = 0; $i < $rows; $i++) {
mysql_query("UPDATE test WHERE id = ".$i);
}
Если не брать во внимание в целом использование get-запроса для измеения данных, использование устаревшего расширения для работы с БД, отсутствие какой-либо проверки на валидность данных и защиты от инъекций, и самое главное непонятность, зачем это все надо, то задачу надо решать не через циклы на стороне пхп.
у вас есть цепочка идентификаторов 1 2 3 4 5. Вы удаляете 3, получаете 1 2 4 5. Далее вместо циклов по перебору нужно выполнить только один запрос на апдейт записей 4 и 5 уменьшив их на 1.
$id = $_GET['id'];
mysql_query("delete from test where id = $id");
mysql_query("update test set id = id - 1 where id > $id") ;
в своих попытках решения UPDATE test SET id=$i у вас нет условия where, так что вы данным значением обновляете всю таблицу целиком. вот и остаются значения только последней итерации цикла.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости