[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Увеличение переменной
xJlaIIax
Здравствуйте!
Подскажите пожалуйста, есть
Код:
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 написал(а):

Спустя 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 написал(а):
Сделал так:
$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.

Спустя 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
Чет я не понял, а откуда тогда в 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)
blink.gif
Чет я не понял, а откуда тогда в do while первая запись берется?

А я вот сам не знаю.

Спустя 2 минуты, 39 секунд (17.11.2010 - 22:47) inpost написал(а):
Через while, именно поэтому надо перед ней убрать строчку:
$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

Спустя 21 минута, 11 секунд (17.11.2010 - 23:50) xJlaIIax написал(а):
В моём коде лучше использовать echo или print?

Спустя 34 секунды (17.11.2010 - 23:50) kirik написал(а):
xJlaIIax
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 тоже конструкция языка )
Быстрый ответ:

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