|
|
|
| Добрый День, у меня такой вопрос, можно ли в одном запросе удалить строчку из одной таблици и записать эту же удаленную строчку в другую таблицу.
Таблици находятся о БД. | |
|
|
|
|
|
|
|
для: Artemy
(05.10.2004 в 11:23)
| | Нет в один не получится. | |
|
|
|
|
|
|
|
для: Artemy
(05.10.2004 в 11:23)
| | для начала ты эту строчку вытаскиваешь по запросу заносишь ее в другу таблицу,а после удаляешь ее с прошлой таблицы ! | |
|
|
|
|
|
|
|
для: Artemy
(05.10.2004 в 11:23)
| | У меня еще один вопрос, удаление происходит по ссылке
<a class=prakb href=admin/delrec.php?id=".$triall['id']." title='Продать'>Продать</a>
|
, если помните я Вас уже мучил!
но мне еще надо передовать и еще некоторые переменные например
$model=".$triall['model']."
| и т.д.
Как мне это сделать, т.е. как будет выглядеть ссылка?
Или можно передать только id в виде первичного ключа и только задав id можно скопировать все строчку в другую таблицу? | |
|
|
|
|
|
|
|
для: Artemy
(05.10.2004 в 12:17)
| | Можно передать любое число параметров, для этого после первого параметра в ссылке следует добавить знак амперсанда & и добавить второй параметр:
<?php
echo "<a class=prakb href=admin/delrec.php?id=".$triall['id']."&model=".$triall['model']." title='Продать'>Продать</a>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(05.10.2004 в 12:25)
| | Правда, параметр model должен содержать только допустимые для URL символы, и если содержаться пробелы или русские буквы следует использовать функцию urlencode() для перевода параметра в безопасный режим, а в скрипте получателе urldecode():
<?php
echo "<a class=prakb href=admin/delrec.php?id=".$triall['id']."&model=".urlencode($triall['model'])." title='Продать'>Продать</a>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(05.10.2004 в 12:28)
| | У меня опять проблема, значения передаются по ссылке, т.е. если перед кодом вставить
то выводится значение переменной $number, переданной по ссылке,
а если это вставить в середине кода, примерно так
<?php
echo ("Номер $number"); // здесь выводится
include "../config.php";
$action = $_POST["action"];
if(isset($_GET["id"])) $id = $_GET["id"];
if(isset($_POST["id"])) $id = $_POST["id"];
if (!empty($action))
{
$user_pass = md5($passwd);
$pass = mysql_query("SELECT * FROM users;");
if ($pass)
{
$users = mysql_fetch_array($pass);
if ($users['password'] == $user_pass && $users['id_user'] == $id_user)
{
echo ("Номер $number"); // а вот если она здесь стоит, то не выводиться
$query = "DELETE FROM sklad WHERE id=".$id;
if(mysql_query($query))
{
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=../index.php'>\n";
print "</HEAD></HTML>\n";
}
else
{
echo ("<div align=center><font color=red>Ошибка при обращении к складу!</font></div>");
}
}
else
{
echo ("<div align=center><font color=red>Неправельная пара имени или пароля!</font></div>");
}
}
else
{
echo ("<div align=center><font color=red>Ошибка при обращении к таблице пользователей!</font></div>");
}
}
?>
|
то выводиться пустое значение!
Как сделать так что бы переменная работала и в середине кода? | |
|
|
|
|
|
|
|
для: Artemy
(07.10.2004 в 12:53)
| | Хм... такого не должно бы быть, если только в config.php не происходит переопределение переменной $number - попробуйте вместо $number использовать соответствующий элемент суперглобального массива:
<?php
echo ("Номер ".$_GET['number']);
?>
|
PS Хотя такой затык иногда случается, когда используется очень много вложенных скобок, свзан скорее всего со сбоями PHP-интерпретатора. | |
|
|
|
|
|
|
|
для: Artemy
(05.10.2004 в 12:17)
| | хеопс блин быстрый какой!:)тока начал писать ответ он уже написал!:)) | |
|
|
|
|
|
|
|
для: J.Lex
(05.10.2004 в 12:26)
| | У меня скорость набора 300 знаков в минуту в обеих раскладках :))) | |
|
|
|
|
|
|
|
для: cheops
(05.10.2004 в 12:29)
| | Насмешили!
А можно например если использовать радио кнопку передовать сразу два или несколько значений id ?
Как должен выглядеть запрос для удаления 2 и более строчек из таблицы, в книге описано несколько случев, когда id_autors > 10 или зфыыц = '123', но меня интересует другой пример, когда два разных значения id=51 и id=76 ? | |
|
|
|
|
|
|
|
для: Artemy
(05.10.2004 в 12:38)
| | если через форму то можно через циклы while ili for | |
|
|
|
|
|
|
|
для: Artemy
(05.10.2004 в 12:38)
| | Здесь тогда понадобятся не радио-кнопки (так как можно отметить только одно значение), а группа флажков. Для удобства значения для этих флажков лучше передавать массивом. Так HTML-форма index.php может содержащая 7 флажков
<form action=handler.php method=post>
<input type='checkbox' name='type[]' value='1'>Первый флажок<br>
<input type='checkbox' name='type[]' value='2'>Второй флажок<br>
<input type='checkbox' name='type[]' value='3'>Третий флажок<br>
<input type='checkbox' name='type[]' value='4'>Четвёртый флажок<br>
<input type='checkbox' name='type[]' value='5'>Пятый флажок<br>
<input type='checkbox' name='type[]' value='6'>Шестой флажок<br>
<input type='checkbox' name='type[]' value='7'>Седьмой флажок<br>
<input type=submit>
</form>
|
имеет обработчик handler.php:
<?php
// Удалить сразу несколько записей можно при
// помощи запроса "DELETE FROM base WHERE id IN (1,3,5,7)"
// Получаем список отмеченных флажков
$type = $_POST['type'];
if(!empty($type))
{
// Начинаем формировать переменную, содержащую этот список
// в формате "(3,5,6,7)"
$query = "(";
foreach($type as $val) $query .= "$val,";
// Удаляем последнюю запятую, заменяя её закрывающей скобкой )
$query = substr($query, 0, strlen($query) - 1).")";
// Завершаем формирование SQL-запроса на удаление
$query = "DELETE FROM base WHERE id IN ".$query;
// Выполняем запрос
if(!mysql_query($query))
{
echo mysql_error()."<br>";
echo $query."<br>";
}
}
?>
|
PS Только вместо value-значений следует подставлять реальные значения первичного ключа и HTML-форму генерировать в цикле. | |
|
|
|
|
|
|
|
для: cheops
(05.10.2004 в 13:12)
| | А как будет выглядет код, для вывода нескольких записей?
типа того
$query = "SELECT * FROM base WHERE id=71,83,85 ";
|
Возможен ли такой запрос? | |
|
|
|
|
|
|
|
для: Artemy
(08.10.2004 в 15:46)
| |
$query = "SELECT * FROM base WHERE id=71 and id=83 and id=85";
|
PS: Мой вариант неверен. Правильный смотри у Artem S. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(08.10.2004 в 16:27)
| | возможен такой вариант
$query = "SELECT * FROM base WHERE id=71 or id=83 or id=85";
|
Все зависит от того, чего ты хочешь
P.S. Дизайнер а твой запрос не правильный =)) от такого запроса ничего не получишь, так как id не может иметь несколько значений, но может быть я ошибаюсь =( | |
|
|
|
|
|
|
|
для: Artem S.
(08.10.2004 в 17:13)
| | >Дизайнер а твой запрос не правильный =))
Да, извиняюсь, сглупил :) | |
|
|
|
|
|
|
|
для: cheops
(05.10.2004 в 13:12)
| | А почему стоит только заключить в код
if(!empty($action))
{
$type = $_POST['type'];
if(!empty($type))
{
// Начинаем формировать переменную, содержащую этот список
// в формате "(3,5,6,7)"
$query = "(";
foreach($type as $val) $query .= "$val,";
// Удаляем последнюю запятую, заменяя её закрывающей скобкой )
$query = substr($query, 0, strlen($query) - 1).")";
// Завершаем формирование SQL-запроса на удаление
$query = "DELETE FROM base WHERE id IN ".$query;
// Выполняем запрос
if(!mysql_query($query))
{
echo mysql_error()."<br>";
echo $query."<br>";
}
}
}
|
это условие не выполняет, т.е. не удаляет он ничего, ну а если в чистом виде без
То всё прекрасно работает! | |
|
|
|
|
|
|
|
для: Artemy
(08.10.2004 в 17:15)
| | Потому как ни одного управляющего элемена с именем $action в форме (по крайней мере у меня в примере) не определено, в следствии чего переменная остаётся пустой. Вот если к HTML-форме добавить скрытое поле
<input type=hidden name=action value='123'>
|
то переменная $action примет значение 123.
PS Только здесь смысла делать этого нет, такой приём применяют когда HTML-форма и её обработчик находятся в одном файле. | |
|
|
|
|
|
|
|
для: cheops
(08.10.2004 в 20:39)
| | У меня к форме добавлено это скрытое поле! | |
|
|
|
|
|
|
|
для: Artemy
(09.10.2004 в 16:42)
| | Возможно у ваc отключена директива register_globals в php.ini несущая ответственность за преобразование параметров запроса и значений полученных из форм в обычные переменные
в целях безопасности, по умолчанию в последних версиях PHP эта директива отключена. Если это так, вместо прямого обращения к перменным следует использовать суперглобальные массивы:
<?php
if(!empty($_POST['action']))
{
}
?>
|
http://www.softtime.ru/info/articlephp.php?id_article=13 | |
|
|
|
|
|
|
|
для: cheops
(09.10.2004 в 16:49)
| | Ну я вроде не дурак, ни чего не понимаю!
В php.ini
поставлено.
В код вставил
И всеравно одна и таже песня! | |
|
|
|
|
|
|
|
для: Artemy
(12.10.2004 в 12:16)
| | Хм... а архивчик с HTML-формой и её обработчиком здесь не выложите? Я бы с удовольствием порылся в вашем коде - я такие ошибки люблю :))) | |
|
|
|
|
|
|
|
для: cheops
(12.10.2004 в 12:34)
| | Пожалуйста
Это главная, index.php
<form action="delrec.php" method=post>
<?
include "config.php";
$ath = mysql_query("SELECT * FROM sklad ORDER BY model;");
if ($ath)
{
echo "
<table style='font-size: 11px;' bordercolor=white width='595' border=1 cellspacing=2 cellpadding=2>
<tr align=center bgcolor=#ccffcc bordercolor=#ccffcc>
<td rowspan=2 width=75><b>Модель</b></td>
<td rowspan=2 width=60><b>Номер<b></td>
<td colspan=2><b>Исполнение<b></td>
<td rowspan=2 width=120><b>Дата<br> поступления<b></td>
<td rowspan=2 width=90><b>Прочие<b></td>
<td rowspan=2><b>A<b></td>
</tr>
<tr align=center bgcolor=#ccffcc bordercolor=#ccffcc>
<td><b>№ платы 018</b></td>
<td><b>№ платы 016</b></td>
</tr>
<tr>
<td align=right colspan=7><input type=submit class=inp value='Продать'></td>
</tr>";
while($triall = mysql_fetch_array($ath))
{
echo "<tr align=center bgcolor=#E2FFE1 bordercolor=#E2FFE1>
<td align=left height=20><b>".$triall['model']."</b></td>
<td>".$triall['number']."</td>
<td>".$triall['plata018']."</td>
<td>".$triall['plata016']."</td>
<td>".$triall['data']."</td>
<td>".$triall['pr']."</td>
<td><input type='checkbox' name='type[]' value=".$triall['id']."></td>
</tr>";
}
echo "<tr>
<td align=right colspan=7><input type=submit class=inp value='Продать'></td>
</tr></table>";
}
else
{
echo "<p><b>Error: ".mysql_error()."</b></p>";
exit();
}
?>
</form>
|
Вот delrecform.php
<?php
include "../config.php";
$action = $_POST["action"];
if (!empty($action))
{
$user_pass = md5($passwd);
$pass = mysql_query("SELECT * FROM users;");
if (!$pass)
{
echo ("<div align=center><font color=red>Ошибка при обращении к таблице пользователей!</font></div>");
exit;
}
$users = mysql_fetch_array($pass);
if (!($users['password'] == $user_pass && $users['id_user'] == $id_user))
{
echo ("<div align=center><font color=red>Неправельная пара имени или пароля!</font></div>");
exit;
}
$type = $_POST['type'];
if(!empty($type))
{
$query = "(";
foreach($type as $val) $query .= "$val,";
$query = substr($query, 0, strlen($query) - 1).")";
$query = "DELETE FROM sklad WHERE id IN ".$query;
if(!mysql_query($query))
{
echo mysql_error()."<br>";
echo $query."<br>";
}
else
{
print "<HTML><HEAD>\n";
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=../index.php'>\n";
print "</HEAD></HTML>\n";
}
}
else
{
echo ("Список не получен !");
exit;
}
}
?>
<form action=delrec.php method=post>
<input type=hidden name=action value=post>
<table width='264' align=center bordercolor=#FFFFFF border=1 cellpadding=1 cellspacing=1>
<tr>
<td width="253" height=11 align=center bordercolor=#006600 style=' color: #009900; font-size: 11px;'>
Для того, чтобы подтвердить удаление<br>
позиции из списка, нужно выбрать своё имя и ввести пароль!
</td>
</tr>
<tr>
<td align="center" bordercolor=#FFFFFF>
<select class=inp name=id_user value='<? echo $id_user; ?>'>
<option value="">Выберите своё имя</option>
<option value="">-----------------------------</option>
<?
$sel = mysql_query("select id_user, login from users where type=1;");
if ($sel)
{
while($users = mysql_fetch_array($sel))
{
echo "<option value=".$users['id_user'].">".$users['login']."</option>";
}
}
?>
</select>
<input class=inp height=11 maxlength=7 name=passwd size=7 type=password value='<? echo $passwd; ?>'>
<input name=id type=hidden value='<? echo $id; ?>'><input class=inp height=11 type=submit value=Продать>
</td>
</tr>
</table>
</form>
|
| |
|
|
|
|
|
|
|
для: Artemy
(12.10.2004 в 12:49)
| | Так ведь в index.php и нет скрытого поля
<input type='hidden' name=action value='action'>
|
PS Такие здоровые листинги лучше прикреплять в виде файлов. | |
|
|
|
|
|
|
|
для: cheops
(12.10.2004 в 12:55)
| | А он там и не нужен.
Или нужен...
С index.php передаётся несколько значений id на deltec.php, а он их не видет! | |
|
|
|
|
|
|
|
для: Artemy
(12.10.2004 в 12:58)
| | Ну... если скрытого поля action не будет, то элемент суперглобального массива $_POST["action"] будет всегда пустым. | |
|
|
|
|
|
|
|
для: cheops
(12.10.2004 в 12:55)
| | Я даже не подумал что так много получиться, прошу прощения! | |
|
|
|
|
|
|
|
для: cheops
(12.10.2004 в 12:55)
| | Да кстати, у меня чего-то MySQL встала, красный цвет показывает, чего делать ума не приложу!
Даже скрипт не могу посмотреть! | |
|
|
|
|
|
|
|
для: Artemy
(12.10.2004 в 13:02)
| | А при запуске чего пишет?
PS Под эту проблему лучше отдельную тему завести - эта уже очень длинная. | |
|
|
|
|
|
|
|
для: cheops
(12.10.2004 в 13:15)
| | Это был лаг, у нас сервер чего глючит! | |
|
|
|
|
|
|
|
для: cheops
(05.10.2004 в 13:12)
| | не в тему, но...
попытался распечатать этот код из Оперы, так она мен напечатала...чекбоксы с названиями и кнопкой!
Т.е при выводе на печать она интерпретировала html! Хорошо еще, что она php не пытается обрабатывать при печати ;) | |
|
|
|
|
|
|
|
для: denvor
(26.09.2005 в 22:48)
| | Кошмар :))) и ведь не придерёшься - браузер - такая работа, HTML - интерпретировать :))) | |
|
|
|
|
автор: Gannibal (02.12.2005 в 02:52) |
|
|
для: cheops
(26.09.2005 в 22:59)
| |
<form action=handler.php method=GET>
<input type='checkbox' name='type[]' value='1'>Первый флажок<br>
<input type='checkbox' name='type[]' value='2'>Второй флажок<br>
<input type='checkbox' name='type[]' value='3'>Третий флажок<br>
<input type='checkbox' name='type[]' value='4'>Четвёртый флажок<br>
<input type='checkbox' name='type[]' value='5'>Пятый флажок<br>
<input type='checkbox' name='type[]' value='6'>Шестой флажок<br>
<input type='checkbox' name='type[]' value='7'>Седьмой флажок<br>
<input type=submit>
</form>
|
luchshe vot tak vot.. net???
$db = mysql_connect($db_server, $db_user, $db_pasw);
mysql_select_db($db_name,$db);
$type = $_GET['type'];
if(!empty($type))
{
foreach($type as $val) mysql_query("DELETE FROM program_mail WHERE dbID = '$val' LIMIT 1");
} | |
|
|
|