Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ODBC+MSSQL Server 2000 
V
    Опции темы
TatyanaSemenova
  Дата 7.6.2009, 19:59 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 7.6.2009

Репутация: нет
Всего: нет



у меня есть БД в Microsoft SQL Server 2000. В ней 34 таблицы. На главной странице сайта есть форма для поиска.  По идее нужно сделать запрос на выбор значений из таблицы которые совпадают с искомым словом. Для этого нужно получить список таблиц и затем, в цикле, подставлять имена таблиц в запрос и выводить информацию из таблиц соответствующую искомому слову. По логике вроде всё верно. Мне проеподаватель в институте тоже так сказал делать. Но вот в чём проблема. Я пишу код, но ничего не получается. Похоже я что-то напутала с функциями, да и с самим циклом.....
Вот мой код:

Цитата

<?php
error_reporting(E_ERROR);
//Соединение с базой данных MySQL
$conn=odbc_connect('KatalogSQL','PROMEK','promek');
if (!$conn) {   
    exit("Connection Failed: " . $conn);
}
// Получение списка баз данных, находящихся на сервере
$list_bd = mysql_list_dbs();
$name_bd=mysql_tablename($list_bd); // возращает имена баз данных
$list_tab=mysql_list_tables($conn); // возращает список таблиц находящихся в базе данных
$koll_tab=mysql_num_rows($list_tab); // возращает количество таблиц в списке
$name_tab = mysql_tablename($list_tab);//возращает имена таблиц

for ($i=0; $i<$koll_tab; $i++){
echo "234";
    $_POST['search'] =  substr(htmlspecialchars(trim($_POST['search'])), 0, 100);
    $sql = "SELECT * FROM '.$name_tab.' WHERE Name LIKE '%".$_POST['search']."%' ";
    $rs=mysql_query($conn,$sql);
    $nf=mysql_num_fields($rs);
    if (!$rs) {
         exit("Error in SQL");
    }
     echo "<table border=1";
    //заголовок таблицы
    echo "<tr>";
    for($i=0; $i<$nf;$i++){
       $field=mysql_field_name($rs,$i);
       echo "<th>".$field."</th>";
    }
    echo "</tr>";
    while(mysql_fetch_row($rs)){
       echo "<tr>";
       for($j=0;$j<$nf;$j++){
          $val=mysql_result($rs,$j);
          echo "<td>".$val."</td> ";
       }
      echo "</tr>";
    }
}
echo "</table>";
mysql_free_result($rs);
mysql_close($conn);
?>


Помогите разобраться....
PM MAIL   Вверх
bars80080
Дата 7.6.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



а случаем к MSSQL функции начинаются не с mssql_ , а не mysql_ ?
http://www.php.ru/manual/function.mssql-query.html



п.с. код оформляется не цитатой, а кнопкой "код"

PM MAIL WWW   Вверх
TatyanaSemenova
Дата 7.6.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 7.6.2009

Репутация: нет
Всего: нет



Цитата(bars80080 @ 7.6.2009,  21:17)
а случаем к MSSQL функции начинаются не с mssql_ , а не mysql_ ?
http://www.php.ru/manual/function.mssql-query.html


Изначально я использовала функции odbc, затем mysql. В  mssql нет функции для получения списка таблиц - mysql_list_tables.
Самое интересное, что браузер не выдает оишбок, просто пустая страница...
PM MAIL   Вверх
bars80080
Дата 7.6.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



а 

Код

echo mysql_error(); 


после каждого запроса делали?
PM MAIL WWW   Вверх
lelik133
Дата 8.6.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

Репутация: 3
Всего: 14



как может расширение mysql общаться с базой mssql ???
если
Цитата

В  mssql нет функции для получения списка таблиц - mysql_list_tables.

думаете функция mysql_* сработает?

Цитата

Самое интересное, что браузер не выдает оишбок, просто пустая страница... 

а вы смените error_reporting на E_ALL;

PM ICQ   Вверх
SneG0K
Дата 8.6.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: нет
Всего: 54



TatyanaSemenova, вы смешали три базы данных в одну. Они между собой никак не связаны.
PM WWW Skype   Вверх
TatyanaSemenova
Дата 8.6.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 7.6.2009

Репутация: нет
Всего: нет



Цитата(SneG0K @ 8.6.2009,  11:28)
TatyanaSemenova, вы смешали три базы данных в одну. Они между собой никак не связаны.

Да, я уже поняла что я перепутала все базы....

Добавлено через 1 минуту и 35 секунд
Я решила сделать поиск абсолютно по-другому... Пусть будет примитивно, но зато я сама смогу сделать...
P.s. В любом случае спасибо ребята за советы. В будщем пригодятся )))
PM MAIL   Вверх
SneG0K
Дата 8.6.2009, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: нет
Всего: 54



Обращайтесь! Всегда поможем.
PM WWW Skype   Вверх
skyboy
Дата 8.6.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(TatyanaSemenova @  7.6.2009,  20:26 Найти цитируемый пост)
В  mssql нет функции для получения списка таблиц - mysql_list_tables.

я помню, в MSSQL есть какие-то информационные system tables. типа, таблицы tables, в которой список таблиц в текущей БД. 
PM MAIL   Вверх
TatyanaSemenova
Дата 8.6.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 7.6.2009

Репутация: нет
Всего: нет



Ребята, у меня ещё один вопрос возник...
Я делаю выборку из базы данных Microsoft SQL Server 2000. Подключение делается через odbc-инсточник. После выполнения запроса мне нужно посчитать кол-во возвращемых строк. Я использую функцию odbc_num_rows(). Но возвращаемое значение всегда -1. На сайте написано следуещее:
odbc_num_rows() возвращает число строк в ODBC результате. Эта функция вернет -1 при ошибке. Для команд INSERT, UPDATE и DELETE odbc_num_rows() вернет число обработанных строк. Для случая SELECT это может быть число доступных строк.
Замечание: Использование odbc_num_rows() для определения числа строк, доступных после SELECT вернет -1 у многих драйверов.

ВОПРОС - как мне в таком случае посчитать кол-во возвращемых строк???

Это сообщение отредактировал(а) TatyanaSemenova - 8.6.2009, 13:19
PM MAIL   Вверх
skyboy
Дата 8.6.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



если запрос прост и выполняется быстро - выполни отдельный запрос "SELECT count(*) FROM ..."
если запрос сложен, то, предполагаю, ты и так обработаешь полученные с таким трудом данные. значит, можно завести счетчик и при обработке данных инкрементировать этот счетчик.
заодно удивлюсь: неужто сложно было зайти в ман? в статье о odbc_num_rows практически в начале указано следующее:
Цитата(http://php.net/odbc_num_rows)

Note: Using odbc_num_rows() to determine the number of rows available after a SELECT will return -1 with many drivers. 

PM MAIL   Вверх
TatyanaSemenova
Дата 8.6.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 7.6.2009

Репутация: нет
Всего: нет



Цитата(skyboy @ 8.6.2009,  15:16)
если запрос прост и выполняется быстро - выполни отдельный запрос "SELECT count(*) FROM ..."
если запрос сложен, то, предполагаю, ты и так обработаешь полученные с таким трудом данные. значит, можно завести счетчик и при обработке данных инкрементировать этот счетчик.
заодно удивлюсь: неужто сложно было зайти в ман? в статье о odbc_num_rows практически в начале указано следующее:
Цитата



Спсибо. Вопрос уже решен. 
чтобы  функция odbc_num_rows заработала нужно было всего лишь добавить в запрос фразу ORDER BY..........
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0605 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.