Здравейте!
Ако сте чели въпросите, които задавам напоследък опитвам се да направя меню, чиито елементи да могат да бъдат пренареждани от потребителя.
Имам таблица в БД, със следните елементи:
id, red, data, name, sydyrzhanie, където:
id - уникалния номер на реда, ключ към полетата в таблицата, попълва се автоматично от системата
red - поредността на връзката в менюто при листване, също число
data си е датата
name - името на връзката (пример "Начална", "За нас", "контакти" и пр)
sydyrzhanie - съдържанието на страницата, което ще се зареди при кликване върху връзктата
Ето и кода, който извлича информацията от БД и създава формата за пренареждане на връзките в менюто:
<html>
<body>
<form name="" method="Post" action="prered.php">
<?
$user="***";
$password="***";
$database="***";
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query="SELECT * FROM sydyrzhanie order by red";
$result=mysql_query($query)
or die ("Zaqwkata ne mozhe da se izpylni!");
$broi=mysql_num_rows($result);
while ($row = mysql_fetch_array($result))
{
echo "Razdel: ";
echo $row["name"];
echo "<br>";
echo "Poreden nomer: ";
$id=$row["id"];
echo "<br>$id";
echo "<B>Red:</B> ";
$red=$row["red"];
echo <<< GAN
<INPUT TYPE="TEXT" NAME="red$id" VALUE="$red" size="4" maxlenght=2><BR><BR>
GAN;
}
echo <<< GAN
<input type="hidden" name="broi" value="$broi">
<input type="submit" name="Submit" value="Prenaredi stranicite!">
GAN;
mysql_close();
?>
</body>
</html>
С формата нямам проблем - в кода на това листване няма какво да се обърка. Проблемът е алгоритъмът, по който ще се предава и актуализира информацията в полето red, така че да бъде обвързано със стойността на id като ключ към всеки ред. И за да бъде задачката още по-мъчна, актуализацията трябва да става от втори код, т.е. да имам още един файл. (вторият файл е за по-голяма сигурност, тъй като ще трябва да въведа и междинен момент на валидация, който трябва да включва и проверка дали въведените от потребителя числа за реда на листване не се повтарят)
Аз поне срещам тук два проблема:
1)поредността на id не е гарантирана, тъй като потребителят може да изтрива редове.
2)за всеки ред трябва да се предават две променливи, чиято стойност е взаимно обвързана (id като съответен ключ и новата стойност на red).
3)Имената на променливите при н-брой полета във формата
Още снощи успях да подкарам алгоритъм, който работи успешно при последователност на id, т.е. ако след създаването на таблицата не е имало изтриване на редове.(хипотеза, на която в реална среда няма как да разчитам)
Изпозлвах фор цикъл, който да получава информацията от кода по-горе (стойността на id за всеки запис се получава динамично от поредността в цикъла) и да я вкарва в таблицата като всеки ред се записва с отделна заявка.
Опитах и код, който създава масив с новите стойности на red, в който масив името на всеки елемент е съответната стойност на id. Само че не мога да прехвърля този масив в другия файл, който ще осъществи записа. (ако някой знае възможност за пренасяне на масиви, ще ми помогне значително).
Проблема с пренасянето на масива мога да реша като използвам междинен запис във файл, от който кода за ъпдейт на полето ще вземе стойностите под формата на нов масив.
Предполагам, че записа във файл мога да избегна като всеки път създавам и изтривам някаква временна таблица в БД, но ми се струва не по-малко усложнение...
Като последна надежда мисля да върна стария вариант редовете в менюто да се листват по id, и да пренареждам само него... Така обаче може да стане голяма каша, особено като знам непукизма на адресата на кода
Моля, помогнете ми да реша задачата! Приемам всякакви идеи!
Благодаря предварително!
Ако сте чели въпросите, които задавам напоследък опитвам се да направя меню, чиито елементи да могат да бъдат пренареждани от потребителя.
Имам таблица в БД, със следните елементи:
id, red, data, name, sydyrzhanie, където:
id - уникалния номер на реда, ключ към полетата в таблицата, попълва се автоматично от системата
red - поредността на връзката в менюто при листване, също число
data си е датата
name - името на връзката (пример "Начална", "За нас", "контакти" и пр)
sydyrzhanie - съдържанието на страницата, което ще се зареди при кликване върху връзктата
Ето и кода, който извлича информацията от БД и създава формата за пренареждане на връзките в менюто:
<html>
<body>
<form name="" method="Post" action="prered.php">
<?
$user="***";
$password="***";
$database="***";
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$query="SELECT * FROM sydyrzhanie order by red";
$result=mysql_query($query)
or die ("Zaqwkata ne mozhe da se izpylni!");
$broi=mysql_num_rows($result);
while ($row = mysql_fetch_array($result))
{
echo "Razdel: ";
echo $row["name"];
echo "<br>";
echo "Poreden nomer: ";
$id=$row["id"];
echo "<br>$id";
echo "<B>Red:</B> ";
$red=$row["red"];
echo <<< GAN
<INPUT TYPE="TEXT" NAME="red$id" VALUE="$red" size="4" maxlenght=2><BR><BR>
GAN;
}
echo <<< GAN
<input type="hidden" name="broi" value="$broi">
<input type="submit" name="Submit" value="Prenaredi stranicite!">
GAN;
mysql_close();
?>
</body>
</html>
С формата нямам проблем - в кода на това листване няма какво да се обърка. Проблемът е алгоритъмът, по който ще се предава и актуализира информацията в полето red, така че да бъде обвързано със стойността на id като ключ към всеки ред. И за да бъде задачката още по-мъчна, актуализацията трябва да става от втори код, т.е. да имам още един файл. (вторият файл е за по-голяма сигурност, тъй като ще трябва да въведа и междинен момент на валидация, който трябва да включва и проверка дали въведените от потребителя числа за реда на листване не се повтарят)
Аз поне срещам тук два проблема:
1)поредността на id не е гарантирана, тъй като потребителят може да изтрива редове.
2)за всеки ред трябва да се предават две променливи, чиято стойност е взаимно обвързана (id като съответен ключ и новата стойност на red).
3)Имената на променливите при н-брой полета във формата
Още снощи успях да подкарам алгоритъм, който работи успешно при последователност на id, т.е. ако след създаването на таблицата не е имало изтриване на редове.(хипотеза, на която в реална среда няма как да разчитам)
Изпозлвах фор цикъл, който да получава информацията от кода по-горе (стойността на id за всеки запис се получава динамично от поредността в цикъла) и да я вкарва в таблицата като всеки ред се записва с отделна заявка.
Опитах и код, който създава масив с новите стойности на red, в който масив името на всеки елемент е съответната стойност на id. Само че не мога да прехвърля този масив в другия файл, който ще осъществи записа. (ако някой знае възможност за пренасяне на масиви, ще ми помогне значително).
Проблема с пренасянето на масива мога да реша като използвам междинен запис във файл, от който кода за ъпдейт на полето ще вземе стойностите под формата на нов масив.
Предполагам, че записа във файл мога да избегна като всеки път създавам и изтривам някаква временна таблица в БД, но ми се струва не по-малко усложнение...
Като последна надежда мисля да върна стария вариант редовете в менюто да се листват по id, и да пренареждам само него... Така обаче може да стане голяма каша, особено като знам непукизма на адресата на кода
Моля, помогнете ми да реша задачата! Приемам всякакви идеи!
Благодаря предварително!