Подскажите пожалуйста, есть
Код:
do
{
printf
('<input type="checkbox" name="C%s" value="+" %s><label>%s</label><br>',$myrow2["cat"],$C1,$myrow2["name"]);
}
while ($myrow2 = mysql_fetch_array($result2));
Нужно сделать, так что бы при следующем выводе переменная $C1 стала $C2 и так по порядку.
Спустя 1 минута, 8 секунд (17.11.2010 - 17:36) Basili4 написал(а):
1. сходить сюда http://phpforum.ru/index.php?showtopic=32799
Спустя 59 минут, 43 секунды (17.11.2010 - 18:36) Nikitian написал(а):
Не делать так!
$i=1;
do
{
printf
('<input type="checkbox" name="C%s" value="+" %s><label>%s</label><br>',$myrow2["cat"],$GLOBALS['C'.$i++],$myrow2["name"]);
}
while ($myrow2 = mysql_fetch_array($result2));
Но это говнокод и я его вам не советовал.
Спустя 2 часа, 18 минут, 6 секунд (17.11.2010 - 20:54) xJlaIIax написал(а):
Говнокод printf или увеличение переменной?
Спустя 9 минут, 40 секунд (17.11.2010 - 21:04) inpost написал(а):
Перебросить всё в массив, вид будет: $c[0],$c[1], и использовать увеличение:
$number = 0;
{
lalala; $number++; echo $c[$number];
}
Спустя 1 час, 16 минут, 23 секунды (17.11.2010 - 22:20) xJlaIIax написал(а):
Сделал так:
Всё работает.
Хотел спросить всё равно код не очень получился?
Там не так много выводится будет, раз 15.
$cat = 1;
do
{
print '<input type="checkbox" name="C'. $myrow2["cat"] .'" value="+" '. $GLOBALS['C'.$cat++] .'><label>'. $myrow2["name"] .'</label><br>';
}
while ($myrow2 = mysql_fetch_assoc($result2));
Всё работает.
Хотел спросить всё равно код не очень получился?
Там не так много выводится будет, раз 15.
Спустя 5 минут, 16 секунд (17.11.2010 - 22:25) Nikitian написал(а):
Говнокод - плодить переменные там, где логичнее использовать массив.
Говнокод - использовать цикл do-while для получения данных и бд, где правильнее цикл while.
Говнокод - использовать цикл do-while для получения данных и бд, где правильнее цикл while.
Спустя 31 секунда (17.11.2010 - 22:26) kovaldm написал(а):
Почему do while? Просто while чем не подошел?
Спустя 8 минут, 43 секунды (17.11.2010 - 22:35) xJlaIIax написал(а):
Цитата (kovaldm @ 17.11.2010 - 19:26) |
Почему do while? Просто while чем не подошел? |
Если я делаю без do:
$cat = 1;
while ($myrow2 = mysql_fetch_assoc($result2))
{
print '<input type="checkbox" name="C'. $myrow2["cat"] .'" value="+" '. $GLOBALS['C'.$cat++] .'><label>'. $myrow2["name"] .'</label><br>';
}
То у меня почему, то начинает выводится с базы с таблицы не первая запись, а вторая.
Спустя 51 секунда (17.11.2010 - 22:36) xJlaIIax написал(а):
Не подскажите вообще лучше использовать print или printf?
Спустя 1 минута, 16 секунд (17.11.2010 - 22:37) inpost написал(а):
print, или его аналог echo. printf совсем для других целей. Я использую echo, так как короче.
Спустя 1 минута, 57 секунд (17.11.2010 - 22:39) kovaldm написал(а):
![blink.gif](http://phpforum.ru/html/emoticons/blink.gif)
Чет я не понял, а откуда тогда в do while первая запись берется?
Спустя 5 минут, 7 секунд (17.11.2010 - 22:44) xJlaIIax написал(а):
Цитата (inpost @ 17.11.2010 - 19:37) |
print, или его аналог echo. printf совсем для других целей. Я использую echo, так как короче. |
Тога лучше делать так?
$cat = 1;
do
{
echo '<input type="checkbox" name="C'. $myrow2["cat"] .'" value="+" '. $GLOBALS['C'.$cat++] .'><label>'. $myrow2["name"] .'</label><br>';
}
while ($myrow2 = mysql_fetch_assoc($result2));
Спустя 42 секунды (17.11.2010 - 22:45) xJlaIIax написал(а):
Цитата (kovaldm @ 17.11.2010 - 19:39) |
![]() Чет я не понял, а откуда тогда в do while первая запись берется? |
А я вот сам не знаю.
Спустя 2 минуты, 39 секунд (17.11.2010 - 22:47) inpost написал(а):
Через while, именно поэтому надо перед ней убрать строчку:
$myrow2 = mysql_fetch_assoc($result2);
!!!
$myrow2 = mysql_fetch_assoc($result2);
!!!
Спустя 1 минута, 52 секунды (17.11.2010 - 22:49) kovaldm написал(а):
Цитата (inpost @ 17.11.2010 - 22:47) |
Через while, именно поэтому надо перед ней убрать строчку: $myrow2 = mysql_fetch_assoc($result2); !!! |
А где у него она перед циклом?
Спустя 2 минуты, 19 секунд (17.11.2010 - 22:51) kovaldm написал(а):
xJlaIIax
Вот такая строчка есть перед циклом?
$myrow2 = mysql_fetch_assoc($result2);
Вот такая строчка есть перед циклом?
Спустя 7 минут, 35 секунд (17.11.2010 - 22:59) inpost написал(а):
kovaldm
да, есть, иначе бы бралось с первой позиции.
да, есть, иначе бы бралось с первой позиции.
Спустя 2 минуты, 22 секунды (17.11.2010 - 23:01) kovaldm написал(а):
Убрать ее нафик. Или можно еще парочку таких же влепить, тогда и do while не поможет.)))
Спустя 9 минут, 24 секунды (17.11.2010 - 23:11) xJlaIIax написал(а):
Что-то я не совсем понял, что надо здесь убрать(приведи в пример готовый код):
$cat = 1;
while ($myrow2 = mysql_fetch_assoc($result2))
{
echo '<input type="checkbox" name="C'. $myrow2["cat"] .'" value="+" '. $GLOBALS['C'.$cat++] .'><label>'. $myrow2["name"] .'</label><br>';
}
Спустя 3 минуты, 26 секунд (17.11.2010 - 23:14) kovaldm написал(а):
Вот это
есть до приведенного тобой кода?
$myrow2 = mysql_fetch_assoc($result2)
есть до приведенного тобой кода?
Спустя 10 минут, 54 секунды (17.11.2010 - 23:25) xJlaIIax написал(а):
Угу есть :)
Убрал и всё заработало.
Вообщем получилось так:
Что скажите нормальный код?
Убрал и всё заработало.
Вообщем получилось так:
$cat = 1;
$result2 = mysql_query("SELECT cat, name FROM categories");
while ($myrow2 = mysql_fetch_assoc($result2))
{
echo '<input type="checkbox" name="C'. $myrow2["cat"] .'" value="+" '. $GLOBALS['C'.$cat++] .'><label>'. $myrow2["name"] .'</label><br>';
}
Что скажите нормальный код?
Спустя 2 минуты, 17 секунд (17.11.2010 - 23:27) kovaldm написал(а):
Нормальный.
Спустя 1 минута, 10 секунд (17.11.2010 - 23:29) kirik написал(а):
Цитата (inpost @ 17.11.2010 - 14:37) |
print, или его аналог echo |
print - не совсем аналог echo.
Цитата (kovaldm @ 17.11.2010 - 14:39) |
Чет я не понял, а откуда тогда в do while первая запись берется? |
Это же поповский код
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 21 минута, 11 секунд (17.11.2010 - 23:50) xJlaIIax написал(а):
В моём коде лучше использовать echo или print?
Спустя 34 секунды (17.11.2010 - 23:50) kirik написал(а):
xJlaIIax
echo
echo
Спустя 7 минут, 15 секунд (17.11.2010 - 23:58) Nikitian написал(а):
Цитата (xJlaIIax @ 17.11.2010 - 20:50) |
В моём коде лучше использовать echo или print? |
В этом виде без разницы.
На спичечных тестах выигрывает echo без конкатенации строк (с множеством параметров), но это мелочи.
Спустя 22 минуты, 49 секунд (18.11.2010 - 00:20) xJlaIIax написал(а):
Хочу всех поблагодарить за помощь и спасибо за ссылку насчёт курса Попова, буду править весь сайт!
Спустя 18 минут, 12 секунд (18.11.2010 - 00:39) inpost написал(а):
kirik
После Попова не стоит забивать голову лишним. Поэтому для него принт и эхо - равны. Хотя я знаю разницу... =)
После Попова не стоит забивать голову лишним. Поэтому для него принт и эхо - равны. Хотя я знаю разницу... =)
Спустя 8 часов, 59 минут, 1 секунда (18.11.2010 - 09:38) linker написал(а):
echo не функция, а конструкция языка, следовательно работает быстрее.
Спустя 46 минут, 38 секунд (18.11.2010 - 10:24) kirik написал(а):
Цитата (linker @ 18.11.2010 - 01:38) |
echo не функция, а конструкция языка, следовательно работает быстрее. |
print тоже конструкция языка. А медленее потому что кривая сама по себе :) Теоретически она должна возвращать true или false в зависимости от того, получилось-ли вывести или нет (тоже для php смысла ноль). Однако эта функция (наверное единственная в php) возвращает _всегда одно и тоже_ значение. Зачем такое надо было делать - мне не понятно :)
UPD
Единственное разумное применение функции print это:
$b = 1;
$b ? print 'OK' : print('FAIL');
Спустя 1 час, 26 секунд (18.11.2010 - 11:25) linker написал(а):
print хоть и конструкция, но вызывается как функция, потому и результат возвращает. И даже в данном примере оно не разумно
echo $b ? 'OK' : 'FAIL';
Спустя 3 минуты, 57 секунд (18.11.2010 - 11:29) kirik написал(а):
Цитата (linker @ 18.11.2010 - 03:25) |
И даже в данном примере оно не разумно |
Я имею ввиду что print можно использовать в тернарных операторах.
$b ? some_fn(...) : print('FAIL');
Спустя 4 минуты, 53 секунды (18.11.2010 - 11:34) linker написал(а):
В некоторых случаях да. print() конечно странная бойда.
Спустя 1 час, 45 минут, 11 секунд (18.11.2010 - 13:19) Nikitian написал(а):
linker
print тоже конструкция языка )
print тоже конструкция языка )