|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
Как да напиша този скрипт
|
|
Автор |
hrisunko (Наблюдател) |
Публикувано | 06.05.01 10:36 |
|
Идеята ми е да редактирам цялата информация от базата данни наведнъж, като изкарам всички записи и тази графа, която искам да редактирам да бъде <input type=text>.
И после всичко наведнъж да се обнови в базата.
Ето какво имам аз:
$query = "SELECT 1а, 2а, 3а, 4а, 5а FROM bazata ORDER BY 1a";
$result = mysql_query($query);
if ($i = mysql_fetch_array($result)) {
?>
<form method="post" action="file.php?action=submit">
<table width="500">
<?
do {
?>
<tr><td><? echo "$i[0]" ?></td>
<td><? echo "$i[1]" ?></td>
<td><? echo "$i[2]" ?></td>
<td><? echo "$i[3]" ?></td>
<td><input type="text" size="5" name="new1" value="<? echo "$i[4]" ?>"></td>
<td><input type="text" size="2" name="new2" value="<? echo "$i[5]" ?>"></td>
<input type="hidden" name="PrimaryKey" value="<? echo "$i[0]" ?>"></tr>
<?
}
while ($i = mysql_fetch_array($result));
}
?>
<input type="submit" value=" Обновяване ">
И обработката на данните:
$query = "UPDATE bazata SET 1a='$new1', 2a='$new2' WHERE A='$PrimaryKey' ";
$result = mysql_query($query);
Това, което става е че текстовите полета с променливи са с едно и също име и активна остава съответно последната присвоена стойност.
Опитах да променя името на променливите с new1[] и new2[], но след това в обработката не можах да се оправя как да обработи един по един входовете от формуляра.
Дайте идея как да се напише.
Благодаря предварително!
| |
|
ne mi stana mnogo jasno kakwo se opitwash da postignesh
90% Son of a bitch 10% Angel
| |
|
Ами искам да спестя време като данните ми от таблицата да ги обновя наведнъж, а не с PHPMyAdmin, редактирайки ги един по един. Клеткита с вече остарялата информация са 1а и 2а, както съм ги написал в скрипта.
Възможно ли е да се напише така че да обработи заявката за UPDATE за всеки един ред от таблицата?
| |
Тема
|
Re: Как да напиша този скрипт
[re: hrisunko]
|
|
Автор | edmon (Нерегистриран) |
Публикувано | 06.05.01 18:24 |
|
i az ne moga mnogo da razbera ama
ne mozhesh li pri sledvashto izvikvane da izpraznish prosto promenlivite
i te da poluchat novi stoinosti ?
...
ne moga da se setia da ima problem s tova i az sum si pravil takova
da mi chete ot bazata da mi popylni formuliar i sled tova da mi zapishe na staroto misato novite neshta redaktirani i sum niamal problem...
| |
Тема
|
Re: Как да напиша този скрипт
[re: hrisunko]
|
|
Автор | edmon (Нерегистриран) |
Публикувано | 06.05.01 18:28 |
|
kakvo oznachva che tekstovite poleta sa s edno i syshto ime
$new1 ne e ednakvo s $new2
| |
Тема
|
Re: Как да напиша този скрипт
[re: edmon]
|
|
Автор | edmon (Нерегистриран) |
Публикувано | 06.05.01 18:29 |
|
aaa problem mi beshe che ne moga da popylvam v tekstovoto pole i za tova si gi napravih area
| |
Тема
|
Re: Как да напиша този скрипт
[re: edmon]
|
|
Автор |
hrisunko (Наблюдател) |
Публикувано | 06.05.01 18:42 |
|
Да си предтавим таблица с n на брой клетки. Извиквайки цялата информация от две клетки и ги представя като <input type="text" name="new1" value="стойността на тази клетка"> то ще ми излезат n на брой реда като всеки от тях ще изглежда например така:
<input type="text" name="new1" value="2000">
<input type="text" name="new1" value="2001">
<input type="text" name="new1" value="2002"> и т.н.
Но към всеки от тях ще има например <input type="hidden" name="primary" value="уникален номер в таблицата">
Аз искам да променя тези 2000, 2001, 2002 с други цифри и всички наведнъж да се обработят от UPDATE... SET... WHERE
Всички тези редове имат <input type="text"> с едно и също име - $new1. Съответно и променливата, която се създава ще бъде с това име за всичко -> припокриват се и остава само последната стойност.
Така е и за $new2 - втората клетка, която искам да променя.
Мислех си че може да стане нещо с foreach или do...while.... но не го доизмислих.
| |
Тема
|
Re: Как да напиша този скрипт
[re: hrisunko]
|
|
Автор | traktorist (Нерегистриран) |
Публикувано | 06.05.01 19:29 |
|
На веднъж не можеш да направиш UPDATE на едно поле и множество записи освен ако не е една и съща стойността с която ще го правиш, с цикъл не никакъв проблем. Кръщаваш именат на полетата във формата примерно new1...new. и след това с простичък цикъл.
си взимаш данните и ги буташ в SQL заяваката.
<цикъл>
a = $new".$i.";
$qmysql="UPDATE <table> SET <име на поле> = a WHERE <ключ>";
mysql_query($qmysql);
<край на цикъла>
| |
Тема
|
Re: Как да напиша този скрипт
[re: hrisunko]
|
|
Автор |
ViruS (Master) |
Публикувано | 06.05.01 19:42 |
|
Ами защо по дяволите всичките ти полета трябва да се казват new1? Не е ли по-добре да ги кръстиш new1, new2, ..., newN. Ако не се сещаш как да ги обходиш с цикъл, пробвай с $GLOBALS["new$i"] ;-)
btw, така и така ползваш числови индекси за fetch-натия масив... що не ползваш mysql_fetch_row() ?
ViruS
| |
Тема
|
Re: Как да напиша този скрипт
[re: hrisunko]
|
|
Автор |
bofh () |
Публикувано | 06.05.01 21:10 |
|
<?
$NumCols=6;
while($row=mysql_fetch_row($result))
{
$rowcnt++;
for($col=1;$col<=$NumCols;$col++){
echo"<td>";
if($col<5){
echo $row[$col] . "</td>";
}else{
echo "<input type=\"text\" name=\"dbFld[[$rowcnt][$col]]\" value=\"$row[$col]\"></td>";
}
}
}
Това за извеждането на екрана. Писал съм го на notepad, и набързо, но
$numcols както се сещаш ти съдържа броя на колоните в реда. Може
да се реализира и с foreach,но така или иначе идеята ми беше да пазя
индекс-а та затова е с for. Тоя if дето съм го сложил е имайки едно наум,
че все пак текстовите полета принадлежат на колони 5 и 6. По този начин
ще получиш input type с name="dbFld[[1][5]]"" където x e номер на реда,у
на колоната. И съответно лесно можеш да разбереш после кое за къде е.
(така отпада нуждата от пазене на твоя key освен ако нямаш трити записи)
Тоя номер с Update дето си го замислил, нещо не ми се вижда много реализуем,
ма предполагам че salle ще ти измисли нещо, по принцип и Replace (това е
като хибрид между UPDATE и INSERT) e бавничъk.
Малка корекциика, та после данните ще са ти достъпни чрез
($dbFld["[$rowcnt][$col]"]);
bofh
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|