Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Обращение к таблице, имя которой выбирается из другой таблицы

 PHP.SU

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


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

> Описание: Имеется много таблиц имена которых хранятся в отдельной таблице, нужно произвести поиск последовательно во всех таблицах, выбирая имена из таблицы с именами.
star-ik
Отправлено: 20 Июня, 2008 - 21:27:08
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июнь 2008  


Помог: 0 раз(а)




Пример: на складе есть большое количество ящиков с ячейками, в которых хранятся детали, каждая деталь имеет артикль (цифровой номер). Если из формы сделать запрос по номеру ящика и артиклю, то можно воспользоваться следующим кодом:
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";

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

(Отредактировано автором: 20 Июня, 2008 - 21:28:05)

 
 Top
RomAndry Администратор
Отправлено: 20 Июня, 2008 - 22:22:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




$query = "SELECT * FROM $table WHERE start>='$article' and stop<='$article'";
сделайте echo $query и осмотрите оно или нет
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB