에 문자열 배열 만들기 PHP 세션의 일부로 페이지 (dest.php)가 있습니다. 다른 페이지 (source.php)의 양식이이 항목에 제출 될 때마다, POST
의 문자열을 $_SESSION
변수의 다른 요소로 추가해야합니다. SESSION 변수 (PHP)
POST
변수 (
['name']
,
['gender']
등)을 얻을 양식이 제출 처음으로, 그래서 내가
$_SESSION['name'][0] = $_POST['name']
있을 것이다,
$_SESSION
변수
배열 대응에 추가해야한다는 것입니다 그리고 이후에 source.php에서 submit 할 때마다 새로운
$_POST
개의 변수가 보내질 것이고 dest.php에는 배열에 항상
end($_SESSION['name']) = $_POST['name']
과 같은 배열을 추가해야합니다.
나는 모든 $_SESSION
변수를 테이블에 반향시키려는 dest.php의 일부 PHP를 가지고 있지만 현재 다른 사람들과 다른 문자열을 처리 중입니다.
<form action="petSentence.php" method="POST" accept-charset="UTF-8">
<table><tr><td>
Your name: <input type="text" name="name"></td></tr><tr><td>
<bold>Pick a city</bold></br>
<input type="radio" name="city" value="Portland"> Portland<br>
<input type="radio" name="city" value="Seattle"> Seattle<br>
<input type="radio" name="city" value="Corvallis"> Corvallis</td><td>
<bold>Pick the color(s)</bold>
<input type="checkbox" name="colors[]" value="brown"> brown<br>
<input type="checkbox" name="colors[]" value="red"> red<br>
<input type="checkbox" name="colors[]" value="green"> green<br>
<input type="checkbox" name="colors[]" value="blue"> blue</td></tr>
<tr><td>
Gender: <select name="gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select></td><td>
What Species:
<select name="species">
<option value="cat">cat</option>
<option value="dog">dog</option>
<option value="bird">bird</option>
<option value="chinchilla">chinchilla</option>
</select></td></tr>
<tr><td><input type="submit" value="Submit"></td></tr>
</table>
</form>
어떻게 내가 $_SESSION
배열을 짓고 있어요 예 :
<table>
<?php
for($cntr = 0; $cntr < count($_SESSION['name']); $cntr++)
{
echo '<tr><td><input type="button" name="' . $cntr . '" value="edit"></td><td>';
echo $_SESSION['name'][$cntr] .' adopted a ' . $_SESSION['gender'][$cntr] . ', ' . $_SESSION['colors'][$cntr];
echo $_SESSION['species'][$cntr] . ' when visiting ' . $_SESSION['city'][$cntr] . '!' ;
echo '</td></tr>';
}
?>
</table>
이 참고로, 형태 인 ['name']
변수를 제외하고
if(isset($_SESSION['name']))
{
array_push($_SESSION['name'], $_POST['name']);
}
else
{
$_SESSION['name'] = $_POST['name'];
}
if(isset($_SESSION['gender']))
{
array_push($_SESSION['gender'], $_POST['gender']);
}
else
{
$_SESSION['gender'] = $_POST['gender'];
}
기대로 인쇄하고, ['gender']
배열은 마치 큰 문자 배열처럼 인쇄합니다.
단순화 : 다음
if
들과else
들에 대한 필요는'$ _SESSION [ '이름'] [] = $ _POST [ '이름'] '등 ... – AbraCadaver사실 하나 그것을 시도하지 않았다 반복하지만 근본적인 문제는 해결되지 않았으므로 문제를 해결할 때까지 이미 가지고 있던 것을 고수하고 단순화/최적화에 대해 걱정할 것입니다. – Keith
@AbraCadaver, 답변으로 답장을 보내 주시면 바로 동의하겠습니다. 나는 그 단순화를 시도하기 위해 되돌아 갔고, 세션을 끝내고 시작하기 전까지는 문제가 발생했습니다. 이제는 잘 작동합니다. 'array_push()'는 c-string을 (효과적으로) 푸시하지만, 단순화는 문자열을 단일 요소로 푸시하는 것입니다. – Keith