|
|
|
| Есть скрипт, который позволяет редактировать определенную статью.
Напимер: edit.php?id=105
Трудность в передаче id обработчику handler.php.
Пробовал вначале использовать edit.php в качестве обработчика, данные не изменились. Потом создал второй файл и задал его в форме в качестве обработчика. Данные передаются методом POST. Но id мне ведь надо передавать методом GET, пробовал это значение передавать методом POST. В общем, как лучше организовать, обработку оставить на edit.php или вынести в отдельный скрипт, как тогда передать id? Желательно, на примере.
<?php
include "db.php";
if(isset($_GET[id])){
if($_GET[id]!= 0) $where = "WHERE id = '".$_GET[id]."'";
}
$query = "SELECT * FROM lgar $where";
$prd = mysql_query($query);
if(!$prd) exit(mysql_error());
$_REQUEST = mysql_fetch_array($prd);
var_dump($_REQUEST);
@$day = date("d", $_REQUEST[datetime]);
@$month1 = date("F", $_REQUEST[datetime]);
@$hour = date("G", $_REQUEST[datetime]);
@$minute = date("i", $_REQUEST[datetime]);
?>
<table>
<form method=post action="handler.php">
<tr><td>Тема</td><td><input type=text name=title size='74' maxlength='150' value="<?php echo $_REQUEST['title']; ?>"></td></tr>
<tr><td>Комментарий:</td><td><textarea name=comment cols="110" rows="15"><?php echo $_REQUEST['title']; ?></textarea></td></tr>
<tr><td>Время</td><td><select name="hour"> <?php
for ($i=1; $i<=24; $i++) {
if($hour == $i) $temp = "selected";
else $temp = "";
echo "<option value=\"$i\"$temp>$i</option>"; } ?> </select>:
<select name="minute">
<option value="0">00</option>
<?php
for ($i=10; $i<60; $i = $i+10) {
if($minute == $i) $temp = "selected";
else $temp = "";
echo "<option value=\"$i\">$i</option>$temp"; } ?> </select>
</td></tr>
<tr><td>Дата</td><td><select name="day"><?php for($i = 1; $i <= 31; $i++) {
if($day == $i) $temp = " selected";
else $temp = "";
echo "<option value=\"$i\"$temp>$i</option>\n"; } ?> </select>
<select name="month">
<?php
for($i = 1; $i <= 12; $i++)
{
$month = date('F', mktime(12, 0, 0, $i, 1, 2005));
if($month1 == $month) $temp = "selected";
else $temp = "";
echo "<option value=\"$i\"$temp>$month</option>";
}
?> </select>
<select name="year"> <?php
for ($i=2012; $i<=2013; $i++) {
echo "<option value=\"$i\">$i</option>"; } ?> </select></td></tr>
<tr><td>URL:</td><td><input type=text name=url value="<?php echo $_REQUEST['url']; ?>"></td></tr>
<tr><td></td><td><input type=submit value='Изменить'></td></tr>
</form>
</table>
|
<?php
if(isset($_GET[id])){
if($_GET[id]!= 0) $id = $_GET[id];
}
#$id = $_POST[id];
echo $id;
include "db.php";
$q = "UPDATE lgar SET title = '$title', datetime = '$datetime', comment = '$comment', url = '$url', status = '$status' WHERE id =
'$id'";
$prx = mysql_query($q);
if(!$prx) exit(mysql_error());
else /* header("Location: show.php?id=$id"); */ exit();
?>
|
| |
|
|
|
|
|
|
|
для: lgar
(12.03.2012 в 14:47)
| | ну почему же именно $_GET передавать id ?
в форме делаете input с type='hedden', в value указываете нужный id и передаёте $_POST, ни какой проблемы в передачи нет.
обработчик разместите в том же файле, в котором сама форма есть
и обязательно контроль ошибок через error_reporting() | |
|
|
|
|
|
|
|
для: lgar
(12.03.2012 в 14:47)
| | Как можно переделать, чтобы всё работало в рамках одного скрипта? | |
|
|
|
|
|
|
|
для: lgar
(13.03.2012 в 12:57)
| |
<?php
/* обработчик */
?>
<form>
<!-- html форма -->
</form>
|
| |
|
|
|