Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2010, 16:34   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Заполнить массив циклом

PHP код:
for($i=0;$i<count($r);$i++)
{
   
$up_query1=mysql_query("SELECT * FROM `sb_eng` WHERE `eng_id`= \"".$id."\" LIMIT 1");
list(
$up_array1) = mysql_fetch_array($up_query1);
 while(
$up mysql_fetch_array($up_query1)) 
{
$up_array1[i][]=Array('eng_id' => $up[eng_id], 'eng_us' => $up[eng_us], 'eng_sen' => $up[eng_sen], 

'eng_var' => $up[eng_var], 'eng_dop' => $up[eng_dop], 'eng_date' => $up[eng_date]);}
   
$id=next ($r);
}
echo(
$up_array1[0][eng_sen]); 
Хочу за каждый процесс цикла пихать в массив по строчке. С грамотностью не очень) Не работает, как правильно написать?
Krasi вне форума Ответить с цитированием
Старый 12.07.2010, 16:36   #2
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Видно левый код, ну или не видно немного полезного кода, но я скажу, что одна колонка после селекта вместо звезды и echo в цикле выводят все правильно (list, fetch).
Krasi вне форума Ответить с цитированием
Старый 12.07.2010, 16:45   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Ужасный код... Оптимизация автору только снится.
А не работает потому что в $up_array1[i][] забыл $ поставить перед i
Хотя лучше бы оно и дальше не работало... Я боюсь таких циклов.

А ещё там везде кавычки потеряны между [ и ]
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 12.07.2010, 19:29   #4
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

$ поставил, и дальше не работает. кавычки, все-таки, не понял, где потеряны. Ну вопрос раздваивается, во-первых, где ошибся, во-вторых - хочу узнать насчет оптимизации. Ну мне вообще надо вывести набор случайных строк из бд, переменная r это обеспечивает. В бд не использую RAND(), так как охота попробовать написать на php, а еще прочитал, что лучше грузить сервер, чем базу, при большом объеме данных в ней.
Krasi вне форума Ответить с цитированием
Старый 13.07.2010, 11:19   #5
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Вот тебе решение на PHP.
PHP код:
$amount 10// сколько строк выбирать из базы
$rows mysql_result(mysql_query('SELECT COUNT(*) FROM `sb_eng`'), 0);
$fquery = array();
while (
count($fquery) < $amount) {
    
$fquery[] = '(SELECT * FROM `sb_eng` LIMIT '.rand(, $rows).', 1)';
}
$query implode(' UNION '$fquery);
$res mysql_query($query); 
У тебя будет чистый набор рандомных строк из таблицы. Быстро и эффективно.
Плюс не забываем про замечательную функцию mysql_fetch_assoc
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 14.07.2010, 08:20   #6
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Пытался разобраться, но не очень понял алгоритм и про Union в imolode и про цифры 0 и 1 в запросах после скобок и запятых. Не получилось, пробовал переделать по-разному, но вот так тоже выдает ошибку:
PHP код:
 $amount 2// сколько строк выбирать из базы 
$rows mysql_result(mysql_query('SELECT COUNT(*) FROM `sb_eng`'), 0); 
$fquery = array(); 
while (
count($fquery) < $amount) { 
    
$fquery[] = "(SELECT * FROM `sb_eng` LIMIT '.rand(, $rows).', 1)"

$query implode(' UNION '$fquery); 
$res mysql_query($query);
list(
$aa)=mysql_fetch_assoc($res);
echo(
$aa); 
Krasi вне форума Ответить с цитированием
Старый 14.07.2010, 10:25   #7
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Сравни ОЧЕНЬ ВНИМАТЕЛЬНО мой код и тот, что выложил ты. И тебе откроется ужасная тайна PHP программирования.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 14.07.2010, 11:16   #8
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Не открылась=( Ну я только поменял одинарные кавычки на двойные, а в конце попробовал получить хоть какой-то ответ от базы. Без последних двух строк в скрипте ошибки не появляются, а так ошибка в применении fetch assoc.

ЗЫ: еще на всякий случай сделал число выборок поменьше, но чем меньше - тем, я думаю, лучше. Я пробовал уже оставить 10.
Krasi вне форума Ответить с цитированием
Старый 14.07.2010, 11:52   #9
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

PHP код:
$amount 10// сколько строк выбирать из базы
$rows mysql_result(mysql_query('SELECT COUNT(*) FROM `sb_eng`'), 0);
$fquery = array();
while (
count($fquery) < $amount) {
    
$fquery[] = '(SELECT * FROM `sb_eng` LIMIT '.rand(, $rows).', 1)';
}
$query implode(' UNION '$fquery);
$res mysql_query($query);
while (
$aa mysql_fetch_assoc($res)) {
print_r($aa);

А так?
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 15.07.2010, 19:08   #10
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

PHP код:
$amount 10// сколько строк выбирать из базы 
$rows mysql_result(mysql_query('SELECT COUNT(*) FROM `sb_eng`'), 0); 
$fquery = array(); 
while (
count($fquery) < $amount) { 
    
$fquery[] = "(SELECT * FROM `sb_eng` LIMIT '.rand(, $rows).', 1)"

$query implode(' UNION '$fquery); 
$res mysql_query($query); 
while (
$aa mysql_fetch_assoc($res)) { 
print_r($aa); 

Пишет тоже самое: "mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource". =(
(Поправил только кавычки у массива.)

Последний раз редактировалось Krasi; 15.07.2010 в 19:11.
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнить массив змейкой NeGaTiVe Помощь студентам 9 28.03.2011 17:08
как заполнить массив рандомно ronny137 Помощь студентам 9 02.05.2010 21:25
Двумерный массив заполнить так... Natalya17 Паскаль, Turbo Pascal, PascalABC.NET 3 30.04.2010 11:39
Заполнить массив в классе boris-blade Общие вопросы .NET 1 11.03.2010 22:28
Задача на массив с циклом Superlotles Помощь студентам 1 17.10.2009 16:46