Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка в коде?
 
 автор: beowulf   (08.11.2005 в 12:59)   письмо автору
 
 

Написал код, который должен вносить информацию в базу из полей <textarea>, расположенных в таблице. Однако, где-то по-видимому допустил ошибку. Информация пишется, только наоборот -значения, введенные в верхние строки оказываются внизу
т.е. должно быть так
1
2
3
в базу заносит так
3
2
1

print'<table>';
for($i=0;$i<7;$i++)
 {
print'<TR><TD><textarea name="mod[]" rows=6 cols=15 wrap="virtual"></textarea></TD>
<TD><textarea name="mod[]" rows=6 cols=15 wrap="virtual"></textarea></TD><TD><textarea name="mod[]" rows=6 cols=15 wrap="virtual"></textarea></TD><TD><textarea name="mod[]" rows=6 cols=15 wrap="virtual"></textarea></TD><TD><textarea name="mod[]" rows=6 cols=15 wrap="virtual"></textarea></TD></TR>';
}
print'</table><input name="send" type="submit" value="добавить"></form>';

if(isset($_POST['send']))
{
$mod=$_POST['mod'];
for($i=0;$i<7;$i++)
    {
     mysql_query("insert into tab values('','$mod[0]','$mod[1]','$mod[2]','$mod[3]','$mod[4]')");
     for($c=0;$c<5;$c++){array_shift($mod);}
    }
}
В чем может быть дело?

   
 
 автор: DDK   (08.11.2005 в 13:47)   письмо автору
 
   для: beowulf   (08.11.2005 в 12:59)
 

Можно банально инвертировать массив:

<?
...
$mod=$_POST['mod'];
rsort($mod); // инвертируем массив при помощи ф-ии rsort(); 
for($i=0;$i<7;$i++) 
    { 
     
mysql_query("insert into tab values('','$mod[0]','$mod[1]','$mod[2]','$mod[3]','$mod[4]')"); 
     for(
$c=0;$c<5;$c++){array_shift($mod);} 
    } 
...
?>

   
 
 автор: beowulf   (08.11.2005 в 13:56)   письмо автору
 
   для: DDK   (08.11.2005 в 13:47)
 

понятно, что можно, но ведь так не должно быть!
Кроме тго выяснилось, что записывает и так
3 строка
1строка
2 строка и т.п.
Хотя все должно работать

   
 
 автор: glsv (Дизайнер)   (08.11.2005 в 22:38)   письмо автору
 
   для: beowulf   (08.11.2005 в 13:56)
 

MySQL сама решает как ему лучше записывать. Особенно если идет активная работа с базой (удаление - добавление). Может новые записи вставить в середину - в общем оптимизирует свою работу.
Вам нужно сортировать вывод из базы непосредственно при запросе с помощью

ORDER BY имя_поля. 

Если поля, по которому можно сортировать нет, то добавьте его в таблицу. Полагаться на сортировку MySQL, которая образуется при добавлении новых записей нельзя. Она не предназначена для этого. Как размещать записи в таблице - внутреннее дело базы данных.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования