Помогите решить проблему с конфликтом имен при передаче данных через форму.

gaiver

Новичок
Помогите решить проблему с конфликтом имен при передаче данных через форму.

Видимо очень простой вопрос, но требуется совет.
Есть форма, со следующим содержанием


res.php
PHP:
<FORM ACTION="delete.php" method="post">
<?

for ($i = 0; $i <$num_results; $i ++) {
	$row = mysql_fetch_array($result);
	
	echo "<TR>";
	echo "<TD>";
	echo ($i+1).". ";
	echo htmlspecialchars( stripslashes($row["russian"]));
	echo "</TD>";
	
	echo "<TD>";
	echo htmlspecialchars( stripslashes($row["original"]));
	echo "</TD>";
	
	echo "<TD>";
	echo htmlspecialchars( stripslashes($row["director_name"]));
	echo "</TD>";
	
	echo "<TD>";
	echo htmlspecialchars( stripslashes($row["country_name"]));
	echo "</TD>";
	
	echo "<TD>";
	echo htmlspecialchars (stripslashes($row["yearrr"]));
	echo "</TD>";
	
	echo "<TD>";
	echo htmlspecialchars (stripslashes($row["lenght"]));
	echo "</TD>";
	
	echo "<TD>";
	echo htmlspecialchars (stripslashes($row["format"]));
	echo "</TD>";
	
	echo "<TD>";
	echo htmlspecialchars (stripslashes($row["number"]));
	echo "</TD>";
		
	echo "<TD>";
	?>
	<INPUT TYPE="submit" NAME="delete" VALUE="delete">
	<?
	echo "</TD>";
	
	echo "<TD>";
	?>
	<INPUT TYPE="submit" NAME="edit" VALUE="edit">
	<?
	echo "</TD>";
	
	echo "<TD>";
	?>
	<input type="hidden" name="id" value="<?echo htmlspecialchars ($row["id"]);?>">
	
	<?
	


	echo "</TD></TR></p>";
	}
	
	echo "</TABLE><BR>";
	?>
	</FORM>

Собственно delete.php
PHP:
<?

if (isset($_POST['delete'])) {
	echo $_POST['id'];
	} 
	elseif (isset($_POST['edit'])) {
	echo $_POST['id'];
		
}
?>


На res.php таблица заполненная данными из БД, необходимо, чтобы при нажатии на кнопку Delete/Edit, расположенную напротив какой-либо строчки из таблицы, браузер переходил на delete.php с параметром "id".
Но "echo $_POST['id']" всегда выдает одно и тоже число. Помогите решить проблему.
 

Luerssen

Новичок
<input type="hidden" name="id" value="<?php print $row['id'];?>">
если у тебя поле id в таблице есть
 

hermit_refined

Отшельник
как угодно, по вкусу:
- либо сделать на каждую строку по форме
- либо менять hidden поле яваскриптом
- либо делать кнопки <input type="submit" name="delete[<?php echo $row['id'];?>]" value="delete"> и в delete.php вытаскивать
PHP:
if (!empty($_POST['delete']))
{
    $id = is_array($_POST['delete']) ? intval(key($_POST['delete'])) : false;
}
 

С.

Продвинутый новичок
Способ номер 4 нез всякой формы и скриптов, которые здесь нафиг не нужны:

<a href="delete.php?id=<?=$row['id']?>&oper=delete">Delete</a>
<a href="delete.php?id=<?=$row['id']?>&oper=edit">Edit</a>
 

Фанат

oncle terrible
Команда форума
С.
совет тебе на будущее.
НИКОГДА не делай какие-нибудь изменения в базе данных методом GET
а только POST.
постарайся запомнить хорошенько.

gaiver
поэтому надо сделать только ссылку "edit", а уже в форме редактирования - отдельную кнопочку "удалить"
 

С.

Продвинутый новичок
Фанат, спасибо. А откуда правило, если не секрет? Сам вывел, или у кого у "великих" подсмотрел?
 

Фанат

oncle terrible
Команда форума
прочитал про Google desktop search
который бодренько проиндексировал все ссылки в браузере у пользователя.
Ну, и дальше уже собственные соображения на тему того, как работают пауки и индексаторы.
 

С.

Продвинутый новичок
Ну от SpyWare и POST не очень поможет.
 

smike

Новичок
Автор оригинала: Фанат
прочитал про Google desktop search
который бодренько проиндексировал все ссылки в браузере у пользователя.
Ну, и дальше уже собственные соображения на тему того, как работают пауки и индексаторы.
Но обычно операции на изменение данных в БД (например удаление поста на форуме) доступны только авторизованным пользователям, так что паук напортачить не сможет.
 

denver

?>Скриптер
smike
1. Есть примочки к браузерам которые загружают (кэшируют) все страницы на которые может перейти пользователь.
2. Если ты хочешь скачать весь сайт телепортом то все-таки укажешь свои логин/пароль.
Короче чего придалбываться к правилам хорошего тона?
 

smike

Новичок
denver
Век живи, век учись. К своему стыду раньше об этом не задумывался. Спасибо за ценную информацию.
 

Фанат

oncle terrible
Команда форума
С.
вдумайся в смысл слова "проиндексировать". чтобы проиндексировать ссылку, надо по ней ПРОЙТИ.
Дальше объяснять надо?
 

smike

Новичок
С.
Советую действтельно вдуматся. Совет реально очень дельный и правильный. Жаль что я раньше над этим не задумался, щас бы не пришлось править кучу кода.
 
Сверху