2013-07-25 3 views
0

У меня есть html-форма, которая содержит 2 текстовых поля и текстовую область. Я извлекаю данные из формы, используя php-код, чтобы отобразить его на другой странице.Обработка PHP-форм

HTML код формы:

<html> 

<form name="addsg" method="POST" action="validate.php"> 

<div class="label">name</div> 
<div class="response"><span><textarea class="textarea" name="name"></textarea></span></div> 


<div class="label">age</div> 
<div class="response"><span><input class="textbox" name="age" type="text" size="5" maxlength="5" value="" /></span></div> 


<div class="label">place</div> 
<div class="response"><span><input class="textbox" name="place" type="text" value="" /></span></div> 

<div class="submit_section button"> 
<input id="generate" type="submit" name="script" value="generate" /> 
</div> 

</form> 
</html> 

PHP код:

<?php 

    if (!empty($_POST['name']) 
    && !empty($_POST['age']) 
    && !empty($_POST['place'])) 

    { 
echo '<textarea name="textarea" id="textarea" cols="100" rows="5" readonly>'; 

     echo "{$_POST['name']},{$_POST['age']} years old, from {$_POST['place']}"; 
    echo '</textarea>'; 
    } 
?> 

Если я ставлю только одно имя в имя текстового поля колонки, я буду получать такой вывод

anoop,26 years old, from IN 

Но если я помещаю несколько имен в столбец имен (с тем же возрастом и местом), вывод, показывающий вот так:

anoop 
Tom,26 years old, from IN 

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

anoop,26 years old, from IN 
Tom,26 years old, from IN 

какие-либо предложения?

+0

Я попытался придумать что-то без успеха. Однако следующая ссылка поможет вам достичь своей цели. http://www.tizag.com/phpT/foreach.php –

+0

Это помогло мне ... Большое спасибо .. – acr

+0

Добро пожаловать. Вы должны отправить свое решение в качестве ответа. –

ответ

0
<? 
$name_array = explode("\n", $_POST['name']); //use the new line char as the separator 
?> 

<textarea name="textarea" id="textarea" cols="100" rows="5" readonly> 
<? 
foreach($name as $name_array) 
    echo $name.', '.$_POST['age'].' years old, from '.$_POST['age']."<br/>\n"; 
?> 
</textarea> 
+0

это не работает, давая синтаксическую ошибку foreach. Я изменил ее так: $ name_array = explode ("\ n", $ _POST ['name']) ; // используем новую строку char как разделитель foreach ($ name_array as $ name) echo $ name. ','. $ _ POST ['age']. ' лет, от «. $ _ POST ['place']." \ n "; ?> 'Единственная проблема с этим - это не разрыв между каждой строкой. все показаны как одна строка 'anoop, 25 лет, от abc tom, 25 лет, от abc' – acr

+0

Внутри текстовой области« \ n »должна начинаться новая строка. Убедитесь, что вы используете двойные кавычки, а не одинарные кавычки. За пределами области текста это может быть
. –

+0


внутри текстового поля не очень хорошее решение. –

0

Вы можете поместить несколько текстовых полей для имени и объявить имя как массив.

, например:

<input type="text" name="ex[]" id="ex"/> 
<input type="text" name="ex[]" id="ex1"/> 

PHP:

for($1=0;$i<count($_POST['ex']);$i++){ 

echo $_POST['ex'][$i]; 

} 
+0

размещение нескольких текстовых полей здесь невозможно, иногда может быть более 50 имен. Мне нужно обработать это в пределах одного текстового поля (одна строка содержит только одно имя) – acr

+0

@ user1128648 Я отредактировал ответ для Маха. Похоже, он не правильно отпечатал свой код. Посмотрите, поможет ли это вам. –

+0

@ Фред: в этом случае невозможно положить несколько текстовых полей. пользователь будет добавлять только одно имя в одну строку. поэтому я пытаюсь взять каждую строку в виде отдельных записей. – acr

0

Попробуйте, это должно работать.

<? 
$lines = array(); 
$names = explode("\n", $_POST['name']); 

foreach($names as $name) 
    $lines[] = $name.', '.$_POST['age'].' years old, from '.$_POST['age']; 
?> 

<html> 
<body> 
<textarea name="textarea" id="textarea" cols="100" rows="5" readonly> 
<?php implode("\n", $lines); ?> 
</textarea> 
</body> 
</html> 
+0

S: Я пробовал это, но не работал. – acr

+0

Я отредактировал свой пост, попробуйте это. –

+0

@FalkS. Я, например, попробовал отредактированный ответ, и, когда я его протестировал, вернул только поле textarea, без ввода данных из формы. –

0

пытаются использовать эти две функции с заказом: 1- nl2br ($ _ POST [ 'имя']) 2- strip_tags()

может быть, некоторые скрытые HTML-теги является причиной, что

Смежные вопросы