PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: коротенький вопросик Достаточно ДА или НЕТ
vsll
Отправлено: 04 Апреля, 2011 - 19:42:31
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Можно ли отправить значение переменной, которая является массивом, в базу данных от одной кнопки на чистом php (без использования js (чекбоксов))?

____


Ну если профи молчат, то я предполагаю, что наверное нет, тем более, что я уже пыталась и у меня ничего не получилось))) без js в данном случае, видимо, не обойтись...
(Добавление)
Напишу сюда, чтобы не плодить темы. Записала так:

PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['save'])) {
  2.                 $weblink_ids = "";
  3.                 if (isset($_POST['check_mark']) && is_array($_POST['check_mark'])) {
  4.             foreach ($_POST['check_mark'] as $thisnum) {
  5.                 if (isnum($thisnum)) { $weblink_ids .= ($weblink_ids ? "," : "").$thisnum; }
  6.                 }
  7.                 $result = dbquery("UPDATE ".DB_WEBLINKS." SET weblink_cy='".$_POST['weblink_cy']."' WHERE weblink_id IN (".$weblink_ids.")");
  8.                 }
  9.                 redirect(FUSION_SELF.$aidlink."&weblink_cat_id=$weblink_cat&status=su");
  10. }


.........................

CODE (htmlphp):
скопировать код в буфер обмена
  1. echo "<form name='inputform' method='post'>\n";


................

PHP:
скопировать код в буфер обмена
  1. echo "<table class='base'>\n";
  2. while ($data2 = dbarray($result2)) {
  3. $cell_color = ($i % 2 == 0 ? "confidence" : "delicacy");
  4. echo "<tr class='$cell_color'>\n";
  5. echo "<td><input type='checkbox' name='check_mark[]' value='".$data2['weblink_id']."' /> \n";
  6. echo "<a href='$data2[weblink_url]' target='_blank'>".$data2['weblink_name']."</a></td>\n<td>\n";
  7. preg_match("/^(http:\/\/)?([^\/]+)/i", $data2['weblink_url'], $host);
  8. preg_match('/<tcy[^>]+value="([^"]*)"/i', file_get_contents('http://bar-navig.yandex.ru/u?url='.$host[0].'&show=1'), $m);
  9. if ($weblink_cy = $m[1]) {
  10. echo "<input type='text' class='infogr' name='weblink_cy' value='".$weblink_cy."' readonly='readonly'/>\n";
  11. }
  12.  echo "</td>\n</tr>\n";
  13. $i++;
  14. }


............ ну дальше сам js он работает, здесь правильно

CODE (htmlphp):
скопировать код в буфер обмена
  1. echo "<p>\n<a href='#' onclick=\"javascript:setChecked('inputform','check_mark[]',1);return false;\">Check All</a> ::\n";
  2.                 echo "<a href='#' onclick=\"javascript:setChecked('inputform','check_mark[]',0);return false;\">Uncheck All</a>\n</p>\n";
  3.                 echo "</td>\n</tr>\n";
  4.                 echo "</table>\n";
  5.                 echo "<p class='center'><input type='submit' name='save' value='".$locale['525']."' class='button' /></p>\n";
  6.                 echo "</td>\n<td class='width12'>&nbsp;</td>\n</tr>\n</table>\n</form>\n";
  7.                 echo "<script type='text/javascript'>\n"."function setChecked(frmName,chkName,val) {\n";
  8.                 echo "dml=document.forms[frmName];\n"."len=dml.elements.length;\n"."for(i=0;i < len;i++) {\n";
  9.                 echo "if(dml.elements[i].name == chkName) {\n"."dml.elements[i].checked = val;\n}\n}\n}\n";
  10.                 echo "</script>\n";    


Всё равно для всех id в колонке weblink_cy пишет только одно последнее значение ТИЦ, как правильно записать?
Вот pic чтобы легче представить

(Отредактировано автором: 04 Апреля, 2011 - 22:03:45)

 
 Top
movEAX
Отправлено: 04 Апреля, 2011 - 21:42:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Какая-то каша в голове после прочитанного.
Пальцем в небо: json вам не подойдет?


-----
армия.. самое убогое место
 
 Top
vsll
Отправлено: 04 Апреля, 2011 - 21:46:22
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




movEAX Мне не нужна динамика, мне нужно одной кнопкой отправить спарсенные ТИЦ из админки в колонку weblink_cy в базе данных, чтобы не тыкать возле каждой ссылки... Ошибка в первом коде, всё остальное для информации

(Отредактировано автором: 04 Апреля, 2011 - 21:48:34)

 
 Top
OrmaJever
Отправлено: 04 Апреля, 2011 - 22:05:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Vasiliya пишет:
Можно ли отправить значение переменной, которая является массивом, в базу данных от одной кнопки на чистом php

Записать масив можнос помощью serialize(), затем когда достаёшь используешь unserialize().
А от одной кнопочти ты уже сама написала Улыбка

(Отредактировано автором: 04 Апреля, 2011 - 22:06:05)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vsll
Отправлено: 04 Апреля, 2011 - 22:25:45
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




OrmaJever спасибо, но у меня переменная = одна колонка в базе данных, но значения в этой колонке разные в зависимости от строки (id ссылки), и нужно одним разом обновить значения всех строк в одной колонке. Может у кого-нибудь есть рабочий пример?

P.S. Мой пример изменяет значения всех строк, но для всех id пишет одно и то же значение (последнее, 4200, см. картинку в первом сообщении), ошибка гдето здесь
PHP:
скопировать код в буфер обмена
  1. ("UPDATE ".DB_WEBLINKS." SET weblink_cy='".$_POST['weblink_cy']."' WHERE weblink_id IN (".$weblink_ids.")")

(Отредактировано автором: 04 Апреля, 2011 - 22:51:00)

 
 Top
EuGen Администратор
Отправлено: 05 Апреля, 2011 - 12:12:06
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




На первоначальный вопрос ответ: Да
Если я смог бы подробнее понять, что, где и при каких условиях следует обновлять - помог бы более предметно


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 05 Апреля, 2011 - 17:33:10
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Я уже сама не понимаю, что мне надо)))

Изначально идея была такая, есть функция которая получает из удалённого файла значения ТИЦ, которые для каждого ресурса соответственно разные.
Есть колонка в базе с url этих ресурсов и есть колонка в базе для размещения в ней полученных с помощью функции значений ТИЦ (всё это в одной таблице).
как из скрипта который получает и отображает url и ТИЦ отправить значения ТИЦ в соответствующую колонку в базе?

p.s. для всех url в таблице соответственно есть id
 
 Top
EuGen Администратор
Отправлено: 05 Апреля, 2011 - 17:42:40
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Тогда я не пойму в чем трудность.
Что такое для Вас "скрипт, который получает и отображает url и ТИЦ".
Мне кажется, что задачи получения данных, записи полученных значений в БД и отображения данных - это 3 разных задачи. А Вы их смешиваете, оттого и не понимаете, чего хотите.
По тому, что сказано выше - что мешает обновлять ТИЦ по условию равенства id ? (где-то в отображаемой форме передаете этот id со значением ТИЦ и делаете обновление. Но подозреваю это не то, что Вы хотите).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 05 Апреля, 2011 - 17:49:31
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




да, в голове мухи)))
на картинке (см. 1-е сообщение) отображена форма в которой в тёмных прямоугольниках зелёными цифрами видны ТИЦ, но получены они не из базы а с помощью file_get_contents, а теперь их нужно отправить в базу
 
 Top
EuGen Администратор
Отправлено: 05 Апреля, 2011 - 17:57:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Так тогда и получается вариант, который я упомянул уже. У Вас, как я понял, связка будет по url.
Свой html сделайте как форму. Передавайте url и значение ТИЦ.
В скрипте поставьте обновление:
UPDATE `pr_table` SET `page_rank`=$page_rank WHERE `url`='$url'


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 05 Апреля, 2011 - 18:02:59
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




я делала уже так, только по id а не url, везде одно и то же значение (например 4200)
у меня отсутствует опция прикрепить файл, а так бы я вам весть скрипт передала

p.s. мне нужно от одной общей кнопки, а не возле каждого url

(Отредактировано автором: 05 Апреля, 2011 - 18:13:24)

 
 Top
EuGen Администратор
Отправлено: 05 Апреля, 2011 - 21:11:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Тогда сделайте обработчик такого вида. В html передавайте массивы url и ТИЦ.
То есть примерно так:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form action='script.php' method='POST'>
  3. <input type='hidden' name='url[]' value=$url[0]>
  4. <input type='hidden' name='pr[]' value=$pr[0]>
  5. $url[0]
  6. <input type='hidden' name='url[]' value=$url[1]>
  7. <input type='hidden' name='pr[]' value=$pr[1]>
  8. $url[1]
  9. {...}
  10. <input type='hidden' name='url[]' value=$url[N]>
  11. <input type='hidden' name='pr[]' value=$pr[N]>
  12. $url[N]
  13. <input type='submit' name='Go'>
  14. </form>
  15.  

Где $url - массив url, которые Вы получили из файла, $pr - массив значений ТИЦ (в соответствии $url[0] - $pr[0] ... $url[N] .. $pr[N])
Обработчик будет прост:
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgUrl=$_POST['url'];
  3. $rgPrs=$_POST['pr'];
  4. for($i=0; $i<count($rgUrl);$i++)
  5. {
  6.    //об экранировании не пишу - не суть
  7.    $db->query("UPDATE `pr_table` SET `page_rank`='".$rgPrs[$i]."' WHERE `url`='".$rgUrl[$i]."'");
  8. }
  9.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 06 Апреля, 2011 - 13:24:00
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




EuGen Вот это по ходу дело. Есть ещё одна идея, вечерком всё попробую)

А ларчик просто открывался)))))) Вставила запрос в базу в сам цикл и всё заработало, не надо и кнопок, и для информации можно просмотреть все показатели на одной странице.

PHP:
скопировать код в буфер обмена
  1. $result2 = dbquery("SELECT * FROM ".DB_WEBLINKS." WHERE weblink_cat='".$data['weblink_cat_id']."' ORDER BY weblink_name");
  2. if (dbrows($result2)) {
  3. $i = 0;
  4. echo "<tr>\n<td>\n";
  5. echo "<div id='box_".$data['weblink_cat_id']."'".$div.">\n";
  6. echo "<table class='base'>\n";
  7.         while ($data2 = dbarray($result2)) {
  8.         sleep(1);
  9.         $cell_color = ($i % 2 == 0 ? "confidence" : "delicacy");
  10.         echo "<tr class='$cell_color'>\n";
  11.         echo "<td><a href='$data2[weblink_url]' target='_blank'>".$data2['weblink_name']."</a></td>\n";
  12.         preg_match("/^(http:\/\/)?([^\/]+)/i", $data2['weblink_url'], $host);
  13.         preg_match('/<tcy[^>]+value="([^"]*)"/i', file_get_contents('http://bar-navig.yandex.ru/u?url='.$host[0].'&show=1'), $m);
  14.         $weblink_cy = $m[1];
  15.         echo "<td>\n<div class='infogr'>".$weblink_cy."</div>\n</td>\n</tr>\n";
  16.         dbquery("UPDATE ".DB_WEBLINKS." SET weblink_cy = '$weblink_cy' WHERE weblink_id = '".$data2['weblink_id']."'");
  17.         $i++;
  18.         }
  19. echo "</table>\n</div>\n</td>\n</tr>\n";
  20. }


enjoy!!! Просто открываешь файл и все показатели ТИЦ в базе обновляются.

А как можно написать задание, чтобы этот файл запускался один раз в три дня?

(Отредактировано автором: 06 Апреля, 2011 - 15:46:47)

 
 Top
EuGen Администратор
Отправлено: 07 Апреля, 2011 - 08:54:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Использовать планировщик. В случае *nix это будет cron, для Win же есть команда AT

И все же я это и имел ввиду в самом начале - что получение, хранение и представление данных - это 3 разных задачи (так у Вас и вышло - просто получаете данные и хаписываете в БД, без всяких кнопок/форм)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB