PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 1
star-ik Отправлено: 20 Июня, 2008 - 21:27:08 • Тема: Обращение к таблице, имя которой выбирается из другой таблицы • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 45
Пример: на складе есть большое количество ящиков с ячейками, в которых хранятся детали, каждая деталь имеет артикль (цифровой номер). Если из формы сделать запрос по номеру ящика и артиклю, то можно воспользоваться следующим кодом:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $article = $_GET['article'];
  3. $table = $GET['box'];
  4. // Соединиться с Базой Данных  mySQL
  5. $connection=mysql_connect ($baseURL, $username, $password);
  6. if (!$connection) {
  7.   die('Невозможно соединиться с базой данных: ' . mysql_error());
  8. }
  9. // Активировать Базу Данных mySQL
  10. $db_selected = mysql_select_db($database, $connection);
  11. if (!$db_selected) {
  12.   die ('Нельзя использовать БД : ' . mysql_error());
  13. }
  14. // Выборка строк таблицы  в Базе Данных по условию
  15. $query = "SELECT * FROM $table WHERE '$article' >= start and '$article' <= stop";
  16. $result = mysql_query($query);
  17. if (!$result) {
  18.   die('Неверный запрос: ' . mysql_error());
  19. }
  20. //Подсчет найденных строк в таблице Базы Данных.
  21. $n=mysql_num_rows($result);
  22. if ($n==0)
  23. {echo "Деталь артикль: $article в ящике $table не найдена! <br>";}             
  24. else   
  25. echo "Деталь артикль: $article находится в ящике <b>$table</b><br>";
  26. ?>

Все работает!
Сделали таблицу с номерами ящиков и дополнительными реквизитами.
попробовали автоматизировать поиск:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $article = $_GET['article'];
  3. // Соединиться с Базой Данных  mySQL
  4. $connection=mysql_connect ($baseURL, $username, $password);
  5. if (!$connection) {
  6.   die('Невозможно соединиться с базой данных: ' . mysql_error());
  7. }
  8. // Активировать Базу Данных mySQL
  9. $db_selected = mysql_select_db($database, $connection);
  10. if (!$db_selected) {
  11.   die ('Нельзя использовать БД : ' . mysql_error());
  12. }
  13. $sql = mysql_query("SELECT * FROM sklad;");
  14. if (!$sql) {
  15.   die('Неверный запрос: ' . mysql_error());
  16. }
  17. else
  18. {
  19.     while ($row = mysql_fetch_assoc($sql))
  20.         {
  21.                 $table = $row[box];
  22. // Выборка строк таблицы  в Базе Данных по условию
  23. $query = "SELECT * FROM $table WHERE '$article' >= start and '$article' <= stop";
  24. $result = mysql_query($query);
  25. if (!$result) {
  26.   die('Неверный запрос: ' . mysql_error());
  27. }
  28. //Подсчет найденных строк в таблице Базы Данных.
  29. $n=mysql_num_rows($result);
  30. if ($n==0)
  31. {echo "Деталь артикль: $article в ящике $table не найдена! <br>";}             
  32. else   
  33. echo "Деталь артикль: $article находится в ящике <b>$table</b><br>";
  34.     }
  35. }
  36. ?>

В результате получаем ошибку при обращении к таблице:
$query = "SELECT * FROM $table WHERE '$article' >= start and '$article' <= stop";

Помогите разобраться, пожалуйста...

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB