Задавайте вопросы, мы ответим
Вы не зашли.
Описание: Имеется много таблиц имена которых хранятся в отдельной таблице, нужно произвести поиск последовательно во всех таблицах, выбирая имена из таблицы с именами.
Пример: на складе есть большое количество ящиков с ячейками, в которых хранятся детали, каждая деталь имеет артикль (цифровой номер). Если из формы сделать запрос по номеру ящика и артиклю, то можно воспользоваться следующим кодом:
<? $article = $_GET['article']; $table = $GET['box']; // Соединиться с Базой Данных mySQL $connection=mysql_connect ($baseURL, $username, $password); if (!$connection) { die('Невозможно соединиться с базой данных: ' . mysql_error()); } // Активировать Базу Данных mySQL $db_selected = mysql_select_db($database, $connection); if (!$db_selected) { die ('Нельзя использовать БД : ' . mysql_error()); } // Выборка строк таблицы в Базе Данных по условию $query = "SELECT * FROM $table WHERE '$article' >= start and '$article' <= stop"; $result = mysql_query($query); if (!$result) { die('Неверный запрос: ' . mysql_error()); } //Подсчет найденных строк в таблице Базы Данных. $n=mysql_num_rows($result); if ($n==0) {echo "Деталь артикль: $article в ящике $table не найдена! <br>";} else echo "Деталь артикль: $article находится в ящике <b>$table</b><br>"; ?>
Все работает!
Сделали таблицу с номерами ящиков и дополнительными реквизитами.
попробовали автоматизировать поиск:
<? $article = $_GET['article']; // Соединиться с Базой Данных mySQL $connection=mysql_connect ($baseURL, $username, $password); if (!$connection) { die('Невозможно соединиться с базой данных: ' . mysql_error()); } // Активировать Базу Данных mySQL $db_selected = mysql_select_db($database, $connection); if (!$db_selected) { die ('Нельзя использовать БД : ' . mysql_error()); } $sql = mysql_query("SELECT * FROM sklad;"); if (!$sql) { die('Неверный запрос: ' . mysql_error()); } else { while ($row = mysql_fetch_assoc($sql)) { $table = $row[box]; // Выборка строк таблицы в Базе Данных по условию $query = "SELECT * FROM $table WHERE '$article' >= start and '$article' <= stop"; $result = mysql_query($query); if (!$result) { die('Неверный запрос: ' . mysql_error()); } //Подсчет найденных строк в таблице Базы Данных. $n=mysql_num_rows($result); if ($n==0) {echo "Деталь артикль: $article в ящике $table не найдена! <br>";} else echo "Деталь артикль: $article находится в ящике <b>$table</b><br>"; } } ?>
В результате получаем ошибку при обращении к таблице:
$query = "SELECT * FROM $table WHERE '$article' >= start and '$article' <= stop";
Помогите разобраться, пожалуйста...
Отредактированно star-ik (23.06.2008 09:34:38)
Неактивен
Приведите пожалуйста текст ошибки, которую Вы получаете.
Неактивен
В результате получаем ошибку при обращении к таблице:
$query = "SELECT * FROM $table WHERE '$article' >= start and '$article' <= stop";
Неверный запрос: Table '$database.$table' doesn't exist ,
где :
$database - имя базы данных,
$table - имя таблицы считанное по предыдущему запросу:
$sql = mysql_query("SELECT * FROM sklad;");
while ($row = mysql_fetch_assoc($sql))
{
$table = $row[box];
.........
}
Отредактированно star-ik (23.06.2008 09:57:42)
Неактивен
Ну так у Вас просто нет такой таблицы, судя по ошибке?
Неактивен
Спасибо за поддержку.
Ошибка была в таблице sklad в колонке box, а не в скрипте.
Из-за неправильной информации в колонке box , было обращение к несуществующей таблице.
Причем ошибка была в первой строке таблицы, поэтому поиск прекращался сразу при обращении к первой таблице!
Неактивен