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
Форумы портала PHP.SU :: Версия для печати :: Выполнить 1 запрос и использовать его в других функциях
Форумы портала PHP.SU » » Работа с СУБД » Выполнить 1 запрос и использовать его в других функциях

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

1. vanicon - 28 Августа, 2011 - 23:02:00 - перейти к сообщению
Здравствуйте форумчане!
У меня появилась одна проблема которую очень хочется решить, но пока не знаю как это сделать. Есть 2 функции, 1 функция выводит записи моих друзей, 2 функция выводит друзей моих друзей, и в каждой из них мне приходиться узнавать логины моих друзей для дальнейших действий. И получается как бы что одна и таже информация(логины моих друзей) выбирается из БД 2 раза. Думаю нужно сделать 1 запрос к БД для выбора всех моих друзей(логинов) и записать результаты в какой-нибудь массив, и этот массив уже передавать 2 этим функциям. Подскажите как мне это сделать, или же есть какой-нибудь другой вариант решения моей проблемы?
2. DeepVarvar - 28 Августа, 2011 - 23:17:04 - перейти к сообщению
Написать один раз класс для работы с БД и соответствующим методом "запоминания" результатов запросов.

Если еще не доросли до ООП - напишите в виде ф-ций используя глобальный массив.
3. LIME - 28 Августа, 2011 - 23:45:43 - перейти к сообщению
рекурсия напрашивается какая-нибудь причем
4. vanicon - 28 Августа, 2011 - 23:46:12 - перейти к сообщению
Цитата:
Написать один раз класс для работы с БД и соответствующим методом "запоминания" результатов запросов.

Ну насчет класса для работы с БД, он уже есть просто в нем нет этого(запоминание результатов запросов ). А как его можно сделать(запоминание результатов запроса)?
5. DeepVarvar - 29 Августа, 2011 - 01:26:46 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. private $results = array();
  2.  
  3. function __construct() { ........
  4. ........
  5.  
  6. function saveResult($name,$result) {
  7.   $this->results[$name] = $result;
  8.   }
  9.  
  10. function getResult($name) {
  11.   return $this->results[$name];
  12.   }
  13. .......

PHP:
скопировать код в буфер обмена
  1. $res = $db->query("SELECT bla bla bla... FROM menu bla bla bla...");
  2. $db->saveResult("menu",$res);
  3. unset($res);
  4. .......
  5. .......
  6. var_dump($db->getResult("menu"));

Я не знаю как ваш класс выглядит, поэтому вынес все наружу - а сам бы я сделал все внутри, и некоторые методы приватными.
Показываю тут лишь принцип...
6. vanicon - 30 Августа, 2011 - 04:56:01 - перейти к сообщению
Цитата:
Я не знаю как ваш класс выглядит, поэтому вынес все наружу - а сам бы я сделал все внутри, и некоторые методы приватными.
Показываю тут лишь принцип...

DeepVarvar, Прописал в класс 2 метода, 1 для сохранения результата (сделал его исполнения в нутрии конструктора класса и сделал иго приватным), другой для выдачи сохраненного результата(этот метод публичный для использование в не класса). И вроде методы работают, но как то не так как нужно, я могу получить результат запроса но только 1 строку, а мне как бы нужно было выбирать все строки в запросе. Ну чтобы понятнее было вот исходный код самого запроса:
PHP:
скопировать код в буфер обмена
  1.  
  2. function get_php_chitaet($login){
  3. $MySQLConnect = new MySQLConnect(DB_SERVER, DB_USER, DB_PASSWORD);
  4. $MySQLResult = $MySQLConnect->CreateResult("SELECT chitaet FROM info_chitaet WHERE chitatel = '".$login."'", "info_".$db_config, 'chitaet');
  5. $array = mysql_fetch_array($MySQLResult->getResult('chitaet'));
  6. return $array;
  7. }
  8.  

И потом я вызываю эту функцию на главной странице и передаю этот параметр($array) другим функциям нуждающимся в нем.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $sql_info = get_php_chitaet('ivan');
  3. get_posts('ivan',$sql_info);
  4.  

И в функции get_posts() мне нужно знать всех моих друзей(их логины), но переменная $sql_info хранит массив, но как бы со одним значением(один логин друга)
7. alxfro - 01 Сентября, 2011 - 10:00:29 - перейти к сообщению
Не понял

 

Powered by ExBB FM 1.0 RC1