Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: обработка одинаковых полей формы
 
 автор: scva   (13.09.2010 в 22:38)   письмо автору
 
 

есть форма, которая содержит к примеру такие поля

<input type="text" name="title">
<input type="text" name="articul">

таких полей может быть определенное количество
<input type="text" name="title">
<input type="text" name="articul">
<input type="text" name="title">
<input type="text" name="articul">
<input type="text" name="title">
<input type="text" name="articul">


как их обработать, то есть чтобы скрипт выводил все данные из этих полей
к примеру:
монитор - 568598
мышь - 2164456
клавиатура - 456487

у меня почему то, массив POST формы содержит только одно последнее значение, в данном случаи клавиатура - 456487, что не так?

  Ответить  
 
 автор: neadekvat   (13.09.2010 в 22:59)   письмо автору
 
   для: scva   (13.09.2010 в 22:38)
 

А показать обработчик?

  Ответить  
 
 автор: scva   (13.09.2010 в 23:19)   письмо автору
 
   для: neadekvat   (13.09.2010 в 22:59)
 

примерно так

<?
$result 
count($title);

for (
$i 0$i <= $result$i++) 

{
echo 
'<tr>
<td>
'
.$title.'
</td>
<td>
'
.$articul.'
</td>'
;
}
?>

  Ответить  
 
 автор: neadekvat   (13.09.2010 в 23:27)   письмо автору
 
   для: scva   (13.09.2010 в 23:19)
 

Что значит примерно? Покажите обработчик, который вы используете.

  Ответить  
 
 автор: WapMorgan   (13.09.2010 в 23:20)   письмо автору
 
   для: scva   (13.09.2010 в 22:38)
 

>> у меня почему то, массив POST формы содержит только одно последнее значение, в данном случаи клавиатура - 456487, что не так?
так и будет.
можешь называть поля
<input type="text" name="title"> 
<input type="text" name="articul[]"> 
<input type="text" name="title[]"> 
<input type="text" name="articul[]"> 
<input type="text" name="title[]"> 
<input type="text" name="articul[]">

ну а потом print_r($_POST);
и разберешься

  Ответить  
 
 автор: scva   (13.09.2010 в 23:43)   письмо автору
 
   для: WapMorgan   (13.09.2010 в 23:20)
 

дело пошло , теперь как это все вывести?

  Ответить  
 
 автор: sim5   (13.09.2010 в 23:44)   письмо автору
 
   для: scva   (13.09.2010 в 23:43)
 

Кого, куда, зачем?

  Ответить  
 
 автор: scva   (14.09.2010 в 00:04)   письмо автору
 
   для: sim5   (13.09.2010 в 23:44)
 

<?
$result = count($title);

for ($i = 0; $i <= $result; $i++)

{
echo '<tr>
<td>
'.$title.'
</td>
<td>
'.$articul.'
</td</tr>';
}
?>
и тд, в зависимости от кол-ва полей

  Ответить  
 
 автор: sim5   (14.09.2010 в 00:14)   письмо автору
 
   для: scva   (14.09.2010 в 00:04)
 

Вопрос - вы так пытались сделать уже, и если да, то что получалось?

  Ответить  
 
 автор: scva   (14.09.2010 в 00:25)   письмо автору
 
   для: sim5   (14.09.2010 в 00:14)
 

выводит array

  Ответить  
 
 автор: sim5   (14.09.2010 в 00:52)   письмо автору
 
   для: scva   (14.09.2010 в 00:25)
 

Ой как плохо.... Настроить локальный сервер (РНР установки):
1. Вывод всех предупреждений и ошибок
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
2. register_globals указать значение Off, после чего обращаться к переменным как $_POST['имя_переменной'] или $_GET['имя_переменной'] (в зависимости от метода передачи формы).

  Ответить  
 
 автор: scva   (14.09.2010 в 12:54)   письмо автору
 
   для: sim5   (14.09.2010 в 00:52)
 

бля почему все такие умные.
Стоит это у меня все

нет никаких ошибок, выводит только array

  Ответить  
 
 автор: scva   (14.09.2010 в 12:57)   письмо автору
 
   для: sim5   (14.09.2010 в 00:52)
 

вот ошибка
Array to string conversion

  Ответить  
 
 автор: Tonik992   (14.09.2010 в 13:34)   письмо автору
 
   для: scva   (14.09.2010 в 12:57)
 

<form action="?" method="post">
<input type="text" name="title[]">
<input type="text" name="articul[]">
<input type="text" name="title[]">
<input type="text" name="articul[]">
<input type="text" name="title[]">
<input type="text" name="articul[]">
<input type="submit">
</form>
<?php
print_r
($_POST);
?>

Оно тебе с самого начала выдаст Array();
А ты попробуй ввести значения и нажать на кнопку.. Результат как в раю

  Ответить  
 
 автор: sim5   (14.09.2010 в 13:38)   письмо автору
 
   для: scva   (14.09.2010 в 12:57)
 

Если все стоит и коли вы такой умник, то с какого тогда перепугу:
<? echo '<tr><td>' $title '</td>....'
а не:
<? echo '<tr><td>' $_POST['title]' '</td>....'
?
И что за ересь так выводить массив?

  Ответить  
 
 автор: scva   (14.09.2010 в 17:12)   письмо автору
 
   для: sim5   (14.09.2010 в 13:38)
 

потому что у меня в начале скрипта стоит
if (isset($_POST['title'])) {$title = strip_tags($_POST['title']);}
и как вывести массив правильно?

  Ответить  
 
 автор: sim5   (14.09.2010 в 17:42)   письмо автору
 
   для: scva   (14.09.2010 в 17:12)
 

Правильно, это как сказать... для чего? Ну во-первых strip_tags, это отдельный разговор. Но бог с ним. Данные вы же получаете не для того, чтобы сразу по их приходу выплюнуть в браузер, а значит должна быть какая-то конкретная задача. Кроме этого, все зависит от того, как у вас организована форма.
Во-первых - все, что вы получили от формы, это уже массив. А если вы именуете одноименные поля формы как массивы, то это будут вложенные массивы.
Организовывать цикл по числу элементов массива некоторых из элементов формы можно конечно, но когда оправдано это, иначе нет смысла.
Вывести массив echo имя_массива, нельзя, это не строка, на что и получена ошибка. А как вывести конкретный массив, то как говорилось выше, все зависит от того, как организована форма, и если вам требуется выводить парами значения title и articul, то лучше именовать имена полей формы так, чтобы эти значения были массивом, которые в свою очередь будут вложены в массив.
Если кроме этих полей форма более ничего не содержит, даже имя кнопки submit, то родителем для них может быть сам массив POST, иначе лучше добавить им массив родитель, например:
<form action="" method="post">
<input type="text" name="fld[0][title]" value="1">
<input type="text" name="fld[0][articul]" value="1">
<input type="text" name="fld[1][title]" value="2">
<input type="text" name="fld[1][articul]" value="2">
<input type="text" name="fld[2][title]" value="3">
<input type="text" name="fld[2][articul]" value="3">
<input type="submit" value="Send">
</form>
Посмотрите, что содержит в этом случае массив POST.
<?
echo "<pre>";
print_r($_POST);
А вот так вывести содержимое:
<?
foreach($_POST['fld'] as $val) echo $val['title'] . " - " $val['articul'] . "<br>";

  Ответить  
 
 автор: scva   (14.09.2010 в 23:21)   письмо автору
 
   для: sim5   (14.09.2010 в 17:42)
 

вот теперь все понял, спасибо что разложили по полочкам

  Ответить  
 
 автор: Trianon   (14.09.2010 в 23:40)   письмо автору
 
   для: sim5   (14.09.2010 в 00:52)
 

>Ой как плохо.... Настроить локальный сервер (РНР установки):
>1. Вывод всех предупреждений и ошибок
>error_reporting = E_ALL & ~E_NOTICE

Включать нужно и нотайсы. Без них бОльшая половина начинающих ляпов не видна.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования