мне нужно вернуть массив значений полученных из БД Код (Text): class Test { function SELECT_CHAR_SESS_ID(){ $cont = mysql_connect($GLOBALS["db_ip"], $GLOBALS["db_user"], $GLOBALS["db_pw"]); mysql_select_db($GLOBALS["c_db"], $cont); mysql_query("SET NAMES '".$GLOBALS['encode']."'"); $query = mysql_query('SELECT * FROM `characters` WHERE `account` = "'.$_SESSION['user_id'].'"'); $row = mysql_fetch_assoc($query); return $row; } } Код (Text): while ($userchar = $query->SELECT_CHAR_SESS_ID()){ System::getFlag($userchar['race']); System::getRace($userchar['race'], $userchar['gender']); System::getClass($userchar['class']); } Должно получится 2 раза.. а получается бесконечно =( как решить данную проблему?
PHP: $row = $query->SELECT_CHAR_SESS_ID(); foreach($row as $val){ System::getFlag($val['race']); System::getRace($val['race'], $userchar['gender']); System::getClass($val['class']); } Кажется должно получиться
Volt(220), ну SELECT_CHAR_SESS_ID() по идеи должен вернуть ассоциированный массив всех чаров данного юера.
Код (Text): $this->ConnectChar(); $query = mysql_query('SELECT * FROM `characters` WHERE `account` = "'.$_SESSION['user_id'].'"'); while ($userchar= mysql_fetch_assoc($query)){ echo '<tr bgcolor="FF8040">'; echo '<td width = "130"><center><b>Имя</b></center></td>'; echo '<td><center><b>Инфа</b></center></td>'; echo '<td width = "75"><center><b>Уровень</b></center></td>'; echo '<td><center><b>Деньги</b></center></td>'; echo '</tr><tr><td>'; echo '<center><a href = "http://'.$_SERVER['HTTP_HOST'].'/'.$armory_dir.'/?player='.$userchar['guid'].'" target = "_blank">'.$userchar['name'].'</a></center>'; echo "</td><td>"; $sys->getFlag($userchar['race']); $sys->getRace($userchar['race'], $userchar['gender']); $sys->getClass($userchar['class']); echo "</td><td><center><h4>".$userchar['level']."</h4></center></td><td>"; $sys->getMoney($userchar['money']); echo "</td></tr>"; } если сделать так то всё норм.. но мне так ненужно!
ExDragon 1) Я не спрашивал что он "по идее должен вернуть" я спрашивал что он делает. 2) Где в нем идет взятие из базы всех чаров?
Volt(220) Не совсем понял вопрос О_0, этот метод конектится к базе, собирает инфу о чаре по id юзера... [sql]SELECT * FROM `characters` WHERE `account` = "'.$_SESSION['user_id'].'"[/sql] вот он берёт всю инфу о чаре принадлежащие $_SESSION['user_id'] их может быть несколько, например структура базы (mangos) +-characters-------+ -guid -name -account -race- -class -и остальные пример: 100, Name, 51, 5, 3 101, Name2, 51, 4, 5 102, Name3, 51, 8, 2 Мне нужно отобразить их в таблице
Метод: PHP: <?php function SELECT_CHAR_SESS_ID(){ $cont = mysql_connect($GLOBALS["db_ip"], $GLOBALS["db_user"], $GLOBALS["db_pw"]); mysql_select_db($GLOBALS["c_db"], $cont); mysql_query("SET NAMES '".$GLOBALS['encode']."'"); $query = mysql_query('SELECT * FROM `characters` WHERE `account` = "'.$_SESSION['user_id'].'"'); $row = mysql_fetch_assoc($query); return $row; } 1)Коннектится к серверу БД. 2)Выбирает БД. 3)Устанавливает кодировку. 4)Посылает запрос 5)Берет первую строчку из запроса 6)Возвращает эту строчку. Вот что делает метод. А теперь ответь на второй вопрос: "Где в нем идет взятие из базы всех чаров?"
Именно! а как же так сделать тогда? потому и while бесконечный.. следователь так нельзя =( надо продумать ООП =) подскажите как вернуть всех чаров в запросе
Изменить метод так чтобы он возвращал нужный массив. Или возвращать из метода ресурс и затем его фетчить в цикле.
а как? что за массив или что за ресурс? PHP: function ConnectChar() { $cont = mysql_connect($GLOBALS["db_ip"], $GLOBALS["db_user"], $GLOBALS["db_pw"]); mysql_select_db($GLOBALS["c_db"], $cont); mysql_query("SET NAMES '".$GLOBALS['encode']."'"); return $cont; } function Close($conn) { mysql_close($conn); } function getDB($getdb) { switch ($getdb){ case 'characters': case 'char': return 'characters'; break; case 'acc': case 'account': return 'account'; break; } } function SELECT($n, $f, $w){ $this->ConnectChar(); $query = mysql_query('SELECT '.mysql_escape_string($n).' FROM `'.$this->getDB(mysql_escape_string($f)).'` WHERE '.mysql_escape_string($w).''); $this->Close($this->ConnectChar()); return $query; } как насчёт этого? это безопасно? как "фетчить" цикл?
1)не надо подключаться и отключаться перед/после каждого запроса. В начале программы подключились в конце отключились. 2)Что значит как? Вот же ж. Код (Text): while ($userchar= mysql_fetch_assoc($query)){ 3)Массив с чарами. 4)Ресурс связанный с результатами запроса. Или вопрос в том что такое "ресурс"? 5)Зачем mysql_escape_string($f) при передачи парметра в $this->getDB()? getDB() не возвращает значения по умолчанию. 6)Не ""фетчить" цикл", а "фетчить в цикле".