[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Аргументами
RUB
В коде имеется ошибка. Помогите найти
PHP
<?php 
        $result 
mysql_query ("SELECT * FROM news ORDER BY id DESC LIMIT 2"$db);
        
$myrow mysql_fetch_array ($result);
        do
        {
printf ("<table width='100%' border='0' cellspacing='0' cellpadding='8' align='center'>
        <tr> 
        <td class='a12w'><b><font color='#E4FF00'>%s</font></b><br /><br />
        <a href='view_news.php?id=%s'>%s</td>
        </tr>
          </table>
          <table width='100%' border='0' cellspacing='0' cellpadding='0' align='center'>
        <tr> 
        <td align='right'><img src='images/sp_2_0608_23.gif' /></td>
        </tr>
          </table>"
$myrow ["id"], $myrow ["date"], $myrow ["description"]);
 }
        while (
$myrow mysql_fetch_array ($result));


В браузере выходит ошибка
Warning: printf() [function.printf]: Too few arguments in
строка </table>", $myrow ["id"], $myrow ["date"], $myrow ["description"]);



Спустя 4 минуты, 27 секунд (16.10.2009 - 23:27) sergeiss написал(а):
1. ЗАБУДЬ про такую структуру

Цитата (RUB @ 17.10.2009 - 00:23)
$myrow = mysql_fetch_array ($result);
do
{
...
}
while ($myrow = mysql_fetch_array ($result));

как о страшном сне!!! Поповщина, едрит его об угол...

По-нормальному надо делать
PHP
while ($myrow = mysql_fetch_array ($result))
{
// тут то самое содержимое цикла, что у тебя сделано
}


2. Всё правильно smile.gif У тебя указано в строке 2 шаблона параметров, а самих параметров - три.

Спустя 7 минут, 56 секунд (16.10.2009 - 23:35) RUB написал(а):
Цитата (sergeiss @ 16.10.2009 - 20:27)
1. ЗАБУДЬ про такую структуру

Цитата (RUB @ 17.10.2009 - 00:23)
$myrow = mysql_fetch_array ($result);
do
{
...
}
while ($myrow = mysql_fetch_array ($result));

как о страшном сне!!! Поповщина, едрит его об угол...

По-нормальному надо делать
PHP
while ($myrow = mysql_fetch_array ($result))
{
// тут то самое содержимое цикла, что у тебя сделано
}


2. Всё правильно smile.gif У тебя указано в строке 2 шаблона параметров, а самих параметров - три.

та жа ошибка выходит

Спустя 6 минут, 40 секунд (16.10.2009 - 23:42) sergeiss написал(а):
Цитата (RUB @ 17.10.2009 - 00:35)
та жа ошибка выходит

Так а что ты изменил-то, чтобы эта ошибка ушла? Количество параметров у printf или количество шаблонов у него же???

Спустя 2 минуты, 55 секунд (16.10.2009 - 23:45) twin написал(а):
Про printf тоже забудь. smile.gif
Пользуй нормальные print или echo

Спустя 1 минута, 14 секунд (16.10.2009 - 23:46) sergeiss написал(а):
twin - пусть он для начала поймет, где тут ошибся smile.gif А потом можно будет и коррекцию сделать.

Спустя 43 секунды (16.10.2009 - 23:47) RUB написал(а):
Цитата (sergeiss @ 16.10.2009 - 20:42)
Цитата (RUB @ 17.10.2009 - 00:35)
та жа ошибка выходит

Так а что ты изменил-то, чтобы эта ошибка ушла? Количество параметров у printf или количество шаблонов у него же???

если не трудно напиши полностью весь код от <? и до ?>
извини конечно за беспокойство

Спустя 5 минут, 44 секунды (16.10.2009 - 23:53) sergeiss написал(а):
Цитата (RUB @ 17.10.2009 - 00:47)
если не трудно напиши полностью весь код от <? и до ?>

Оно не трудно, наверное... Но ты и сам в состоянии найти ошибку smile.gif Для тебя это будет полезнее.

Даю направление поиска (сначала я немного не то и не о том сказал).
Ты указываешь формат для функции printf. Знак процент (%) имеет особое значение для этого формата, он говорит о том, что далее идет шаблон вывода переменной, указанной далее в списке аргументов функции printf.
Поэтому, если ты хочешь вывести знак % как символ, его надо повторить ДВАЖДЫ!!! Тогда в итоге он будет выведен один раз.

Учти - это относится именно к форматам функций printf, sprintf, fprintf, но не к обычным символьным строкам.

Спустя 11 минут, 42 секунды (17.10.2009 - 00:04) RUB написал(а):
Цитата (sergeiss @ 16.10.2009 - 20:53)
Цитата (RUB @ 17.10.2009 - 00:47)
если не трудно напиши полностью весь код от <? и до ?>

Оно не трудно, наверное... Но ты и сам в состоянии найти ошибку smile.gif Для тебя это будет полезнее.

Даю направление поиска (сначала я немного не то и не о том сказал).
Ты указываешь формат для функции printf. Знак процент (%) имеет особое значение для этого формата, он говорит о том, что далее идет шаблон вывода переменной, указанной далее в списке аргументов функции printf.
Поэтому, если ты хочешь вывести знак % как символ, его надо повторить ДВАЖДЫ!!! Тогда в итоге он будет выведен один раз.

Учти - это относится именно к форматам функций printf, sprintf, fprintf, но не к обычным символьным строкам.

ничего не получается, может я не то делаю
напиши пожалуйста весь код как надо

Спустя 8 минут, 33 секунды (17.10.2009 - 00:13) SunSet написал(а):
PHP
$result mysql_query ("SELECT * FROM news ORDER BY id DESC LIMIT 2"$db);
        while (
$myrow mysql_fetch_array ($result))
        {
printf ("<table width='100%%' border='0' cellspacing='0' cellpadding='8' align='center'>
        <tr> 
        <td class='a12w'><b><font color='#E4FF00'>%s</font></b><br /><br />
        <a href='view_news.php?id=%s'>%s</td>
        </tr>
          </table>
          <table width='100%%' border='0' cellspacing='0' cellpadding='0' align='center'>
        <tr> 
        <td align='right'><img src='images/sp_2_0608_23.gif' /></td>
        </tr>
          </table>"
,$myrow["id"],$myrow["date"],$myrow["description"]);
 }

rolleyes.gif

Спустя 3 минуты, 53 секунды (17.10.2009 - 00:17) RUB написал(а):
все отлично работает ))) только вместо date вылезает id

Спустя 53 секунды (17.10.2009 - 00:18) SunSet написал(а):
RUB
Потому что ты вставляешь вместо date - id. Логично?

Спустя 5 минут (17.10.2009 - 00:23) RUB написал(а):
Цитата (SunSet @ 16.10.2009 - 21:18)
RUB
Потому что ты вставляешь вместо date - id. Логично?

и как мне исправить?
и еще этот код для левой колонки новости
а вот основной текст пропал ((((

Спустя 5 минут, 17 секунд (17.10.2009 - 00:28) SunSet написал(а):
RUB
У тебя в функции printf() идет вывод следующим образом - сначала ставятся знаки "%s", потом за ним должен следовать вывод чеголибо. Получаются такие пары -

PHP
printf ("Тут выведится первое значение: %s, а вот здесь второе - %s",$myrow["any1"],$myrow["any2"]);


Вывод происходит поочередно. Вот и смотри в какой поочередности у тебя расположены за конструкцией printf() твои переменные. Если нужно поменять порядок вывода - изменяй поочередность этих переменный.
А текста нету потому что ты сам не казал его выводить. Он не домашнее животное, чтобы понимать по твоему взгляду.

Спустя 7 минут, 16 секунд (17.10.2009 - 00:35) RUB написал(а):
Цитата (SunSet @ 16.10.2009 - 21:28)
RUB
У тебя в функции printf() идет вывод следующим образом - сначала ставятся знаки "%s", потом за ним должен следовать вывод чеголибо. Получаются такие пары -

PHP
printf ("Тут выведится первое значение: %s, а вот здесь второе - %s",$myrow["any1"],$myrow["any2"]);


Вывод происходит поочередно. Вот и смотри в какой поочередности у тебя расположены за конструкцией printf() твои переменные. Если нужно поменять порядок вывода - изменяй поочередность этих переменный.
А текста нету потому что ты сам не казал его выводить. Он не домашнее животное, чтобы понимать по твоему взгляду.

все получилось спасибо большое SunSet
только вот основной текст страницы не выводиться
вообщем есть левая колонка где все две последние новости показываются, что только сейчас мы исправили и новости показываются на каждой странице с левой стороны, а вот основной текст страницы не показывается
не знаю что и как сделать

Спустя 4 минуты, 32 секунды (17.10.2009 - 00:40) SunSet написал(а):
$myrow["text"] - это и есть переменная для вывода твоего текста.
Если просто вывести ее -
PHP
echo $myrow["text"];
Если в конструкции printf -
PHP
printf("Траляля, %s, траляля",$myrow["text"]);
Но надо в цикле это делать, чтоб вывелись все новости из базы.

Спустя 7 минут, 13 секунд (17.10.2009 - 00:47) RUB написал(а):
всееееееееееее получилось и работаееееееееееет
урааааааааааааааааааааааааааааааааааа
всеееееееееееем спасииииииибооооооооооооооооо

Спустя 2 минуты, 2 секунды (17.10.2009 - 00:49) SunSet написал(а):
smile.gif

Спустя 10 минут, 52 секунды (17.10.2009 - 01:00) twin написал(а):
Ну вот. Еще одна заблудшая душа... Сейчас на радостях везде printf() пихать будет...
Ты уж если пишешь готовый код, пиши корректно. Услуга то медвежачия...
PHP
<?php
 
    $result 
mysql_query ("SELECT * FROM news ORDER BY `id` DESC LIMIT 2"$db);

    while (
$myrow mysql_fetch_assoc ($result))
    {
        print (
'<table width="100%" border="0" cellspacing="0" cellpadding="8" align="center">
        <tr> 
        <td class="a12w"><b><font color="#E4FF00">'
$myrow['date'] .'</font></b><br /><br />
        <a href="view_news.php?id='
$myrow['id'] .'">'$myrow['description'] .'</td>
        </tr>
          </table>
          <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
        <tr> 
        <td align="right"><img src="images/sp_2_0608_23.gif" /></td>
        </tr>
          </table>'
);
     }

Спустя 19 минут, 45 секунд (17.10.2009 - 01:20) SunSet написал(а):
twin
А чем он некорректен? Я же не придумал эту функцию, есть такая, рабочая, для выполнения нужной задачи подходит. Почему не использовать? Лично мне почемуто привычней через printf работать, чем через echo или print, в одной строке все переменных находятся и видно что используется, а не нужно искать по всему куску где что.

Спустя 33 минуты, 20 секунд (17.10.2009 - 01:53) twin написал(а):
Ты знаешь для чего в ней буква f? Это format. Функция предназначена в первую очередь для форматирования данных, а не для простого вывода в поток. Вот когда нужно допустим вывести число в таком виде 2.00 то тогда она к месту. А так только ухудшает читабельность и вообще никчему. Это тоже самое, что использовать preg_replace() там, где можно спокойно поставить str_replace().
Кроме того, зачем использовать аттавизм из 3-й версии php mysql_fetch_array(), Память лишняя завелась?
Ну и про кавычки. Все таки в html валидно использовать кавычки а не апострофы. А в php апострофы работают быстрее.
Так что вот.

Спустя 5 минут, 48 секунд (17.10.2009 - 01:59) SunSet написал(а):
twin
А почему лично к омне такие притензии? sergeiss написал с использованием mysql_fetch_array, к нему с твоей стороны ни слова, тогда после того как я выложил топикстартеру рабочий вариант следует такая критика с твоей стороны?
Да, я знаю про printf когда еще читал "основы пхп4".
С таким то отношением к помощи, может вообще мне не подсказывать ничего?

Спустя 6 минут, 31 секунда (17.10.2009 - 02:05) twin написал(а):
sergeiss не писал готового решения. а как раз наоборот, хотел автора заставить самого разобраться что к чиму. по порядку. вон - меня пресек сходу))). а ты влез. и влез с корявым кодом. по этому и претензь. mad.gif

Спустя 14 минут, 32 секунды (17.10.2009 - 02:20) SunSet написал(а):
Слова sergeiss:
Цитата
По-нормальному надо делать

PHP 
while ($myrow = mysql_fetch_array ($result))
{
// тут то самое содержимое цикла, что у тебя сделано
}

почемуто ты на этом этапе не возразил, что это "не нормально" mad.gif Потому и мне нечего менять, раз для sergeiss использование mysql_fetch_array показалось правильным.
Да и не утверждаж я что это будет рационально для использования - но то что будет работать так факт. Автор не понял про двойной синтаксис %% для указания процентов таблицы, на что я и привел ему пример.

Спустя 32 минуты, 38 секунд (17.10.2009 - 02:52) kirik написал(а):
Нуу, браццы, опять шумим'с? smile.gif

Спустя 3 минуты, 49 секунд (17.10.2009 - 02:56) SunSet написал(а):
kirik
Да, ну блин, в который раз уже так. Человек о чемто спросил - молчанка часовая, тут новичек какойто напишет, посоветует, потом толпа заходит в топ и заклевывает того новичка что функция не та, кавычки не нужны, скобка не обязателльна. Нет, лучше все дружно помолчим и человеку от того легче станет с ег опроблемой, зато ниодной ошибки никто не допустит mad.gif
Не ошибается тот, кто ничего не делает.

Спустя 7 минут, 17 секунд (17.10.2009 - 03:04) kirik написал(а):
SunSet
Знаем, плавали smile.gif Это как дедовщина smile.gif Что говорил Карлсон? "Спокойствие, только спокойствие!" ну а потом оппивался забродившим вареньем и улетал smile.gif

Спустя 7 часов, 59 минут, 14 секунд (17.10.2009 - 11:03) twin написал(а):
Цитата
почемуто ты на этом этапе не возразил, что это "не нормально"

да потому, что он не дал готового решения, которое радостный топикстартер немедленно воткнет в свой скрипт и будет радоваться жизни. И все остальное будет писать в том же духе. Я больше чем уверен, если бы они разбирались до конца, то исправили бы и этот момонт. А если нет, то тогда бы я
Цитата
возразил, что это "не нормально"

А что касается дедовщины и
Цитата
С таким то отношением к помощи, может вообще мне не подсказывать ничего?
почитай это. Это мой кстати совет. smile.gif

Спустя 17 минут, 10 секунд (17.10.2009 - 11:20) sergeiss написал(а):
SunSet - спокойнее, спокойнее smile.gif

Цитата (SunSet @ 17.10.2009 - 03:20)
почемуто ты на этом этапе не возразил, что это "не нормально"

На том этапе речь шла о "глобальной" структуре скрипта, о том, какой цикл лучше использовать. Поэтому я написал сначала структуру, которую сделал он, а затем - измененную структуру. Но - в терминах автора топика, дабы его не запутывать!

Цитата (SunSet @ 17.10.2009 - 03:56)
Да, ну блин, в который раз уже так. Человек о чемто спросил - молчанка часовая, тут новичек какойто напишет, посоветует, потом толпа заходит в топ и заклевывает того новичка что функция не та, кавычки не нужны, скобка не обязателльна.

Хм... А если посмотреть, кто и через сколько минут ответил? Именно "тут", в этом топике? Новичок и через час? laugh.gif laugh.gif laugh.gif

И как правильно заметил twin, я хотел "подвести" ТС к правильному решению. То есть, пусть бы он сначала заставил заработать то, что у него было сделано. А потом бы наоптимизировали по полной программе, с пояснениями в процессе оптимизации. Чтобы он сам сравнил - вот так было, а вот так - стало, и чем оно лучше. И чтобы по ходу дела понял на будущее, как это лучше делать. Для его же пользы, вобщем-то.


Спустя 5 часов, 18 минут, 15 секунд (17.10.2009 - 16:38) SunSet написал(а):
twin
А кто тебе сказал что я говоил автору использовать мою конструкцию? sergeiss ему обьяснял про дублирование %, автор не понимал каку это сделать. Вот я ему и привел наглядный пример, на основе того что у него уже было.
Вопрос был в неработоспособности скрипта, а не в его оптимизации!
Заработало то что я написал? Если да - чудесно. Вот когда автор попросит оптимизировать, мол чтото ему через printf не нравится выводить, вот тогда и можно говорить что я тут фигню написал.
А так это придерка именно ко мне, а не к онструкции скрипта. Если б sergeiss написал бы то что и я - ты бы не возразил, так как он "просто показывает", а я вот оказывается уговариваю автора делать так. mad.gif

Спустя 1 час, 51 минута, 2 секунды (17.10.2009 - 18:29) sergeiss написал(а):
Цитата (SunSet @ 17.10.2009 - 17:38)
А так это придирка именно ко мне

Ёпрст... А можно не оценивать любые слова как нападение на себя, любимого? Изначально не оценивать так? А более спокойно реагировать???

Спустя 7 минут, 8 секунд (17.10.2009 - 18:36) SunSet написал(а):
sergeiss
Причем тут к себе любимому. Если б твин сказал что и ты и я не правы и привел свое обьяснение - это одно дело. А так выходит что ты прав, использовав для обьяснения mysql_fetch_array, а я уже тут фигню человеку советую, раз повторяюсь.

Спустя 7 минут, 25 секунд (17.10.2009 - 18:44) sergeiss написал(а):
Прочитай еще раз внимательно, что и как было. Твин прокомментировал свои слова. Причем, прямо по пунктам.

Спустя 8 минут, 22 секунды (17.10.2009 - 18:52) SunSet написал(а):
Пусть за вами будет правда (в который раз уже). Обязуюсь больше в топах не давать своих советов, надеюсь, от этого будете в выигрыше. Это уже лезет за рамки понимания, когда одно и то же, сказанное экспертом и новичком расценивается как разные вещи.

Спустя 24 минуты, 58 секунд (17.10.2009 - 19:17) sergeiss написал(а):
Знаешь, что на это могу ответить? Историей из своей жизни smile.gif
Когда сынуля был совсем уж маленький, то на каком-то этапе мы стали изучать основы арифметики.
Я его спрашиваю, например, "сколько будет 2+5"? Жена из соседней комнаты кричит: "Семь!"
Возмущаюсь: "Ты чего лезешь? Не тебя же спрашивал?"
А она (типа не поняла smile.gif) : "А я думала, ты узнать ответ хочешь на свой вопрос..."

И вопрос для SunSet - ты понял, к чему я это рассказал?

Спустя 1 час, 35 минут, 55 секунд (17.10.2009 - 20:53) Гость_glock18 написал(а):
Ну вот завели человека...

SunSet, не злись на них, не хотели тебя опустить. Притом конкретно тебя. Давайте уже будем друг друга понимать - восприми слова Твина не как указку не высовываться, а как информацию для размышления/улучшения кодинга...

Вспомни сколько тот же Твин тебе помогал уже. Вспомни и не заводись, а просто осмысли слова и улучши свой кодинг. И в следующий раз такой реакции уже не будет, поверь.

Спустя 37 минут, 34 секунды (17.10.2009 - 21:31) twin написал(а):
Ну чего ты рвёссии... Признай, что не прав. Ведь так и есть. И затаи обиду. В следующий раз, когда кто нить из нас ляп допустит, тут ты и на конее - мол ах вы, с, обижали!!!! а сами?
На самом деле ты правильно сделал, хотел помочь человеку. Просто не обижайся в следующий раз, мы же тоже люди. И ляпы у нас на каждом шагу.
Ловыи и бей, я за это всегда спасибо говорю. smile.gif

Спустя 5 минут, 53 секунды (17.10.2009 - 21:36) SunSet написал(а):
twin
Вот умолчал бы если б выявление ошибки адресовалось не лично мне, а тому кто ту функцию "профильтровал" первым как вполне подходящую для решения данной проблемы.

Спустя 3 минуты, 1 секунда (17.10.2009 - 21:40) sergeiss написал(а):
SunSet, twin - если кому-то будет легче, давайте признаем, что каждый был неправ. На 33.(3)% smile.gif
Мне от этого хуже не будет. Однозначно wink.gif


Спустя 15 минут, 5 секунд (17.10.2009 - 21:55) twin написал(а):
признаю))

Спустя 3 минуты, 57 секунд (17.10.2009 - 21:59) sergeiss написал(а):
SunSet - извини, без вариантов biggrin.gif На тебя осталась твоя треть вины rolleyes.gif

Спустя 1 минута, 40 секунд (17.10.2009 - 22:00) SunSet написал(а):
sergeiss
twin
Даже тут вы сговорились mad.gif )

Спустя 10 минут, 37 секунд (17.10.2009 - 22:11) sergeiss написал(а):
Цитата (SunSet @ 17.10.2009 - 23:00)
Даже тут вы сговорились  mad.gif

Пациент: "Доктор, вы знаете... Меня все игнорируют!"
Доктор: "Так, следующий!" laugh.gif

Спустя 5 минут, 4 секунды (17.10.2009 - 22:16) SunSet написал(а):
sergeiss
Этот анекдот ты уже тут озвучивал)
И куда 0.1% делся то? Подеребанили между собой чтоб быть хоть чуточку "правее", да? tongue.gif

Спустя 15 минут, 35 секунд (17.10.2009 - 22:31) sergeiss написал(а):
Нет, всё чисто! Потому что запись 33.(3)% говорит о том, что это 33 и 3 в периоде (!) процентов (это чисто математическая форма записи, известная мне лично еще со времен школы) smile.gif При умножении на 3 даст ровно 100% smile.gif Так что ничего не потеряли.

PS. А хороший анекдот не станет хуже от многократного озвучивания wink.gif
Быстрый ответ:

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