Никак не могу сообразить.
Файл - обработчик для добавления данных в таблицу.
Сначала я выбираю нужные данные из базы
if (isset($_POST['division'])) {$division = $_POST['division']; }
$res = mysql_query ("SELECT * FROM number WHERE division='$division'");
$row = mysql_fetch_array ($res);
do {
printf ("%s <br>", $row['name']);
}
while ($row = mysql_fetch_array ($res));
Далее идёт сам запрос на добавление данных.
$result435 = mysql_query ("INSERT INTO table (pole1,pole2,pole3) VALUES ('$row[name]','$pole2','$pole3')");
Я так понимаю последний запрос нужно сделать в цикле, так как добавляется только одно-первое поле из первого запроса, а если их более одного, то остальные не добавляются. Подскажите как правильно сделать цикл!
Спустя 1 минута, 45 секунд (7.10.2010 - 08:12) linker написал(а):
Поповс
$res = mysql_query ("SELECT * FROM `number` WHERE `division` = '$division'");Можно вообще так
$array_vals = array();
while ($row = mysql_fetch_assoc($res))
{
printf ("%s <br>", $row['name']);
$array_vals[] = "('" . $row['name'] . "','$pole2','$pole3')";
}
$result435 = mysql_query("INSERT INTO `table` (`pole1`, `pole2`, `pole3`) VALUES " . join(',', $array_vals));
$result435 = mysql_query("INSERT INTO `table` (`pole1`, `pole2`, `pole3`) VALUES (SELECT `name`, '$pole2', '$pole3' FROM `number` WHERE `division` = '$division')");
Спустя 38 минут, 48 секунд (7.10.2010 - 08:51) freaky написал(а):
так вообще не работает(((
Спустя 7 минут, 49 секунд (7.10.2010 - 08:59) linker написал(а):
Что, где, как, когда?
Спустя 1 минута, 56 секунд (7.10.2010 - 09:01) freaky написал(а):
два варианта предложенные вами не работают, ничего не добавляется, просто ничего не происходит, может есть другие варианты?!
Спустя 11 минут, 17 секунд (7.10.2010 - 09:12) sergeiss написал(а):
Во-первых, в первой базе может просто не быть данных, соответствующим указанным критериям. Ты проверял наличие данных?
А во-вторых, я в очередной раз не понимаю: зачем брать данные из одной таблицы и просто перекладывать их в другую таблицу??? Более бестолковое занятия для БД сложно придумать
А во-вторых, я в очередной раз не понимаю: зачем брать данные из одной таблицы и просто перекладывать их в другую таблицу??? Более бестолковое занятия для БД сложно придумать

Спустя 6 минут, 24 секунды (7.10.2010 - 09:18) freaky написал(а):
Данные точно есть, для этого селект я и сделал вначале.
Зачем? Мне нужен перенос конкретных данных по заданному критерию введёному в поле формы, а далее мне обработчик всё правильно выдаёт кроме insert into, с моим вариантом только первый массив вставляется, а остальные нет.
Зачем? Мне нужен перенос конкретных данных по заданному критерию введёному в поле формы, а далее мне обработчик всё правильно выдаёт кроме insert into, с моим вариантом только первый массив вставляется, а остальные нет.
Спустя 24 минуты, 27 секунд (7.10.2010 - 09:43) linker написал(а):
Дописывай в конец
mysql_query("...") or die(mysql_error());Будет ошибка, показывай. Если нет, значит просто нет таких значений, которые бы были division='$division'
Спустя 14 минут, 56 секунд (7.10.2010 - 09:58) freaky написал(а):
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '...' at line 1
Спустя 2 минуты, 4 секунды (7.10.2010 - 10:00) sergeiss написал(а):
Цитата (freaky @ 7.10.2010 - 10:18) |
Зачем? Мне нужен перенос конкретных данных по заданному критерию введёному в поле формы |
Так я вот это как раз и не понимаю

Или ты не умеешь делать "сложные" запросы, которые делают выборку одновременно из 2-х и более таблиц, согласно определенным связям между полями? Если это так (а похоже, это именно тот случай), то тебе надо более глубоко изучить SQL вместо такого вот дублирования данных.
Это будет намного полезнее, чем просто найти ошибку в этом запросе.
Спустя 10 минут, 30 секунд (7.10.2010 - 10:10) freaky написал(а):
я не совсем дублирую данные, мне нужен именно такой запрос...
Спустя 21 минута, 13 секунд (7.10.2010 - 10:31) olex0731 написал(а):
Во-первых, у вас в строчке
Цитата |
while ($row = mysql_fetch_array ($res)); |
Символ ';' нужно убрать, т.к. ваш запрос не циклится...
Во-вторых,
Цитата |
... VALUES ('$row[name]','$pole2','$pole3')"); |
'$row[name]' - оооочень не правильно. Сделайте хотя-бы '$row["name"]' ... Сделайте, чтобы название ассоц. ссылки выделено было в кавычки, какие - не важно, а потом дальше посмотрим....
Спустя 11 минут, 9 секунд (7.10.2010 - 10:43) linker написал(а):
freaky
либо так

$res = mysql_query ("SELECT * FROM `number` WHERE `division` = '$division'");либо так
$array_vals = array();
while ($row = mysql_fetch_assoc($res))
{
printf ("%s <br>", $row['name']);
$array_vals[] = "('" . $row['name'] . "','$pole2','$pole3')";
}
$result435 = mysql_query("INSERT INTO `table` (`pole1`, `pole2`, `pole3`) VALUES " . join(',', $array_vals)) or die(mysql_error());
$result435 = mysql_query("INSERT INTO `table` (`pole1`, `pole2`, `pole3`) VALUES (SELECT `name`, '$pole2', '$pole3' FROM `number` WHERE `division` = '$division')") or die(mysql_error());
Спустя 3 часа, 5 минут, 39 секунд (7.10.2010 - 13:48) freaky написал(а):
Всем спасибо, всё оказалось очень просто
if (isset($_POST['division'])) {$division = $_POST['division']; }
$res = mysql_query ("SELECT * FROM number WHERE division='$division'");
$row = mysql_fetch_array ($res);
do {
$result435 = mysql_query ("INSERT INTO table (pole1,pole2,pole3) VALUES ('$row[name]','$pole2','$pole3')");
printf ("%s <br>", $row['name']);
}
while ($row = mysql_fetch_array ($res));