[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: while ()
RCuPeR
Доброй ночи, форумчане.
Появилась проблемка с использованием цикла while():
Не выводится первое значение с БД. Т.е., допустим в базе у меня 10 строк, выводятся 2, 3, 4...10, первой стоки нету. Что может быть ?
<?php        
$result = mysql_query("SELECT id, title, description, date, author FROM data", $db);
$row = mysql_fetch_assoc($result);

if ($row > 0) {
while ($row = mysql_fetch_assoc($result)) {
printf ("<div class='post'>
<h2><strong><a href='view_post.php?id=%s'>%s</a></strong></h2> <br>
<p>%s</p>

<br><p>Постинг: %s | Автор: %s</p> </div>
"
, $row['id'], $row['title'], $row['description'], $row['date'], $row['author']
);

}
}

else { echo "<strong>Заметок, пока, нет!</strong>";}

?>





Спустя 1 минута, 50 секунд (4.01.2011 - 00:54) inpost написал(а):
Ты шутишь? А не тебе я уже 3 раза говорил пройти курс реабилитации после Попова и исправить код с printf на echo ???

Спустя 8 минут, 49 секунд (4.01.2011 - 01:03) Invis1ble написал(а):
1. Попов детектед =)
2. Двойной fetch_assoc

inpost
Цитата
пройти курс реабилитации после Попова

а зачем? вдруг и так помогут =))

Спустя 2 минуты, 45 секунд (4.01.2011 - 01:06) alex12060 написал(а):

$row = mysql_fetch_assoc($result);
if ($row > 0) {
//


Это как понимать?
Наверное функцию спутал)

Спустя 1 минута, 2 секунды (4.01.2011 - 01:07) inpost написал(а):
RCuPeR
А тут тебе не показывали как выводить через while() ?
http://phpforum.su/index.php?showtopic=35750&st=15

Invis1ble
Я носом его ткнул уже 3 раза (в 3х темах), он каждый раз говорит: "да-да", и через день снова Поповщина...

Спустя 1 минута, 40 секунд (4.01.2011 - 01:08) inpost написал(а):
alex12060
верно подмечено, там должно считать количество строк в БД, а не перещёлкивать =)

Спустя 1 минута, 23 секунды (4.01.2011 - 01:10) alex12060 написал(а):
Я в общем скажу)

$row = mysql_fetch_assoc($result);
<- Сюда ты пишешь 1 запись из БД
Далее каким то макаром проверяешь :D

И далее продолжаешь вывод, только 1 запись то уже была сделана в переменную, поэтому, запись начинается со 2 по N

Вот так вот)

Спустя 3 минуты, 14 секунд (4.01.2011 - 01:13) RCuPeR написал(а):
1. Курс прошел, хватит уже надоедать этим Поповым. Использую +++_assoc($result) вместо +++_array($result) + применяю цикл while() вместо do while().

2. printf + маркеры мне, не знаю как кому, очень удобны. Всё с ними работает, вот только тут чёт...Даже не знаю...

3. Я так понял, лишний mysql_fetch_assoc($result) ?

Спустя 5 секунд (4.01.2011 - 01:13) inpost написал(а):
RCuPeR
Есть ли хоть чуточку уважения тем, кто тебе помогает? Глянь сюда одним глазком:
user posted image

Спустя 2 минуты, 6 секунд (4.01.2011 - 01:15) alex12060 написал(а):
RCuPeR


<?php
$result = mysql_query("SELECT id, title, description, date, author FROM data", $db);
$num = mysql_num_rows($result);

if ($num > 0) {
while ($row = mysql_fetch_assoc($result)) {
printf ("<div class='post'>
<h2><strong><a href='view_post.php?id=%s'>%s</a></strong></h2> <br>
<p>%s</p>

<br><p>Постинг: %s | Автор: %s</p> </div>
"
, $row['id'], $row['title'], $row['description'], $row['date'], $row['author']
);

}
}

else { echo "<strong>Заметок, пока, нет!</strong>";}

?>

Спустя 5 минут, 59 секунд (4.01.2011 - 01:21) RCuPeR написал(а):

inpost, повторяю в сотый раз: курс реабилитации прошёл. Тыкни носом, где у меня ошибки (анти Поповщина), тогда будет приятней говорить.

alex12060, не помогло =(

Спустя 37 секунд (4.01.2011 - 01:22) inpost написал(а):
RCuPeR
Был рождён мальчик, жил поживал, в Х лет решил заняться программированием. Какой-то шарлатан научил писать через printf, одновременно с этим в этот же период встретились ему профессиональные программисты и рассказали, что надо писать через echo (print), а так же многое другое, а так же дали ссылку на: http://irbis-team.com/15/10/5
Маленький мальчик посчитал, что "правильно и легче" писать так, как ему рассказал шарлотан, а не как учат профессионалы, и конкретные доводы проходят мимо ушей.
Вообщем, я посылаю на тебя порчу, теперь любой твой код будет корявым wacko.gif

Спустя 37 секунд (4.01.2011 - 01:22) sergeiss написал(а):
Цитата (RCuPeR @ 4.01.2011 - 02:13)
1. Курс прошел, хватит уже надоедать этим Поповым.

Я тоже чего-то не понял... Это ТЕБЕ ГОВОРЯТ, что ХВАТИТ НАДОЕДАТЬ ПОПОВЫМ!!! Ты думаешь, просто так было написано "Попов детектед"? Нет, не просто так. Потому что кривой поповский код тебе же и мешает в первую очередь. Ты прошел его курс, но мало что понял, судя по коду и задаваемым вопросам.

И я присоединяюсь к настойчивому пожеланию проявлять хоть немного уважения к тем, кто тебе же и помогает.

Спустя 28 секунд (4.01.2011 - 01:23) Invis1ble написал(а):
RCuPeR
printf используется для форматирования результатов, а не простого вывода.... хотя можно и микроскопом гвозди забивать =)

Спустя 1 минута, 25 секунд (4.01.2011 - 01:24) sergeiss написал(а):
Цитата (RCuPeR @ 4.01.2011 - 02:21)
Тыкни носом, где у меня ошибки (анти Поповщина), тогда будет приятней говорить.

Тыкаю вместо инпоста: использование mysql_fetch_assoc лишний раз, еще до начала цикла чтения - это верный признак поповщины (и не единственный).

printf можно тут использовать... Хотя и не имеет особого смысла smile.gif

Спустя 1 минута, 52 секунды (4.01.2011 - 01:26) alex12060 написал(а):
<?php        
$result = mysql_query("SELECT id, title, description, date, author FROM data", $db);
$num = mysql_num_rows($result);

if ($num > 0) {
while ($row = mysql_fetch_assoc($result)) {
echo "<div class='post'>
<h2><strong><a href='view_post.php?id="
.$row['id']."'>".$row['title']."</a></strong></h2> <br>
<p>"
.$row['description']."</p>

<br><p>Постинг: "
.$row['date']." | Автор: ".$row['author']."</p> </div>
"
;
}
}

else { echo "<strong>Заметок, пока, нет!</strong>";}

?>

Спустя 49 секунд (4.01.2011 - 01:27) alex12060 написал(а):
Если и это не поможет, то что то с базой)

Спустя 57 секунд (4.01.2011 - 01:28) inpost написал(а):
RCuPeR
1. Обращение к БД не обрамляешь `` - этими кавычками, что есть рекомендательно, но не обязательно (это я расписал в своём уроке). -собственно из-за этого может и не проходить правильно запрос, если имена ячеек: desc,date,time,link
2. printf - процес медленный в отличии от обычного вывода данных. printf, если не ошибаюсь, использовали для любого вывода программисты C++, или на каком-то другом языке (не помню, но Котеров про это писал), поэтому они перешли с того языка и тут так же пишут. Ты же учишься с нуля и должен понимать, как писать для эфективной работы, иначе смотря на производительность твоего кода ты делаешь счастливым Рубистов и Пёрлщиков (вечный холивар, когда они поливают грязью ПХП в связи с его медлительностью).
3. Используешь такой вид HTML: class='post' вместо class="post", хотя и не будут w3c стандарт ругаться на одинарную кавычку, но правильнее писать именно через двойную.
4. Надо $num = mysql_num_rows($result); как выше написал Алекс, что по своему роду и подразумевается.

Спустя 3 минуты, 13 секунд (4.01.2011 - 01:31) sergeiss написал(а):
И еще. Вот эта часть кода в таком виде не имеет глубокого смысла :)
if ($num > 0) {
while ($row = mysql_fetch_assoc($result)) {
...

Потому что если количество строк в выборке равно нулю, то цикл while просто не будет выполнен ни разу.

Поэтому достаточно сделать сравнение типа такого
if( mysql_num_rows($result) == 0 )
echo "<strong>Заметок, пока, нет!</strong>";

и не важно, до цикла или после него. А перед циклом никаких ИФов не ставь.

PS. Сравнение "== 0" поторопился, не написал сразу. Очепяточка получилась... Исправил.

Спустя 2 минуты, 20 секунд (4.01.2011 - 01:33) inpost написал(а):
sergeiss
Вот я тоже такое часто видел, а у меня notice выскакивает, когда таблица полностью пустая. Поэтому я и стал проверку делать.
Да и понятнее через if-else (мне).

Спустя 26 секунд (4.01.2011 - 01:34) alex12060 написал(а):
if( mysql_num_rows($result) )
echo "<strong>Заметок, пока, нет!</strong>";


Или я дурак, или ты не то написал)
Но если функция вернет число (вместе с тру), то он напишет: Заметок, пока, нет!

Спустя 1 минута, 47 секунд (4.01.2011 - 01:36) sergeiss написал(а):
alex12060 ну, блин, конечно :) Поторопился мальца
if( mysql_num_rows($result) == 0 )

Спустя 3 минуты, 12 секунд (4.01.2011 - 01:39) RCuPeR написал(а):
alex12060, ой, не заметил mysql_num_rows($result)/ Большое тебе спасибо !

Фух... Я Вам говорю, что я прошёл курс реабилитации, и все ошибки которые были описаны там не использую в дальнейшем! Меня научили использовать printf в подобных случаях, я этим пользуюсь, в заметках от ирбис-тим о этой функции сказано только, что она используется для форматирования данных, я не думаю, что это повод отказываться от неё в подобных случаях.

inpost, объяснюсь:
1. Не использую `` по банальной причине, не могу найти эти символы на клаве (позор).
2. Ну тут ладно, буду смотреть и в дальнейшем применять echo. Но ты заметь, что в курсе реабилитации от этом толком ничего не сказано, т.е. у меня не было повода НЕ использовать ptintf.
3. Хм... Если я напишу class="post" вместо class='post', то php мне выдаст множество ошибок, так делать нельзя (или я что-то делаю не так) !
4. Ну это уже моя ошибка, из-за которой я создал эту тему, Попов к этой ошибке не имеет никакого отношения.

Спустя 3 минуты, 18 секунд (4.01.2011 - 01:42) alex12060 написал(а):
Вообще я бы так сделал:


<?php

$sql = mysql_query("SELECT * FROM `data`") or die(mysql_error());

if (mysql_num_rows($sql) > 0) {
while($row = mysql_fetch_array($sql, MYSQL_NUM)) {
echo '<div class="post">
<h2><strong><a href="view_post.php?id='
.$row[0].'">'.$row[1].'</a></strong></h2> <br />
<p>'
.$row[2].'</p>

<br /><p>Постинг: '
.$row[3].' | Автор: '.$row[4].'</p> </div>'."\n\r";
}
}
else {
echo '<strong>Сообщений не поступало.</strong>';
}
?>

Спустя 1 минута, 44 секунды (4.01.2011 - 01:44) inpost написал(а):
RCuPeR
1. Ё
2. Сказано по той ссылке, которую я написал ранее, надо зацитировать или скрин-шот сделать, или сам найдешь? А так же сказано в моём мини-faq (моя подпись)
3. echo '<div class="post">'; - местами меняешь кавычки.
4. Имеешь отношение именно ты, так как у меня до сих пор в голове его голос рассказывает, что обозначает: $myrow = mysql_fetch_array($result);

Спустя 7 секунд (4.01.2011 - 01:44) alex12060 написал(а):
Цитата
3. Хм... Если я напишу class="post" вместо class='post', то php мне выдаст множество ошибок, так делать нельзя (или я что-то делаю не так) !


Я бы сказал) Но буду тактичен)

P.S Буква `Ё`

Спустя 3 минуты, 32 секунды (4.01.2011 - 01:48) alex12060 написал(а):
Инпост все сказал за меня)

Не, все начинали с Попова (почти), лично я, да)
Но почитав, обстроившись, я выработал свой стиль и теперь, о Попове вспоминаю лишь так:
Молодец, подтолкнул к программированию)
И все)

Хватит уже поливать его грязью) Хоть и криво рассказал, но и все-же, в некоторых моментах говорил правильно)

Спустя 4 минуты, 31 секунда (4.01.2011 - 01:52) inpost написал(а):
alex12060
Ещё её называют лябля или лямда... лямба... как-то так =)

SELECT * - по своему смыслу медлительный, лучше указывать все ячейки через запятую, это придаст скорости самому запросу.

Так же не за чем количество строк отправлять в переменную и забивать память, это лишнее, когда данное значение будешь лишь один раз использовать в скрипте

<?php        
$result = mysql_query("SELECT `id`,`title`,`description`,`date`,`author` FROM `data`") or die(mysql_error());
if(mysql_num_rows($result) > 0)
while ($row = mysql_fetch_assoc($result))
echo '
<div class="post">
<h2><strong><a href="view_post.php?id='
.$row['id'].'">'.$row['title'].'</a></strong></h2><br>
<p>'
.$row['description'].'</p><br>
<p>Постинг: '
.$row['date'].' | Автор: '.$row['author'].'</p>
</div>'
;
else
{
echo '<strong>Заметок, пока, нет!</strong>';
}
?>

Спустя 1 минута, 15 секунд (4.01.2011 - 01:53) Invis1ble написал(а):
А мне радоваться, что я не слушал Попова, а сразу начал с Котерова и Костарева? =)

inpost
тильда )

Спустя 2 минуты, 25 секунд (4.01.2011 - 01:56) inpost написал(а):
Invis1ble
Точно, а тот символ где находится и как правильно называется? Или я путаю с математикой? =)
~ - вот тильда =)

Спустя 27 секунд (4.01.2011 - 01:56) RCuPeR написал(а):
Ладно-ладно, хватит уже спорить.
Большое спасибо всем за помощь.
А тебе, inpost, спасибо за пинок под зад, может что-то да и получится, но до мега программиста я ещё не дорос, мне сейчас главное "что бы работало", попробуй меня понять. А искрене сказать спасибо я тебе смогу только когда стану тем самым "программистом", тем, кого ты воспитываешь сейчас.

Спустя 1 минута, 21 секунда (4.01.2011 - 01:58) RCuPeR написал(а):
Мда... Не далеко я ушёл.
Какой функцией можно обрезать строку до определённого количества символов ?

Спустя 2 минуты, 3 секунды (4.01.2011 - 02:00) Invis1ble написал(а):
inpost
ты имеешь "лямбду" ? это греческая буква... вот она - λ
на клаве ее нету )

Спустя 31 секунда (4.01.2011 - 02:00) inpost написал(а):
Гугл: Туда пишем самое главное PHP и добавляем вопрос: "обрезать строку", что тут сложного?
http://www.google.ru/search?hl=ru&source=h...%D0%B5&gs_rfai=

Спустя 36 секунд (4.01.2011 - 02:01) inpost написал(а):
Invis1ble
А жаль, как красиво звучит...

Спустя 42 секунды (4.01.2011 - 02:01) Invis1ble написал(а):
inpost
0x03BB вроде бы в юникоде...

Спустя 45 секунд (4.01.2011 - 02:02) inpost написал(а):
Invis1ble
Может быть, но 0x03BB - теряется всё изящество...

Спустя 1 минута, 37 секунд (4.01.2011 - 02:04) RCuPeR написал(а):
inpost, ну, думал, уже не отходя от кассы...

Спустя 2 минуты, 9 секунд (4.01.2011 - 02:06) alex12060 написал(а):
inpost

Знаю, просто лень было перечислять нужное)

Спустя 3 минуты, 35 секунд (4.01.2011 - 02:10) sergeiss написал(а):
Эх и нафлудили... wink.gif

Насчет Попова - я его вообще не слушал. Мне хватило общения с теми, кто имел неосторожность его слушать.

RCuPeR - у меня в подписи есть ссылка на хэлп по ПХП. Скачай его и просто прочитай его. Последовательно, по порядку. Там содержится ПОЛНОЕ описание языка. Потратишь некоторое время, но зато ты будешь точно знать, что имеется в языке ПХП. Потом тебе надо будет только, может быть, уточнить правильное имя функции да её параметры.

Спустя 2 минуты, 10 секунд (4.01.2011 - 02:12) sharki написал(а):
sergeiss
Добавь еще русский мануал по PHP вот ссыль, мне вот лично приятнее на русском читать))

http://www.softtime.ru/info/php_ru.php

Спустя 12 минут, 18 секунд (4.01.2011 - 02:24) sergeiss написал(а):
sharki - на русском приятнее читать, да. Но только тот мануал, что по моей ссылке, он обновляется чаще, чем делаются русские переводы.

Спустя 14 минут, 51 секунда (4.01.2011 - 02:39) Invis1ble написал(а):
Смотреть всем, особенно ТС http://phpforum.ru/index.php?showtopic=38631


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.