$query = mysql_query("SELECT * FROM `table` WHERE `total`>=`location` ORDER BY RAND() LIMIT ".$kolvo."");
Такая проблема:
например $kolvo = 3;
А в базе только 2 записи, как мне при таком раскладе сделать, что бы выводилось именно 3, то есть что бы 3ья запись была рандомная из этих 2ух
$i = 1;
while($i <= $kolvo)
{
echo '<td width="'.$width.'">'.$row['id'].'</td>';
$i++;
}
Аналогично, если $kolvo =7, а в базе только 3 записи.
Спустя 4 часа, 35 минут, 42 секунды (16.04.2012 - 12:35) Xpund написал(а):
Пожалуйста, помогите, если что то не понятно написал, скажите что именно!
Спустя 3 минуты, 36 секунд (16.04.2012 - 12:39) walerus написал(а):
Чему равно(откуда берется) $width ? и как получаешь - $row['id'] ?
Спустя 6 минут, 33 секунды (16.04.2012 - 12:45) Xpund написал(а):
$width - не обращайте внимания, обычная переменная!
$row['id'] - это тоже переменная, которая будет браться после $row = mysql_fetch_array($query);
$row['id'] - это тоже переменная, которая будет браться после $row = mysql_fetch_array($query);
Спустя 22 минуты, 54 секунды (16.04.2012 - 13:08) walerus написал(а):
Ну так оно же будет так
Будет каждый раз подставлять рандомно из резльтирующго массива данные, если нужно как то иначе, - пиши.
$query = mysql_query("SELECT * FROM `table` WHERE `total`>=`location` ORDER BY RAND() LIMIT ".$kolvo."");
$result_array = array(); // Временной массив с результатами
while ($row = mysql_fetch_array($query , MYSQL_NUM))
{
// Заносим все в масив
$result_array[] = $row["id"];
}
// Теперь твой код
$i = 1;
while($i <= $kolvo)
{
echo '<td width="' . $width . '">' . $result_array[array_rand($result_array)] . '</td>';
$i++;
}
Будет каждый раз подставлять рандомно из резльтирующго массива данные, если нужно как то иначе, - пиши.
Спустя 1 минута, 47 секунд (16.04.2012 - 13:10) Игорь_Vasinsky написал(а):
<?php
$arr = range(0,12);
$i = 0;
//count of lines <tr>
$tr = 7;
// 3 TD on the TR
$td = 3;
$count = $tr*$td;
echo "<table><tr>\r\n";
for($i=0; $i<=$count-1; $i++)
if(isset($arr[$i]))
{
if($i%3 == 0)
echo "</tr><tr>\r\n";
echo "<td>".$arr[$i]."<td>\r\n";
}
else
{
if($i%3 == 0)
echo "</tr><tr>\r\n";
echo "<td>rand:" .$arr[rand(0, sizeof($arr)-1)]."<td>\r\n";
}
echo "</tr></table>\r\n";
?>
0 1 2
3 4 5
6 7 8
9 10 11
12 rand:5 rand:12
rand:8 rand:10 rand:7
rand:4 rand:1 rand:5
Спустя 4 минуты, 33 секунды (16.04.2012 - 13:14) Игорь_Vasinsky написал(а):
можешь обернуть в функцию - 3 аргумента: массив, рядов, ячеек в ряду и работать так:
1. Делаешь выборку из БД в ассоц. массив
2. Формируешь свой индексный массив без пропуска индекса
3. Вызов функции
1. Делаешь выборку из БД в ассоц. массив
2. Формируешь свой индексный массив без пропуска индекса
3. Вызов функции
Спустя 1 минута, 26 секунд (16.04.2012 - 13:16) Xpund написал(а):
Игорь_Vasinsky
Спаибо, попробую всё сейчас, потом отпишу свой вариант!
Спаибо, попробую всё сейчас, потом отпишу свой вариант!
Спустя 2 минуты, 45 секунд (16.04.2012 - 13:18) walerus написал(а):
Xpund - Мой ответ чем то не устроил ?
Спустя 14 минут, 35 секунд (16.04.2012 - 13:33) Xpund написал(а):
walerus
Не заметил
Спасибо!!!
Не заметил

Спасибо!!!
Спустя 2 минуты, 50 секунд (16.04.2012 - 13:36) Xpund написал(а):
Цитата (walerus @ 16.04.2012 - 10:08) |
Ну так оно же будет так
Будет каждый раз подставлять рандомно из резльтирующго массива данные, если нужно как то иначе, - пиши. |
А если несколько переменных из базы вытащить надо, и ещё при этом html оформление, то есть:
echo '<td width="'.$width.'"><div id="pic"><img src="'.$row['pic'].'" border=1 width="70px" height="70px"></div><div id="text"><b><a href="#">'.$row['title'].'</a></b><br>'.$row['text'].'</div></td>';
Спустя 7 минут, 5 секунд (16.04.2012 - 13:43) Xpund написал(а):
И ещё, надо что бы это работало в том случае, если кол-во совпадений в базе меньше нужного!
Спустя 6 минут, 37 секунд (16.04.2012 - 13:50) walerus написал(а):
$query = mysql_query("SELECT * FROM `table` WHERE `total`>=`location` ORDER BY RAND() LIMIT ".$kolvo."");
$result_array = array(); // Временной массив с результатами
while ($row = mysql_fetch_array($query , MYSQL_NUM))
{
// Заносим все в масив
$result_array[] = $row;
}
// Теперь твой код
$i = 1;
while($i <= $kolvo)
{
$tmp_num = array_rand($result_array);
echo '<td width="'.$width.'">'.
'<div id="pic"><img src="'.$result_array[$tmp_num]['pic'].'" border=1 width="70px" height="70px"></div>'.
'<div id="text"><b><a href="#">'.$result_array[$tmp_num]['title'].'</a></b><br>'.$result_array[$tmp_num]['text'].'</div>'.
'</td>';
$i++;
}
Спустя 1 минута, 11 секунд (16.04.2012 - 13:51) walerus написал(а):
Цитата (Xpund @ 16.04.2012 - 10:43) |
И ещё, надо что бы это работало в том случае, если кол-во совпадений в базе меньше нужного! |
Должно работать.
Спустя 2 минуты, 32 секунды (16.04.2012 - 13:53) Xpund написал(а):
walerus
Про последний вариант, показывает 3 колонки, но они пустые, данные из базы не досталются.
Я проверял, все коннекты и название верны, дело именно в коде
Про последний вариант, показывает 3 колонки, но они пустые, данные из базы не досталются.
Я проверял, все коннекты и название верны, дело именно в коде
Спустя 1 минута, 5 секунд (16.04.2012 - 13:54) Игорь_Vasinsky написал(а):
Цитата |
А если несколько переменных из базы вытащить надо, и ещё при этом html оформление, то есть: |
формируешь многомерный смешанный массив (1й у-нь индексны, подуровни ассоц-е)
Цитата |
И ещё, надо что бы это работало в том случае, если кол-во совпадений в базе меньше нужного! |
ну я же 13 элементов рассортировал в 21 ячейку

Спустя 1 минута, 47 секунд (16.04.2012 - 13:56) Xpund написал(а):
Игорь_Vasinsky
Сори, но то что ты написал, для меня это тёмный лес
А вот то, что написал walerus это понятнее
Сори, но то что ты написал, для меня это тёмный лес

А вот то, что написал walerus это понятнее

Спустя 2 минуты (16.04.2012 - 13:58) Игорь_Vasinsky написал(а):
Цитата |
`total`>=`location` ORDER BY RAND() |
это то тебе зачем?
мой пример - сделать всю выборку - упаковать в массив, работать с ним.
т.е. сначала данные в отсортированном виде, в остатках (не хватке - рандомым.)
мой пример - сделать всю выборку - упаковать в массив, работать с ним.
т.е. сначала данные в отсортированном виде, в остатках (не хватке - рандомым.)
Спустя 14 минут, 14 секунд (16.04.2012 - 14:12) Xpund написал(а):
Игорь_Vasinsky
Это просто дополнение, я не особо профессионал, но попрбую в твоих "иероглифах" разобраться, сделаю 2 варианта, посмотрю как работают оба варианта
Это просто дополнение, я не особо профессионал, но попрбую в твоих "иероглифах" разобраться, сделаю 2 варианта, посмотрю как работают оба варианта
Спустя 9 минут, 26 секунд (16.04.2012 - 14:22) walerus написал(а):
Сделай print_r( $result_array ); die();, перед "// Теперь твой код", и выложи что там у тебя.
Спустя 4 минуты, 52 секунды (16.04.2012 - 14:27) Игорь_Vasinsky написал(а):
иероглифы... ну спасибо.
там отчётливо видны настройки, а в цикле фокусы - чтобы сформировать таблицу нужных размеров по настройкам + заполнение пустых ячеек.
там отчётливо видны настройки, а в цикле фокусы - чтобы сформировать таблицу нужных размеров по настройкам + заполнение пустых ячеек.

Спустя 14 минут, 30 секунд (16.04.2012 - 14:41) walerus написал(а):
Ну чего там с результатами?
Спустя 33 минуты, 5 секунд (16.04.2012 - 15:14) Xpund написал(а):
Array ( [0] => Array ( [0] => 1 [1] => Название [2] => Текст не более 120 символов! [3] => # [4] => 1000 [5] => 0 ) [1] => Array ( [0] => 2 [1] => Название [2] => Текст не более 120 символов! [3] => # [4] => 100 [5] => 0 ) )
Спустя 7 минут, 46 секунд (16.04.2012 - 15:22) walerus написал(а):
Цитата |
Таблица 3. Константы выборки MySQL константа описание MYSQL_ASSOC Результат возвращается в ассоциативном массиве с индексами под именами колонок. MYSQL_BOTH Результат возвращается в массиве, содержащем как численные индексы, так и индексы под именами колонок. MYSQL_NUM Результат возвращается в массиве, содержащем численные индексы. Индексы стартуют с 0 (0 содержит первую колонку). |
Сейчас у тебя стоит "MYSQL_NUM" - по этому и не находит по ключам ничего,
смени на MYSQL_ASSOC и проверь.
Спустя 43 минуты, 44 секунды (16.04.2012 - 16:06) Xpund написал(а):
walerus
Спасибо, помогло, большое спасибо всем.
Спасибо, помогло, большое спасибо всем.
_____________
минус, конечно, иногда полезен, но плюс мне нравиться больше :)
Женский журнал - Жена сказала раскрутить сайт любой ценой (Sorry)