Проблем с foreach

Dizasterr

Registered
Здравейте! Имам проблем при работата с 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());	
					
					}
					}
				}
				}
		
?>
 
Предполагам не, но какво ти пречи да пробваш.
$editanwers=mysql_query("UPDATE `pollanswers` SET `answer`='$value' WHERE `pollid`='$pollid'") or die(mysql_error());
Така отстрани погледната, съвсем логично е да ти записва последния отговор на всички полета.
Ако имаш едно поле answer, как записваш възможните отговори на анкетата?
 
Имам едно поле answer. При записването съм направил всеки отговор го записва на отделен ред, но тези, които отговарят към един въпрос имат еднаква стойност в полето pollid. В страницата, от която създавам анкетата чрез foreach предавам стойността на масива на една променлива и записвам само полетата, които не са празни. Ето част от кода при записването:
Код:
			$answers=$_POST['answers'];
				
				foreach($answers as $value) {
					
					if(!empty($value)) {
					
						if(!preg_match('/^[a-zA-Zа-яА-Я0-9_ \.]{1,255}$/', $value)) {
							die("Има непозволени символи в отговорите!");
						}
						
						$in=mysql_query("INSERT INTO `pollanswers` (`pollid`,`answer`) VALUES ('$pollid','$value')") or die(mysql_error());
					
					}
				}
 
А структурата на формата ще дадеш ли?
Предполагам знаеш, че те трябва да са структурирани по този начин
<input type="input" name="answer[]" value="" />
<input type="input" name="answer[]" value="" />
за да сработи foreach :idea:
 
Replace каза:
А структурата на формата ще дадеш ли?
Предполагам знаеш, че те трябва да са структурирани по този начин
<input type="input" name="answer[]" value="" />
<input type="input" name="answer[]" value="" />
за да сработи foreach :idea:
Извинявам се. Да в структурата си е така:
Код:
				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>";
 
Replace каза:
А защо едното ти е answer ,а другото answerone :idea:
Това го промених нарочно, защото си мислех, че проблемът е от него, но и така пак нестава.
 

Back
Горе