Функцией printf форматирую таблицу, в каждой строке которой четыре ячейки:
картинка1|описание картинки1|картинка2|описание картинки2
А получается везде: картинка 1|описание картинки1|картинка 1|описание картинки1.
А картинка2 - во второй строке и тоже два раза. Прошу помощи с кодом. Вот мой код (упрощенный):
<?php do
{
printf( "<tr>
<td>
<img src='%s'>
</td>
<td>
<p>Описание: %s</p>
</td>
<td>
<img src='%s'>
</td>
<td>
<p>Описание: %s</p>
</td>
</tr>
", $myrow['pic'], $myrow['about'], $myrow['pic'], $myrow['about']);
}
while($myrow = mysql_fetch_array($result))
?>
Подскажите правильный алгоритм скрипта. Спасибо.
И ещё: почему, когда вместо do-printf-while прописываю while-printf, первая строка пропадает. Выводятся 2-я, 3-я и т.д. строки.
Спустя 8 минут, 22 секунды (17.05.2011 - 11:50) Krevedko написал(а):
у тебя два раза
$myrow['pic']
вот два раза и выводит одинаково. а ты что хотел ? )
$myrow['pic']
вот два раза и выводит одинаково. а ты что хотел ? )
Спустя 5 минут, 35 секунд (17.05.2011 - 11:56) Krevedko написал(а):
правильный алгоритм
1) Цикл делай через while.
2) Выводи через эхо.
ненадо нам этой Поповщины
3) Выводи две ячейки. Название и описание. Далее проверяешь, если ячеек выведено две, то добавляем '</tr><tr>'. Сделать это можно разными способами. Скажем счетчик и проверка на 2 с обнулением или остаток от деления на 2
1) Цикл делай через while.
2) Выводи через эхо.
ненадо нам этой Поповщины
3) Выводи две ячейки. Название и описание. Далее проверяешь, если ячеек выведено две, то добавляем '</tr><tr>'. Сделать это можно разными способами. Скажем счетчик и проверка на 2 с обнулением или остаток от деления на 2
Спустя 40 минут, 47 секунд (17.05.2011 - 12:37) linker написал(а):
while() {} а не do {} while().
Спустя 1 минута, 59 секунд (17.05.2011 - 12:39) Krevedko написал(а):
вообще-то я это уже час назад ему написал
Спустя 21 час, 3 минуты, 27 секунд (18.05.2011 - 09:42) MrBrown написал(а):
Сделал пока так (без проверки условия на четность):
Новая беда - не выводится первая строка. Сразу начинает показывать вторую.
Как исправить?
<?php
while($myrow = mysql_fetch_array($result))
echo"<tr height='120' align='left' bgcolor='#e9e9e9'>
<td width='110px'>$myrow[pic]</td>
<td width='300px'bgcolor='#e9e9e9'>$myrow[about]</td>
</tr>";
?>
Новая беда - не выводится первая строка. Сразу начинает показывать вторую.
Как исправить?
Спустя 8 минут, 53 секунды (18.05.2011 - 09:51) Renden написал(а):
MrBrown
может кавычки надо так раставить?
может кавычки надо так раставить?
<?php
while($myrow = mysql_fetch_assoc($result)) {
echo '<tr height="120" align="left" bgcolor="#e9e9e9">
<td width="110px">'.$myrow['pic'].'</td>
<td width="300px" bgcolor="#e9e9e9">'.$myrow['about'].'</td>
</tr>';
}
?>
Спустя 17 минут, 21 секунда (18.05.2011 - 10:08) MrBrown написал(а):
Согласен. Мне самому стало смешно :)
Но все равно первой записи не видно.
Может я запрос неправильно составил?
без всяких условий типа
Только это тоже не помогает.
Но все равно первой записи не видно.
Может я запрос неправильно составил?
$result = mysql_query ("SELECT * FROM sample",$db);
без всяких условий типа
WHERE `id`='$id'
Только это тоже не помогает.
Спустя 44 минуты, 45 секунд (18.05.2011 - 10:53) MrBrown написал(а):
Всё получилось после поисков решений в сети. Содрал отсюда:
Может, кому-то пригодится.
Если есть замечания по коду, с благодарностью приму и переделаю.
Всем спасибо. Можно закрыть тему.
http://www.sql.ru/forum/actualthread.aspx?tid=150413
и переделал под себя:<?php
$i=1;$in=1;
do
{
$csn = array("<tr><td>","<td>");
$cs = array("</td> ","</td></tr>");
$id=$myrow["id"];
$pic=$myrow["pic"];
$about=$myrow["about"];
print $csn[++$in % 2];
print $pic;
echo'</td><td>';
print $about;
print $cs[++$i % 2];}
while ( $myrow = mysql_fetch_array($result) )
?>
Может, кому-то пригодится.
Если есть замечания по коду, с благодарностью приму и переделаю.
Всем спасибо. Можно закрыть тему.
Спустя 1 час, 24 минуты, 23 секунды (18.05.2011 - 12:17) Krevedko написал(а):
да ну неможет этого быть. признавайся..у тебя до while
есть что-то вроде
$myrow = mysql_fetch_assoc($result);
?
а do - while забудь. его юзают только говнокодеры и Попов. за редкими исключениями, когда он удобен (но не в этом случае).
есть что-то вроде
$myrow = mysql_fetch_assoc($result);
?
а do - while забудь. его юзают только говнокодеры и Попов. за редкими исключениями, когда он удобен (но не в этом случае).
Спустя 3 часа, 34 минуты, 8 секунд (18.05.2011 - 15:51) MrBrown написал(а):
Первое: Естественно, выше php-кода есть запрос, разные проверки на существование данных.
Второе: Я бы рад забыть do - while, да, блин, не выводится первая строка способом while. Не понимаю, почему.
И третье: вот многие ругают Попова. А зря. Ведь по жизни - как человек становится чемпионом? Сначала в школе его тренирует физрук со своей программой. Потом новый тренер в секции говорит: твой физрук-говно, слухай сюды. И тренирует уже по-новому. Дальше-больше: заметили парня (девчонку) на областных соревнованиях, взяли в сборную. И уже совсем новый тренер повторяет ту же фразу про первых двух тренеров. И тренирует по-своему, ведя его (её) к медали. Так что, несмотря на свои неправильные методики, Попов многим дал ход в интернет. Ну да, конечно, приходится переучиваться. Так ведь вся жизнь - учёба. Ладно, это уже офф-топ.
Возвращаюсь к началу поста: как вывести первую строку способом while, а не do-while?
Спасибо.
Второе: Я бы рад забыть do - while, да, блин, не выводится первая строка способом while. Не понимаю, почему.
И третье: вот многие ругают Попова. А зря. Ведь по жизни - как человек становится чемпионом? Сначала в школе его тренирует физрук со своей программой. Потом новый тренер в секции говорит: твой физрук-говно, слухай сюды. И тренирует уже по-новому. Дальше-больше: заметили парня (девчонку) на областных соревнованиях, взяли в сборную. И уже совсем новый тренер повторяет ту же фразу про первых двух тренеров. И тренирует по-своему, ведя его (её) к медали. Так что, несмотря на свои неправильные методики, Попов многим дал ход в интернет. Ну да, конечно, приходится переучиваться. Так ведь вся жизнь - учёба. Ладно, это уже офф-топ.
Возвращаюсь к началу поста: как вывести первую строку способом while, а не do-while?
Спасибо.
Спустя 8 минут, 2 секунды (18.05.2011 - 16:00) Krevedko написал(а):
Цитата |
Возвращаюсь к началу поста: как вывести первую строку способом while, а не do-while? |
убрать сверху строку
$myrow = mysql_fetch_assoc($result);
Спустя 15 часов, 30 минут, 47 секунд (19.05.2011 - 07:30) MrBrown написал(а):
Гы, получилось!
