Здравейте! Имам проблем при работата с foreach. Направих си записването в базата данни - всичко си е наред. Сега пробвам да направя промяна на тези полета, но като го направя отново с foreach и UPDATE ми обновява всичките полета със стойността от последното попълнено поле. Ето до къде стигнах:
Код:
<?php
require_once("connect.php");
mysql_query("SET NAMES cp1251");
mysql_query("SET CHARACTERS SET cp1251");
$pollid=(int)$_GET['id'];
$mode=addslashes(htmlspecialchars($_GET['mode']));
$selectid=mysql_query("SELECT * FROM `pollquestions` WHERE `id`='$pollid'") or die(mysql_error());
$selectanswers=mysql_query("SELECT * FROM `pollanswers` WHERE `pollid`='$pollid'") or die(mysql_error());
if(mysql_num_rows($selectid) <= 0) {
echo "Няма такава анкета!";
}
if($mode == 'edit') {
echo "<form method='post' action=''>";
while($row=mysql_fetch_array($selectid)) {
echo "Въпрос: <input type='text' name='question' id='question' value='".$row['pollquestion']."' /><br/><br/>";
}
while($r=mysql_fetch_array($selectanswers)) {
echo "Отговор: <input type='text' name='answers[]' value='".$r['answer']."' /><br/>";
}
for($i=1;$i<=6;$i++) {
echo "Отговор: <input type='text' name='answersone[]' /><br/>";
}
echo "<input type='submit' name='edit' value='Запиши' /><br/>";
echo "</form>";
if(isset($_POST['edit'])) {
$question=$_POST['question'];
if(empty($question)) {
die("Не сте попълнили въпрос!");
}
if(!preg_match('/^[a-zA-Zа-яА-Я0-9_ ?\.]{1,255}$/', $question)) {
die("Има непозволени знаци във въпроса!");
}
$question=addslashes(htmlspecialchars($_POST['question']));
$editquestion=mysql_query("UPDATE `pollquestions` SET `pollquestion`='$question' WHERE `id`='$pollid'") or die(mysql_error());
$answers=$_POST['answers'];
foreach($answers as $value) {
if(!empty($value)) {
if(!preg_match('/^[a-zA-Zа-яА-Я0-9_ \.]{1,255}$/', $value)) {
die("Има непозволени символи в отговорите!");
}
echo $value;
$editanwers=mysql_query("UPDATE `pollanswers` SET `answer`='$value' WHERE `pollid`='$pollid'") or die(mysql_error());
}
}
}
}
?>