[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: printf
Rigel
   <?php
$sql = "SELECT * FROM `article` WHERE `cat`=".$cat;
$result = mysql_query($sql) or die("ERROR: ".mysql_error());

while ($row = mysql_fetch_assoc($result))
{
printf("<table border='1' cellpadding='0' cellspacing='0' class='article_table'>
<tr>
<td height='30' colspan='3'>%s</td>
<td width='20%' height='30'>Комментарии ()</td>
</tr><tr>
<td height='322' colspan='4'>%s</td>
</tr><tr>
<td width='47%' height='30'>Категория: %s</td>
<td width='16%'>Дата добавления: %s</td>
<td colspan='2'>Добавил: %s</td>
</tr>
</table>"
, $row['title'], $row['text'], $row['cat'], $row['date'], $row['author']);
}
?>



пишет:

Warning: printf() [function.printf]: Too few arguments in Z:\home\site\www\viewcat.php on line 46

Почему так? Вроде меток %s - 5 штук, аргументов из массива row тоже пять.



Спустя 7 минут (13.12.2009 - 23:11) Joker написал(а):
Сделай так и забудь про printf ну покрайнемере для таких ситуациях.


<?PHP
$sql = "SELECT * FROM `article` WHERE `cat`=".$cat;
$result = mysql_query($sql) or die("ERROR: ".mysql_error());

while ($row = mysql_fetch_assoc($result))
{
echo "<table border='1' cellpadding='0' cellspacing='0' class='article_table'>
<tr>
<td height='30' colspan='3'>"
.$row['title']."</td>
<td width='20%' height='30'>Комментарии ()</td>
</tr><tr>
<td height='322' colspan='4'>"
.$row['text']."</td>
</tr><tr>
<td width='47%' height='30'>Категория: "
.$row['cat']."</td>
<td width='16%'>Дата добавления: "
. $row['date']."</td>
<td colspan='2'>Добавил: "
.$row['author']"</td>
</tr>
</table>"
;
}
?>

Спустя 2 минуты, 32 секунды (13.12.2009 - 23:14) Rigel написал(а):
Joker
спасибо! Работает! smile.gif

Спустя 2 минуты, 18 секунд (13.12.2009 - 23:16) Joker написал(а):
всегда пожалуйста.

Спустя 19 минут, 22 секунды (13.12.2009 - 23:36) sergeiss написал(а):
А если используешь printf, то ВНИМАТЕЛЬНО ИЗУЧИ специфику его формата!!!
Знак % имеет особое значение. Поэтому для вывода этого знака в тексте надо вместо <td width='16%'> написать <td width='16%%'>. Тогда в браузер будет передано <td width='16%'>

Спустя 48 минут, 51 секунда (14.12.2009 - 00:24) Krevedko написал(а):
принтФ-у еще попов помню учил..я им даже пользовался в начале..
но потом мне сказали, что принтф-ами и всякими там heredoc пользуются только гр..ные индусы )) и я перестал

Спустя 9 часов, 42 минуты, 18 секунд (14.12.2009 - 10:07) sergeiss написал(а):
Цитата (Krevedko @ 14.12.2009 - 01:24)
но потом мне сказали, что принтф-ами и всякими там heredoc пользуются только гр..ные индусы )) и я перестал

И зря перестал smile.gif Просто нужно для каждой фичи находить наиболее правильное использование.
printf - это форматированный вывод. Вот и надо его использовать в первую очередь тогда, когда надо получить какой-то четкий формат. Например, для вещественных чисел. Это будет более наглядно (на мой взгляд).
Вывод строк - да, не нужен printf. Да и то с оговорками...

Короче говоря, в программировании не так уж и много "абсолютных" решений, когда надо действовать каким-то определенным образом и никак иначе. printf к ним не относится.

Быстрый ответ:

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