// Получаем список отмеченных checkbox
$id = $_POST['id'];
if (!empty($id)){
// Начинаем формировать переменную, содержащую этот список
// в формате "(1,2,3)"
$query = "(" ;
foreach($id as $val) $query.= "$val,";
// Удаляем последнюю запятую, заменяя ее закрывающей скобкой)
$query = substr($query, 0, strlen($query) - 1 ) .")";
// Завершаем формирование SQL-запроса на вставку выбранных записей
$res = mysql_query("INSERT INTO BD1.table1 (ISBN, title, price)
SELECT ISBN, title, price_1 FROM DB2.table2 where id IN \"$query\"")
or die(mysql_error());
}
В результате выводится сообщение:
Warning: Invalid argument supplied for foreach() in /usr/home/stud/public_html/index1.php on line 423
У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около '")"' на строке 1
В чем ошибка, подскажите люди!!!!!!
Спустя 31 минута, 40 секунд (8.02.2010 - 03:34) dr_Lev написал(а):
Цитата |
$query = "(" ; foreach($id as $val) $query.= "$val,"; // Удаляем последнюю запятую, заменяя ее закрывающей скобкой) $query = substr($query, 0, strlen($query) - 1 ) .")"; |
лучше замени на
$query = "('".implode("','",$_POST['id'])."')";
Спустя 5 часов, 6 минут, 2 секунды (8.02.2010 - 08:40) ИНСИ написал(а):
Олька87 или может так сделать:
if ($_POST['id']) {
$listQuery = implode(",", intval($_POST['id']));
$res = mysql_query("
INSERT
INTO BD1.table1(ISBN, title, price)
SELECT ISBN, title, price_1
FROM DB2.table2
WHERE id IN ({$listQuery})
") or die(mysql_error());
}
Спустя 7 часов, 24 минуты, 7 секунд (8.02.2010 - 16:04) Олька87 написал(а):
Спасибо, но оба варианта почему-то не работают... Я уж по-всякому кавычки со скобками ставила, все "некорректный синтаксис около ')' на строке 2"
Спустя 1 час, 52 минуты, 47 секунд (8.02.2010 - 17:57) ИНСИ написал(а):
Олька87 покажи ошибку плиз
Спустя 11 минут, 4 секунды (8.02.2010 - 18:08) Олька87 написал(а):
да пожалуйста:
Warning: implode() [function.implode]: Invalid arguments passed in /usr/home/stud/public_html/index1.php on line 426
У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около ')' на строке 2
Warning: implode() [function.implode]: Invalid arguments passed in /usr/home/stud/public_html/index1.php on line 426
У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около ')' на строке 2
Спустя 27 минут, 18 секунд (8.02.2010 - 18:35) Mizka написал(а):
а в $_POST['id'] у тебя массив? думаю проблема в этом месте, а не запросе
данные с формы надо передавать как:
а не
данные с формы надо передавать как:
<input type="checkbox" name="control_name[]" value="some_val">
<input type="checkbox" name="control_name[]" value="one_more_val">
а не
<input type="checkbox" name="control_name" value="some_val">
...
Спустя 37 минут, 42 секунды (8.02.2010 - 19:13) ИНСИ написал(а):
Олька87 ошибка точно не в запросе, говорит что ошибка в функции implode(), то есть вот в этом коде:
то есть не ошибка, я проблема.
Mizka правильно говорит, проверь свою форму...
$listQuery = implode(",", intval($_POST['id']));
то есть не ошибка, я проблема.
Mizka правильно говорит, проверь свою форму...
Спустя 3 часа, 7 минут, 46 секунд (8.02.2010 - 22:20) Олька87 написал(а):
Мой сокращ. скрипт
В результате, сколько checkbox отмечу, столько Warning'ов и получаю
<form method=post action="<?php echo $_SERVER['PHP_SELF']?>">
<?php
$sql = "SELECT * FROM table2";
$res = mysql_query($res) or die(mysql_error());
{ [скрипт, выводящий таблицу]
echo "<th><input name='id[]' type='checkbox' value=".$r["id"]."></th>";
}
?>
<td><input type=submit name='add' value='Подтвердить'></td>
</form>
<?php
$id = $_POST['id'];
if ($id) {
foreach ($id as $val) $listQuery = implode(",", intval($id));
$res = mysql_query("
INSERT INTO DB1.table1 (ISBN, title, price) SELECT ISBN, title,
price_1 FROM DB2.table2 where id IN ({$listQuery})
") or die(mysql_error());
}
else echo "Enter value";
В результате, сколько checkbox отмечу, столько Warning'ов и получаю
Спустя 9 часов, 28 минут (9.02.2010 - 07:48) Kuliev написал(а):
Олька87
Посмотрите что у Вас в $ID
Посмотрите что у Вас в $ID
$id = $_POST['id'];
var_dump($id);
Спустя 52 минуты, 6 секунд (9.02.2010 - 08:41) ИНСИ написал(а):
Олька87 попробуй вот так:
<form action="" method="post">
<?php
$sql = mysql_query("
SELECT *
FROM `table2`
") or die(mysql_error());
while($row = mysql_fetch_array($sql)) {
echo '<th><input name="id[]" type="checkbox" value='.$row['id'].'></th>';
}
?>
<td><input type=submit name='add' value='Подтвердить'></td>
</form>
<?
if ($_POST['id']) {
$listQuery = implode(",", intval($_POST['id']));
$res = mysql_query("
INSERT
INTO BD1.table1(ISBN, title, price)
SELECT ISBN, title, price_1
FROM DB2.table2
WHERE id IN ({$listQuery})
") or die(mysql_error());
echo 'Ok';
}
?>