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

Форум PHP

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

 

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

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

тема: Почему ругается на массив?
 
 автор: OLi   (21.03.2012 в 16:16)   письмо автору
 
 

$turnir=$db->query("SELECT * FROM `turnir_table` order by id desc");
while($row = $db->get_row ($turnir)){

$row['name'][]=$row['name'];
$row['id'][]=$row['id'];
}

Хочу сформировать массив из имен и id записей, который на стороне js вернуть как json и вывести в цикле

  Ответить  
 
 автор: task   (21.03.2012 в 16:26)   письмо автору
 
   для: OLi   (21.03.2012 в 16:16)
 

Вы врубаетесь в суть того, чего делаете?

  Ответить  
 
 автор: OLi   (21.03.2012 в 16:31)   письмо автору
 
   для: task   (21.03.2012 в 16:26)
 

там лишние []

  Ответить  
 
 автор: OLi   (21.03.2012 в 16:32)   письмо автору
 
   для: OLi   (21.03.2012 в 16:31)
 

мне нужно получить массив имен и id

  Ответить  
 
 автор: task   (21.03.2012 в 16:32)   письмо автору
 
   для: OLi   (21.03.2012 в 16:31)
 

Даже не знаю, как ответить на такое.

  Ответить  
 
 автор: OLi   (21.03.2012 в 16:34)   письмо автору
 
   для: task   (21.03.2012 в 16:32)
 

Ответьте как правильно, я делал уже так:
while ($q=mysql_fetch_array($select_files))

{

$row['files'][]='Запись'; }


И на выходе получай то что мне надо..

  Ответить  
 
 автор: cheops   (21.03.2012 в 16:39)   письмо автору
 
   для: OLi   (21.03.2012 в 16:16)
 

Пока не очень понятно, что вызывает сложности.

  Ответить  
 
 автор: OLi   (21.03.2012 в 16:53)   письмо автору
 
   для: cheops   (21.03.2012 в 16:39)
 

Меня интересует правильная запись занесения в массив

  Ответить  
 
 автор: cheops   (21.03.2012 в 16:57)   письмо автору
 
   для: OLi   (21.03.2012 в 16:53)
 

Вообще конечно так можно, но лучше завести новый массив, иначе при преобразовании массива такими способами, даже если добьетесь правильной работы, можно получить целый букет разнообразных эффектов, которые потом можно долго искать и исправлять.

  Ответить  
 
 автор: OLi   (21.03.2012 в 20:10)   письмо автору
 
   для: cheops   (21.03.2012 в 16:57)
 

Подскажите как будет верно, чтобы в json было все хорошо :)

  Ответить  
 
 автор: task   (21.03.2012 в 20:29)   письмо автору
 
   для: OLi   (21.03.2012 в 20:10)
 

Вы представляете хотя бы, что просходит в вашем сценарии, который вы описываете?
А получаться будет следующее:
при первой итерации цикла переменная $row получит первую строку mysql-ресурса
вы ее зачем-то переопределяете, не знаю, на что надеясь
а в следующей итерации эта переменная получит следующую строку mysql-ресурса
и т.д..., за исключением последнего шага.
Вопрос - что будет с вашим переопределением?

Вам уже ответили - объявите новый массив, причем вне цикла, в который и помещайте вам необходимое.

  Ответить  
 
 автор: OLi   (21.03.2012 в 22:25)   письмо автору
 
   для: task   (21.03.2012 в 20:29)
 

Да - спасибо. Вот только один момент остался под вопросом - в таблице есть поле name (Varchar 255) при занесении в массив $rows['name'][]=$row['name']; и потом просмотра json видим null
В чем проблема?

  Ответить  
 
 автор: task   (21.03.2012 в 22:34)   письмо автору
 
   для: OLi   (21.03.2012 в 22:25)
 

Вы все так и продолжаете вносить свои данные в одну и туже переменную $row? Я для кого все выше писал?
Ваш цикл будет работать до теп пор, пока функция получающая строку ресурса не вернет false, а это обязательно произойдет когда будут получены все строки из ресурса. А это означает, что $row будет равна в итоге совсем не тому, чего вы ожидаете.

  Ответить  
 
 автор: OLi   (21.03.2012 в 22:40)   письмо автору
 
   для: task   (21.03.2012 в 22:34)
 

Вот таков код:

while($row = $db->get_row ($turnir)){
$rows['id'][]=$row['id'];
$rows['name'][]=$row['name'];
$rows['place'][]=$row['place'];
$rows['games'][]=$row['games'];
$rows['win'][]=$row['win'];
$rows['standoff'][]=$row['standoff'];
$rows['lose'][]=$row['lose'];
$rows['goals'][]=$row['goals'];
$rows['score'][]=$row['score'];
}

  Ответить  
 
 автор: task   (21.03.2012 в 22:47)   письмо автору
 
   для: OLi   (21.03.2012 в 22:40)
 

Виноват, припечатали s, что и не заметил.
Зачем все так усложнять (массив), не проще ли

<?
$rows 
= array();
while(
$row $db->get_row ($turnir)) $rows[]=$row
получите туже структуру, что и в ресурсе.

  Ответить  
 
 автор: OLi   (21.03.2012 в 22:58)   письмо автору
 
   для: task   (21.03.2012 в 22:47)
 

Получил такой json:
0: {id:2, place:3, name:null, games:3, win:0, standoff:1, lose:2, goals:0, score:1}
1: {id:1, place:1, name:null, games:2, win:1, standoff:0, lose:0, goals:2, score:3}

Как теперь его выводить в js в цикле?

  Ответить  
 
 автор: task   (21.03.2012 в 23:00)   письмо автору
 
   для: OLi   (21.03.2012 в 22:58)
 

Срествами JS естественно, а как, вот этого я не знаю, чего вам надо, и чего вы хотите. И вообще, об этом в другой раздел.

  Ответить  
 
 автор: deimand   (22.03.2012 в 03:50)   письмо автору
 
   для: task   (21.03.2012 в 20:29)
 

>Вы представляете хотя бы, что просходит в вашем сценарии, который вы описываете?
А> получаться будет следующее:
>при первой итерации цикла переменная $row получит первую строку mysql-ресурса
>вы ее зачем-то переопределяете, не знаю, на что надеясь
>а в следующей итерации эта переменная получит следующую строку mysql-ресурса
>и т.д..., за исключением последнего шага.
>Вопрос - что будет с вашим переопределением?


Если присмотреться внимательно, то никакого переопределения нет. За каждую итерацию создается новый элемент массива.

  Ответить  
 
 автор: task   (22.03.2012 в 07:56)   письмо автору
 
   для: deimand   (22.03.2012 в 03:50)
 

А если еще внимательней?

  Ответить  
 
 автор: deimand   (22.03.2012 в 14:27)   письмо автору
 
   для: task   (22.03.2012 в 07:56)
 

А зачем гадать, всегда можно запустить маленький пример и проверить самому :)

<?php 
           $location 
= array(
                              
'1' => 'Перейти на главную страницу',
                              
'2' => 'Создать еще один информационный блок',
                            );
           
$nerrre = array();
           for (
$i=1$i<=count($location); $i++)
           {
             
$nerrre['index'][] = $location[$i];
           }
print_r($nerrre);

  Ответить  
 
 автор: task   (22.03.2012 в 14:49)   письмо автору
 
   для: deimand   (22.03.2012 в 14:27)
 

Вот только не надо куралесицы. Внимательно прочтите код автора в первом его посте, а не предлагайте то, что я и без вас знаю, и о чем и говорил атору.

  Ответить  
 
 автор: deimand   (22.03.2012 в 15:25)   письмо автору
 
   для: task   (22.03.2012 в 14:49)
 

Да, так и есть.

  Ответить  
 
 автор: task   (22.03.2012 в 15:31)   письмо автору
 
   для: deimand   (22.03.2012 в 15:25)
 

Что так и есть? Его код дас желаемый результат или нет?

  Ответить  
 
 автор: deimand   (22.03.2012 в 16:01)   письмо автору
 
   для: task   (22.03.2012 в 15:31)
 

Так и есть, что я не внимательно посмотрел на первый пост автора.

  Ответить  
Rambler's Top100
вверх

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