$resulttabl = mysql_query("SELECT * FROM tabl WHERE id='$nomid'",$db);
// выдёргиваем одну запись из массива - как результат теряем первую строку
$myrowtabl = mysql_fetch_assoc($resulttabl);
$vivods1 = $myrowtabl['zapis_1']
while ($myrowtabl = mysql_fetch_assoc($resulttabl))
{
// вывод массива, но первая строка пропадает из-за обращения сделанного выше
}
к сожалению ответа найти не смог, только познаю принципы работы php на своих ошибках...
Спустя 14 минут, 28 секунд (22.01.2012 - 05:52) TranceIT написал(а):
$myrowtabl['zapis_1']
Вот он! Этот коварный тип грожданской наружности! Используйте как первый.
Или вначале пройдитесь по всему массиву, а затем обращайтесь к первому элементу.
А вообще есть такая замечательная ф-ция mysql_data_seek()
Спустя 49 секунд (22.01.2012 - 05:53) inpost написал(а):
$myrowtabl = mysql_fetch_assoc($resulttabl);
- выбрал первую запись.
while ($myrowtabl = mysql_fetch_assoc($resulttabl))
- внутри цикла идёт выбор следующей записи. При условии, если записи не были выбраны, но будет выбрана первая, если записи закончились - цикл останавливается.
- выбрал первую запись.
while ($myrowtabl = mysql_fetch_assoc($resulttabl))
- внутри цикла идёт выбор следующей записи. При условии, если записи не были выбраны, но будет выбрана первая, если записи закончились - цикл останавливается.
Спустя 1 минута, 7 секунд (22.01.2012 - 05:54) inpost написал(а):
while()
{
if(!isset($var))
$var = 'text';
}
Итого, переменная будет создана лишь один раз!
Спустя 50 минут, 55 секунд (22.01.2012 - 06:45) DooMka написал(а):
$resulttabl = mysql_query("SELECT * FROM tabl WHERE id='$nomid'",$db);
// выдёргиваем одну запись из массива, самую первую
$myrowtabl = mysql_fetch_assoc($resulttabl);
$vivods1 = $myrowtabl['zapis_1']
do{
// выводится и первая строка массива
}while($myrowtabl = mysql_fetch_assoc($resulttabl));
приведённый выше вариант выводит и первую строку массива, которая уже была в обработке...
пытался использовать функцию
mysql_data_seek
наглядного примера найти не сумел так-что кроме ошибок ничего дельного вывести не удалось...
while()
{
if(!isset($var))
$var = 'text';
}
извиняюсь за недалёкость, но как использовать этот код для вывода и первой строки массива увы не понял
_____________________________
inpost кажется догадался, о чём идёт речь, то-есть как-бы используем этот вариант для выдёргивания именно одной строки, а уже в дальнейшем выводим весь массив с первой строкой соответственно
Спустя 33 минуты, 44 секунды (22.01.2012 - 07:19) inpost написал(а):
DooMka
do-while - это неправильно в твоём примере.
Используй так, как я показал. А для этого надо не быть далёким или не далёким, а надо тестировать и пробовать такой и такой код
do-while - это неправильно в твоём примере.
Используй так, как я показал. А для этого надо не быть далёким или не далёким, а надо тестировать и пробовать такой и такой код
Спустя 2 часа, 56 минут, 19 секунд (22.01.2012 - 10:15) sergeiss написал(а):
По сути дела сказали уже. А я при виде кода первая же мысль "Попов детектед"
Спустя 5 минут, 23 секунды (22.01.2012 - 10:21) inpost написал(а):
sergeiss
Зато какая ностальгия! Сейчас это огромная редкость встретить код Попова
Зато какая ностальгия! Сейчас это огромная редкость встретить код Попова
Спустя 13 минут, 32 секунды (22.01.2012 - 10:34) sergeiss написал(а):
Цитата (inpost @ 22.01.2012 - 11:21) |
Сейчас это огромная редкость встретить код Попова |
Не знаю, не знаю... И тут периодически встречается, и на англоязычном форуме очень подобное видел Там только нету второго признака поповского кода, которые есть тут. Это - название переменное $myrow
Спустя 1 час, 41 минута, 23 секунды (22.01.2012 - 12:15) asokol написал(а):
$result = mysql_query("SELECT [заменить на список нужных полей] FROM `tabl` WHERE `id`={$nomid};", $db);
$vivods1 = NULL;
while($row = mysql_fetch_assoc($result)) {
if (!isset($vivods1)) {
$vivods1 = $row['zapis_1'];
// необходимые действия с первой записью
}
// вывод массива, первая строка не пропадает, так как нет лишнего обращения
}
Спустя 7 часов, 21 минута, 33 секунды (22.01.2012 - 19:37) DooMka написал(а):
Всем огромное спасибо, погуглив и почитав кое-какие статьи сумел-таки понять принцип работы, в чём заключалась моя ошибка и вот её устранение, и именно как-бы так выразится "обнуление счётчика" с помощью mysql_data_seek
число "0" указывает с какой строки начинать вывод массива. Всем огромное спасибо.
mysql_data_seek($resulttabl, 0);
while ($myrowtabl = mysql_fetch_assoc($resulttabl))
{
// вывод массива, но первая строка пропадает из-за обращения сделанного выше
}
число "0" указывает с какой строки начинать вывод массива. Всем огромное спасибо.
Спустя 42 минуты, 32 секунды (22.01.2012 - 20:20) sergeiss написал(а):
Цитата (DooMka @ 22.01.2012 - 20:37) |
в чём заключалась моя ошибка.... |
На самом деле твоя ошибка заключалась в другом, и тебе её указали. Тебе просто не надо было вызывать mysql_fetch_assoc до того, как ты вошел в цикл. Тогда и вызов "обнуления счетчика" тебе не понадобится (странное название, однако ).
Я практически уверен, что ты так и оставил mysql_fetch_assoc, затем добавил mysql_data_seek, а затем уже у тебя идет цикл чтения данных...
Спустя 13 минут, 52 секунды (22.01.2012 - 20:33) DooMka написал(а):
Да, я так и оставил, но догадался я об этом с самого начала, проблема была в невозможности обойти мной данной конструкции, страница должна была вывести автора добавления данных в базу в самом её верху, а уже ниже выводились все опубликованные им материалы в перечислении... Выловить автора либо из get либо каким-либо другим способом не было возможным. Но уже сейчас понимаю, каким путём нужно реализовывать конструкцию страницы с более информативным выводом
Спустя 3 минуты, 44 секунды (22.01.2012 - 20:37) Winston написал(а):
Спустя 5 минут, 24 секунды (22.01.2012 - 20:43) sergeiss написал(а):
Цитата (DooMka @ 22.01.2012 - 21:33) |
но догадался я об этом с самого начала, проблема была в невозможности обойти мной данной конструкции |
Элементарно обходится данная "проблема"!!! Смотри сюда:
...=mysql_query(.....);
// на данном этапе сделан запрос, но выборка данных не делалась
$first_line=true;
while( $row=mysql_fetch_assoc(.... ) )
{
if( $first_line )
{
$first_line=false;
// тут выполняется некий код, работающий с данными в первой строке
// например, выводится заголовок таблицы
....
}
// а далее выполняется код для всех строк
...
}
Так что не надо насчет "не обходится". Думать надо :) и любая проблема может быть решена. Часто - достаточно простыми средствами.