Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Многомерные массивы
 
 автор: bigstalker   (02.02.2008 в 14:35)   письмо автору
 
 

Помогите, пожалуйста:
Посылаю запрос в функцию, которая должна вернуть многомерный массив.
То ли неправильно возвращаю, то ли неправильно принимаю. Помогите плз:

function stargroup($matrixid)      /*___Функция: -> вытаскиваем кол-во звёздочек___________*/
{
    $result = mysql_query("SELECT userid, stars FROM ums WHERE matrixid='$matrixid' ORDER BY stars  DESC");
    $myrow = mysql_fetch_array($result);
    $i = 0;
    do {
          $placestar['$i'] = array("userid" =>$myrow['userid'],"stars" => $myrow['stars']);
          $i ++;
    }  while ($myrow = mysql_fetch_array($result));
    return $placestar;
}

из кода запрос выглядит так:

$placestar = stargroup($matrixid);


В функции массив образуется, но после возврата массива нету...
Подскажите где и что я делаю не так?

   
 
 автор: а-я   (02.02.2008 в 14:47)   письмо автору
 
   для: bigstalker   (02.02.2008 в 14:35)
 

А так:


<?
 
function stargroup($matrixid
 {
 
$result mysql_query("SELECT userid, stars FROM ums WHERE matrixid='$matrixid' ORDER BY stars  DESC"); 
  for(
   
$placestar=array();
   
$row=mysql_fetch_assoc($result); 
   
$placestar[]=array("userid" =>$row['userid'],"stars" => $row['stars'])
  )
 return 
$placestar;
 }
?>

   
 
 автор: kasmanaft   (02.02.2008 в 15:24)   письмо автору
 
   для: а-я   (02.02.2008 в 14:47)
 

После for(...) точку с запятой, наверное, надо поставить.

   
 
 автор: ddhvvn   (02.02.2008 в 16:49)   письмо автору
 
   для: kasmanaft   (02.02.2008 в 15:24)
 

Не тот раздел!!!

   
 
 автор: bigstalker   (02.02.2008 в 16:57)   письмо автору
 
   для: а-я   (02.02.2008 в 14:47)
 

Спасибо решил проблему:


function stargroup($matrixid)      /*___Функция: -> вытаскиваем кол-во звёздочек___________*/ 

    $result = mysql_query("SELECT userid, stars FROM ums WHERE matrixid='$matrixid' ORDER BY stars  DESC"); 
    $myrow = mysql_fetch_array($result); 
    $i = 0; 
    do { 
          $placestar[$i] = array("userid" =>$myrow['userid'],"stars" => $myrow['stars']); 
          $i ++; 
    }  while ($myrow = mysql_fetch_array($result)); 
    return $placestar; 
}

'$i' надо писать без ' ', то есть $i
Спасибо
Кстати, это действительно не тот раздел??? А где тогда тот???

   
 
 автор: Trianon   (02.02.2008 в 16:54)   письмо автору
 
   для: bigstalker   (02.02.2008 в 14:35)
 

>То ли неправильно возвращаю, то ли неправильно принимаю. Помогите плз:
>
   $placestar['$i'] = array("userid" =>$myrow['userid'],"stars" => $myrow['stars']); 

>В функции массив образуется, но после возврата массива нету...
Образуется, но с единственным элементом.
Ключом этого элемента является строка из двух символов $ и i , как Вы собственно и просили.

>Подскажите где и что я делаю не так?
Уберите ненужные апострофы.
И размещайте вопросы в разделе php, а не здесь.

   
 
 автор: bigstalker   (02.02.2008 в 16:59)   письмо автору
 
   для: Trianon   (02.02.2008 в 16:54)
 

спасибо!!!

   
 
 автор: vito   (10.02.2008 в 06:46)   письмо автору
 
   для: bigstalker   (02.02.2008 в 16:59)
 

можно сделать, наверное проще

while($arr = mysql_fetch_array($result))
{
     $placestar[] = $arr;
}
return $placestar;

т.к. названия полей в вашей БД соответствуют именам индексов вашего массива

   
 
 автор: Trianon   (10.02.2008 в 11:58)   письмо автору
 
   для: vito   (10.02.2008 в 06:46)
 

тогда уж mysql_fetch_assoc...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования