Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> $_POST несколько данных, Как отправить несколько данных 
V
    Опции темы
ekodrive
Дата 20.10.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



Салам алейкум. Значит так у меня вот такая проблема не как не получается написать скрипт ну короч пункты меню хочу через админ панел изменит места пунктов нуу вверх вниз по ID из баз данных mysql вот сам код.


index.php

Код

<form name="form1" method="post" action="do.php">

<?
$q = "SELECT * FROM blogs ";
$result = mysql_query($q);
$num = mysql_num_rows($result);
$id=$num+1;
for($i=0;$i<$num;$i++){
    $blogs=mysql_fetch_array($result);
    $blogs_id=$blogs['Id'];
    $blogs_name=$blogs['name'];
    echo"<tr><td>$blogs_name</td><td><input name=\"new_id\" type=\"text\" value=\"$blogs_id\"  size=\"1\" /></td></tr>    <input type=\"hidden\" name=\"old_id\" value=\"$blogs_id\">";}
?>
<input type="submit" name="button" id="button" value="ok" />
</form>




do.php

Код

$old_id=$_post['old_id'];
$new_id=$_post['new_id'];
$sql="update blogs set Id='$new_id' where (Id='$old_id')";
mysql_query($sql);
die('<p align=\"center\"><b><font color=\"#990000\"><span style=\"font-size:20pt;\">Yenilik testiqlendi</span></font></b></p>');




пункты меню где то 10 штук.

Это сообщение отредактировал(а) ekodrive - 20.10.2009, 14:56
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
s0lman
Дата 20.10.2009, 15:00 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



ekodrive, с такой постановкой вопросов вряд ли кто поможет...


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
Ипатьев
Дата 20.10.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



ekodrive, начнем с аксиомы.
id записей нельзя трогать ни в коем случае. 
для сортировки записей надо завести специальное поле, и менять только его.

Следующим пунктом надо определиться с интерфейсом. Как будет выглядеть страница, на которой мы будем двигать пункты?
PM MAIL   Вверх
ekodrive
Дата 20.10.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



вы может меня не правильно понели да я умею изменить поле ID  хочу чтоб комплексно изменит по 3   по 5 ID одновременно.
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 20.10.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



во-первых, поле ID менять нельзя.
во-вторых, надо определиться с интерфейсом.
PM MAIL   Вверх
DeamonShan
Дата 20.10.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: 3
Всего: 6



ekodrive, скорее всего Вы не поняли Ипатьева.

Для сортировки строк лучше добавить поле скажем "ord" И уже по нему делать вверх вниз.

А ответ на ваш вопрос:

Чтобы передать несколько ID через форму, нужно предстаит название полей ввиде массива:

<input type=text name="ord[]">
<input type=text name="ord[]">
итд...
<input type=text name="ord[]">


затем передать ord в скрипт и уже обработать его как массив... предварительно нужно связать к ключу "ord" ID строки, чтобы скрипт знал какую строку update-ить.
Затем на выводе просто тупо order by ord и будет результат.

Это сообщение отредактировал(а) DeamonShan - 20.10.2009, 21:34
PM MAIL   Вверх
ekodrive
  Дата 20.10.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



DeamonShan,   да да вы правы я не правильно понел слова нельзя и не возможно Ж) извияюсь нуу забудем. Спосибо большое за помощ но проблема в том что не знаю как делать это. Ну добавил поле ord И вывод по поле ord  ноо как   
Цитата


затем передать ord в скрипт и уже обработать его как массив... предварительно нужно связать к ключу 


какк ?? сума сайти Ж*(
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
youri
Дата 21.10.2009, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(ekodrive @  20.10.2009,  22:03 Найти цитируемый пост)
Спосибо большое за помощ но проблема в том что не знаю как делать это. Ну добавил поле ord И вывод по поле ord


Цитата(Ипатьев @  20.10.2009,  21:26 Найти цитируемый пост)
во-вторых, надо определиться с интерфейсом.


PM   Вверх
ekodrive
Дата 21.10.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



вот index.php 

user posted image

и вот админская часть 

user posted image

Это сообщение отредактировал(а) ekodrive - 21.10.2009, 11:06
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 21.10.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



ну вот, наконец-то мы увидели, чего хочет автор.
у многих здесь да, к сожалению, на картинках гораздо лучше получается, чем словами...

echo "<tr><td>$blogs_name</td><td><input name=\"order[$blogs_id]\" type=\"text\" value=\"$ord\"  size=\"1\" /></td></tr>";

в скрипте имеем массив $_POST['order'], в котором ключи  id записей, а значения - порядок.



PM MAIL   Вверх
ekodrive
Дата 21.10.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



вот что получилось

action.php

Код

<body><form name="form1" method="post" action="ord.php">
<?


$q = "SELECT * FROM blogs ";
$result = mysql_query($q);
$num = mysql_num_rows($result);
$id = $num+1;
for($i=0;$i<$num;$i++){
    $blogs = mysql_fetch_array($result);
    $blogs_id = $blogs['Id'];
    $blogs_name = $blogs['name'];
    $ord = $blogs['ord'];
    echo"<tr><td>$blogs_name</td><td><input name=\"order[$blogs_id]\" type=\"text\" value=\"$ord\"  size=\"1\" /></td></tr><input type=\"hidden\" name=\"old_ord[$ord]\" value=\"$ord\">";}
?>
 <input type="submit" name="button" id="button" value="ok" />
</form>






ord.php


Код

<?

$new_ord = $_POST['order'];
$old_ord = $_POST['old_ord'];
$sql ="update blogs set ord='$new_ord' where (ord='$old_ord')";
mysql_query($sql);
die('OOK');

?>




не получилось нуу  даже пробовал выводить на пример echo "$new_ord";  вывдится Array как быть?

--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
youri
Дата 21.10.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



id - это такое поле, которое должно использоваться вместо old_ord

p.s. http://phpfaq.ru/debug
PM   Вверх
ekodrive
Дата 21.10.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



вот так пробовал тоже не пашет.

action.php

Код

<form name="form1" method="post" action="ord.php">
<?
$q = "SELECT * FROM blogs ";
$result = mysql_query($q);
$num = mysql_num_rows($result);
$id = $num+1;
for($i=0;$i<$num;$i++){
    $blogs = mysql_fetch_array($result);
    $blogs_id = $blogs['Id'];
    $blogs_name = $blogs['name'];
    $ord = $blogs['ord'];
    echo"<tr><td>$blogs_name</td><td><input name=\"order[$blogs_id]\" type=\"text\" value=\"$ord\"  size=\"1\" /></td></tr><input type=\"hidden\" name=\"id_info[$blogs_id]\" value=\"$blogs_id\">";}
?>
 <input type="submit" name="button" id="button" value="ok" />
</form>



ord.php

Код

<?
$new_ord = $_POST['order'];
//$old_ord = $_POST['old_ord'];
$id_info = $_POST['$id_info'];
$sql ="update blogs set ord='$new_ord' where (id='$id_info')";
mysql_query($sql);
die('OOK');
?>



Это сообщение отредактировал(а) ekodrive - 21.10.2009, 13:14
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
DeamonShan
Дата 21.10.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: 3
Всего: 6



Код

<?
$new_ord = $_POST['order'];
//$old_ord = $_POST['old_ord'];
$id_info = $_POST['$id_info'];
$sql ="update blogs set ord='$new_ord' where (id='$id_info')";
mysql_query($sql);
die('OOK');
?>


order у вас массив а не просто переменная, ключи которого ID поля, например, если у вас в таблице 5 записей со значениями ID = {1, 2, 5, 8, 12}

то Вы для каждого ключа массива должны делать update, а не как вы сделали...

Вот примерно так:

Код

$new_ord = $_POST['order'];
function updateOrdering ($item, $key) {
    $sql ="update blogs set ord='$item' where id='$key'";
    mysql_query($sql);
}

array_walk ($new_ord, 'updateOrdering');



А это:
Код

<input type=\"hidden\" name=\"id_info[$blogs_id]\" value=\"$blogs_id\">

излишнее, т.е. этого скрытого поля не надо.

Добавлено @ 13:42
Код

$q = "SELECT * FROM blogs ";
$result = mysql_query($q);
while($blogs = mysql_fetch_array($result)){
    $blogs_id = $blogs['Id'];
    $blogs_name = $blogs['name'];
    $ord = $blogs['ord'];
    echo"<tr><td>$blogs_name</td><td><input name=\"order[$blogs_id]\" type=\"text\" value=\"$ord\"  size=\"1\" /></td></tr>";}
?>


наверное лучше так - первый скрипт...

Это сообщение отредактировал(а) DeamonShan - 21.10.2009, 13:45
PM MAIL   Вверх
ekodrive
Дата 21.10.2009, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 4.1.2006

Репутация: 0
Всего: 0



 спасибо большое не понел тоько одно от куда брать? $key если 


Цитата

<input type=\"hidden\" name=\"id_info[$blogs_id]\" value=\"$blogs_id\">

излишнее, т.е. этого скрытого поля не надо.


Это сообщение отредактировал(а) ekodrive - 21.10.2009, 13:51
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1394 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.