[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача имени Inputа методом POST
Aleksander
Всем привет.

Вот такая проблема:
Ресую форму с инпутом Текст, Этому Тексту даю значение и имя из базы данных, value это предложение, а name это ID из базы.

Подскаите как в скрипт который обрабатывает эту форму передать не только значение текстового поля но и его name(name содержит ID,это для запроса нужно)

?????


Вот я INPUT делаю:
echo "<Input type='Text' value='".$Pr1['Name_Type_Facilities']."' size=50 maxlength=50 name=".$Pr1['ID_Type_Facilities'].">";



Спустя 5 минут, 32 секунды (29.03.2009 - 18:04) waldicom написал(а):
Я не сильно много понял из текста выше, но если не знаешь имя поля, которое передается через $_POST, то придется перебирать весь массив. Хотя как его потом искать - не знаю.

Спустя 4 минуты, 7 секунд (29.03.2009 - 18:08) Нимфа написал(а):
я просто делала невидемое поле echo "<input type="hidden" name="name" value=".$Pr1.">" а текстовому инпуту давала простое имя (не из БД)

Спустя 8 минут, 33 секунды (29.03.2009 - 18:17) Aleksander написал(а):
Цитата (Нимфа @ 29.03.2009 - 15:08)
я просто делала невидемое поле echo "<input type="hidden" name="name" value=".$Pr1.">" а текстовому инпуту давала простое имя (не из БД)

А как потом привязать имя скрытого поля к содержимому текстового поля?smile.gif
Ведь я собираюсь мастерить запрос из этого.

Спустя 1 минута, 40 секунд (29.03.2009 - 18:18) Aleksander написал(а):
Цитата (waldicom @ 29.03.2009 - 15:04)
Я не сильно много понял из текста выше, но если не знаешь имя поля, которое передается через $_POST, то придется перебирать весь массив. Хотя как его потом искать - не знаю.

Да не, имя то я знаю вот оно $Pr1['ID_Type_Facilities']

Спустя 4 минуты, 12 секунд (29.03.2009 - 18:23) Нимфа написал(а):
по имени: у текстового например name="Pr1_name" у скрытого name="Pr1_id". И ты будешь знать, чсто это пара. Может это и не самое лучшее ршение, но мне так удобно очень.

Спустя 2 минуты, 47 секунд (29.03.2009 - 18:25) Нимфа написал(а):
Цитата
Да не, имя то я знаю вот оно $Pr1['ID_Type_Facilities']
не знаешь! В другом скрипте, куда твоя форма отправляет значение, нет этого имени! Если ты только заново в БД за ним не полезешь

Спустя 2 часа, 27 минут, 10 секунд (29.03.2009 - 20:53) Kuliev написал(а):
Aleksander
Не знаю поможет тебе или нет !!!
Используй пример Нимфы
PHP
<?
$form "<form action=".$_SERVER['PHP_SELF']." method=POST> ";
while ( 
$row mysql_fetch_assoc($result))
{

          
$form.= "<input type=text name=pr1_name value='".$row['ID_Type_Facilities']."'><input type=hidden name=pr1_id value='".$row['id']."'><br>";
 
}

$form.="</form>";

echo 
$form;


Спустя 1 час, 22 минуты, 3 секунды (29.03.2009 - 22:15) twin написал(а):
Ну чего вы человека пугаете... Все можно узнать без всяких циклов:
PHP
<?
if(
$_POST)
{
$keys = array_keys($_POST);
$ID_Type_Facilities = $_POST[$keys[0]]['ID_Type_Facilities'];
echo "`".$keys[0]."`='".$ID_Type_Facilities."'";
}
Нужно только порядок в массиве POST знать, то есть очередность в форме.

Спустя 13 часов, 33 минуты, 31 секунда (30.03.2009 - 11:48) Kuliev написал(а):
Aleksander
PHP
<?
if(
$_POST)
{

 echo 
"<pre>";
 
print_r($_POST);

}



Вот смотри, что тебе приходит из массива $_POST ( т.е. из ФОРМЫ)...

Спустя 5 часов, 48 минут, 13 секунд (30.03.2009 - 17:36) Aleksander написал(а):
Угу, вроде понял как всё это работает, только как оказалось не подходит это для моей задумки, может вы чтонить посоветуете:
Есть прайс лист, длинный(или не очень) список, описание услуги и цена.
Мне нужно организовать скрипт чтобы можно было изменять содержимое этого списка(цену,описание услуги).
Тоесть на странице выводится таблица с двумя колонками,в первой Текстовый инпут с описанием услуги , а во второй колонке Текстовый инпут с ценой услуги:
echo "<Input type='Text' value='".$Pr1['Name_Type_Facilities']."' size=50 maxlength=50 name='".$Pr1['ID_Type_Facilities']."'>";
echo "<Input type='Text' value='".$Pr1['Price_Facilities']."' name=".$Pr1['ID_Type_Facilities']."><br>";

Строк в этой таблице может быть много,я нахожу нужную мне строку, вношу изменения в (цену,или в описание),нажимаю сабмит,и скрипт обновляет таблицу.
Предыдущий метод не подходит, так как имена у двух полей(цена и описание одинаковые,это ID из таблицы , поэтому массив POST выводит только имена и значения поля где лежит цена, так как оно идёт после поля с описанием)
Как то так, что тут можно придумать?

Спустя 3 минуты, 49 секунд (30.03.2009 - 17:40) waldicom написал(а):
Тут можно использовать что-то типа:
HTML
<input name="type[$id] ... />"

Спустя 22 минуты, 50 секунд (30.03.2009 - 18:03) Aleksander написал(а):
Цитата (waldicom @ 30.03.2009 - 14:40)
Тут можно использовать что-то типа:
HTML
<input name="type[$id] ... />"

Тоесть ты предлогаеш так сделать:
echo "<Input type='Text' value='".$Pr1['Name_Type_Facilities'].">";
echo "<Input type='Text' value='".$Pr1['Price_Facilities'].">
echo "<input name=$Pr1['ID_Type_Facilities']><br>";

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

Спустя 49 минут, 42 секунды (30.03.2009 - 18:53) Kuliev написал(а):
Цитата (Aleksander @ 30.03.2009 - 15:03)
Цитата (waldicom @ 30.03.2009 - 14:40)
Тут можно использовать что-то типа:
HTML
<input name="type[$id] ... />"

Тоесть ты предлогаеш так сделать:
echo "<Input type='Text' value='".$Pr1['Name_Type_Facilities'].">";
echo "<Input type='Text' value='".$Pr1['Price_Facilities'].">
echo "<input name=$Pr1['ID_Type_Facilities']><br>";

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

Попробуй так
PHP
<?
echo 
"<form action=update.php method=post>";
echo 
"<Input type=text name=name_upd value='".$Pr1['Name_Type_Facilities'].">";
echo 
"<Input type=text name=price_upd value='".$Pr1['Price_Facilities'].">";
echo 
"<input  type=checkbox name=id[".$Pr1['ID_Type_Facilities']."] ><br>";
echo 
"<input type=submit name=update value=update>";
echo 
"</form>";


Для id используй чекбос т.е. только отмеченные поля будут обновляться в базе согласно ID smile.gif

Спустя 2 часа, 17 минут, 39 секунд (30.03.2009 - 21:10) Aleksander написал(а):
Цитата (Kuliev @ 30.03.2009 - 15:53)
Цитата (Aleksander @ 30.03.2009 - 15:03)
Цитата (waldicom @ 30.03.2009 - 14:40)
Тут можно использовать что-то типа:
HTML
<input name="type[$id] ... />"

Тоесть ты предлогаеш так сделать:
echo "<Input type='Text' value='".$Pr1['Name_Type_Facilities'].">";
echo "<Input type='Text' value='".$Pr1['Price_Facilities'].">
echo "<input name=$Pr1['ID_Type_Facilities']><br>";

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

Попробуй так
PHP
<?
echo "<form action=update.php method=post>";
echo "<Input type=text name=name_upd value='".$Pr1['Name_Type_Facilities'].">";
echo "<Input type=text name=price_upd value='".$Pr1['Price_Facilities'].">";
echo "<input  type=checkbox name=id[".$Pr1['ID_Type_Facilities']."] ><br>";
echo "<input type=submit name=update value=update>";
echo "</form>";


Для id используй чекбос т.е. только отмеченные поля будут обновляться в базе согласно ID smile.gif

Спасибо за наводку:)
Мозг уже просто закипает, но развязка уже близко,прям чую что вот вот и всё уже:)
Спортивный азарт проснулся:)))

Спустя 1 час, 29 минут, 35 секунд (30.03.2009 - 22:40) Aleksander написал(а):
А есть ли способ узнать количество всех чекбоксов,и отмеченых и не отмеченых?
Просто по нажатию сабмита , массив POST с чекбоксами содержит только отмеченые.

Спустя 16 минут, 49 секунд (30.03.2009 - 22:57) twin написал(а):
Цитата
Предыдущий метод не подходит,
Ну почему не подходит, просто немного фантазии:
PHP
<?
if(
$_POST)
{
    foreach(
$_POST as $id => $arr)
    {
    
$key array_keys($arr);
    
$arr array_map("mysql_escape_string",$arr );
    
$key array_map("mysql_escape_string",$key );    
    echo 
"`".$key[0]."`='".$arr[$key[0]]."', `".$key[1]."`='".$arr[$key[1]]."' WHERE `id`='".(int)$id."'<br>";
    }

}
?> 
    
<form action="" method="post">
<input name="1[ID_Type_Facilities]" type="text" />
<input name="1[Price_Facilities]" type="text" />
<input name="2[ID_Type_Facilities]" type="text" />
<input name="2[Price_Facilities]" type="text" />    
    <input name="" type="submit" />
    </form>

Спустя 2 минуты, 46 секунд (30.03.2009 - 23:00) Aleksander написал(а):
Такс с этим сам понял, через скрытое поле можно передать количество выбраных записей из базы, а кол-во чекбоксов равно кол-ву записей:)

Спустя 20 минут, 48 секунд (30.03.2009 - 23:20) twin написал(а):
Ну плохо понял значит. Не нужны тебе чекбоксы, сразу все можно обновить:
PHP
<?
if(
$_POST)
{
$querys = array();
    foreach($_POST as $id => $arr)
    {
    $key = array_keys($arr);
    $arr = array_map("mysql_escape_string",$arr );
    $key = array_map("mysql_escape_string",$key );    
    $querys
[] =  "`".$key[0]."`='".$arr[$key[0]]."', `".$key[1]."`='".$arr[$key[1]]."' WHERE `id`='".(int)$id."'<br>";
    }
if(
count($querys) > 0)
    foreach($querys as $query)
    echo "UPDATE `table` SET ".$query;
    //mysql_query("UPDATE `table` SET ".$query);

}


?> 
    
<form action="" method="post">
<input name="1[ID_Type_Facilities]" type="text" />
<input name="1[Price_Facilities]" type="text" />
<input name="2[ID_Type_Facilities]" type="text" />
<input name="2[Price_Facilities]" type="text" />    
    <input name="" type="submit" />
    </form>

Спустя 32 минуты, 21 секунда (30.03.2009 - 23:53) anonymouse написал(а):
К слову об удобности кода:

Посоветовал бы формы и все такое писать следующим образом - легко быстро и не тратишь время на открывание кавычек закрывание и т.д.

Конечно заранее надо вытащить текст из массива в переменные и тогда очень просто.
+ после текста echo <<<TEXT1 не должно быть ни одно пробела или символа текста.

пример

PHP
echo <<<TEXT1
<form action="update.php" method="post">
<Input type="text" name="name_upd" value="$Pr1_Name_Type_Facilities">
<Input type="text" name="price_upd" value="$Pr1_Price_Facilities">
<input  type="checkbox" name="$Pr1_ID_Type_Facilities">
<br>
<input type="submit" name="update" value="update">
</form>
TEXT1;

Прикол в том что можно использовать исходной вид HTML-а
+ использовать переменные PHP.

Спустя 5 минут, 19 секунд (30.03.2009 - 23:58) waldicom написал(а):
Цитата
К слову об удобности кода:

Посоветовал бы формы и все такое писать ...

...с помощью темплейтов

Спустя 5 дней, 14 часов, 43 минуты, 43 секунды (6.04.2009 - 14:42) Aleksander написал(а):
В общем всё разрулилось через array_keys , всем спасибо!

Спустя 5 часов, 35 секунд (6.04.2009 - 19:42) Kuliev написал(а):
Цитата (Aleksander @ 30.03.2009 - 19:40)
А есть ли способ узнать количество всех чекбоксов,и отмеченых и не отмеченых?
Просто по нажатию сабмита , массив POST с чекбоксами содержит только отмеченые.

А смысл???
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.