Джедай Опубликовано 9 ноября, 2004 Жалоба Share Опубликовано 9 ноября, 2004 Воту меня такая проблема Вот у меня оч. большая проблема. Я присваиваю перменной некотрое значение $file="tpl/messages.txt"; Далле я в другую перменную вгоняю файл (его содержимое) $read = fopen($file, "r") or die("<br><table border=1 bordercolor=green cellspacing=0 cellpadding=60 width=35%><tr align=center><td bgcolor=#tf1101><font color=red face=Verdana size=3><b><img src=\"img/error.gif\"> Не могу открыть базу сообщений на чтение. Наверное, у вас кривые руки.</td></tr></table>"); Код в html это красивый ответ на случай если не удается прочитать файл. --- Далее я с самого начала файла читаю строку да знака абзаца (\n) и загоняюю в перменную: $strock=fgets($read, "109999"); Далле создаем массив и загоняем в него эту строку, поделив его на 4 подстроки (| - таким вот символом я обозначил границы между подстроками). Т.е. массив состоит из 4 ключей, в каждый из которых я загнал подстроки. $a=explode("|",$strock,4); Далее идут простые команды нарисовать табличку, разбросав по ячейкам значения ключей массива $a. Print "<br><table border=1 bordercolor=green cellspacing=0 cellpadding=0 width=35%>"; print "<tr valign=top><td width=100% bgcolor=#tf1101><font color=limegreen face=Verdana size=3><p align=center><table border=1 bordercolor=green><tr><td width=50% bgcolor=green><font color=black size=1><i><b> $a[0]</i></b></td><td width=40% bgcolor=green><font color=black size=1><a href=\"mailto:$a[1]\">$a[1] </a></td><td width=50% bgcolor=green><font color=black size=1>$a[3]</td></tr></table><br>$a[2]<br> </p></font></td></tr></table>"; Вот выложил. Но... В табличке есть тока одна строка, а в файле $file 2 строки. Так вот я попытался вывести эти 2 строки на экран, раскидав значения ключей массива по ячейкам табличек. Использовал цикл do...white Вот код: do { $strock=fgets($read, "109999"); $a=explode("|",$strock,4); Print "<br><table border=1 bordercolor=green cellspacing=0 cellpadding=0 width=35%>"; print "<tr valign=top><td width=100% bgcolor=#tf1101><font color=limegreen face=Verdana size=3><p align=center><table border=1 bordercolor=green><tr><td width=50% bgcolor=green><font color=black size=1><i><b> $a[0]</i></b></td><td width=40% bgcolor=green><font color=black size=1><a href=\"mailto:$a[1]\">$a[1] </a></td><td width=50% bgcolor=green><font color=black size=1>$a[3]</td></tr></table><br>$a[2]<br> </p></font></td></tr></table>";} и было это све с таким условием white ($strock!==""); То есть, если значение переменной не пустое (еще есть строки в файле), то он рисует табличку в ней раскидывает подстроки по ячейкам. В общем все было бы кульно, но.... потом просто все зацикливаектся и виснит Помогите сделать, так чтобы у меня выводились все строки, и чтобы при ентом не зацикливался код. Буду очень признателен. Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 9 ноября, 2004 Жалоба Share Опубликовано 9 ноября, 2004 это не проблема - это №уйня <? $filename = "tpl/messages.txt"; $content = file ($filename); $contentstring = explode("\n", $content); for($i=0;$i<sizeof($contentstring);$i++) { $string = explode("|", $contentstring[$i]); ///разбор массива $string по ячейкам таблицы } ?> на phpclub.net тебя послали бы читать фак Ссылка на комментарий Поделиться на другие сайты More sharing options...
Grigory Опубликовано 9 ноября, 2004 Жалоба Share Опубликовано 9 ноября, 2004 Че-то ты писец, как криво код оформил - читать невозможно. Я и не читал. Если в конце виснет, может, feof надо юзать? Вощем, читать впадлу)) Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 9 ноября, 2004 Жалоба Share Опубликовано 9 ноября, 2004 tHunder если ты про меня, Гриш - то мне пох на оформление - надо будет разберется Ссылка на комментарий Поделиться на другие сайты More sharing options...
Grigory Опубликовано 9 ноября, 2004 Жалоба Share Опубликовано 9 ноября, 2004 mr.Faster Нет, я не про тебя :-) Я про джедая))) Ссылка на комментарий Поделиться на другие сайты More sharing options...
Джедай Опубликовано 11 ноября, 2004 Автор Жалоба Share Опубликовано 11 ноября, 2004 Кароч, я все сам уже сделал, без вашей помоши. function mes_view($file) { $file="tpl/messages.txt"; $read = file($file); for ($i=0; @$read[$i]>""; $i=$i+1){ $a=explode("|",$read[$i],4); $number=$i+1; Print "<br><table border=1 bordercolor=green cellspacing=0 cellpadding=0 width=430>"; print "<tr valign=top><td width=430 bgcolor=#tf1101><font color=limegreen face=Verdana size=2><p align=center><table border=1 bordercolor=green><tr><td width=165 bgcolor=green><font color=black size=1><i><b>".HtmlSpecialChars($a['0'])."</i></b></td><td align=center width=165 bgcolor=green><font color=black size=1><a href=\"mailto:$a[1]\">".HtmlSpecialChars($a['1'])." </a></td><td width=100 bgcolor=green><font color=black size=1>".HtmlSpecialChars($a['3'])."</td></tr></table><br>".HtmlSpecialChars($a['2'])."<br> </p></font></td></tr><tr align=right><td bgcolor=#tf2525 width=430><font face=Verdana size=1 color=blue><i>Сообщение <b>№ $number</b> </i></td></tr></table>"; } } Ссылка на комментарий Поделиться на другие сайты More sharing options...
Grigory Опубликовано 11 ноября, 2004 Жалоба Share Опубликовано 11 ноября, 2004 Ну, ты крут :-) Особенно круто смотрится в цикле $i=$i+1 Как-то необычно Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 11 ноября, 2004 Жалоба Share Опубликовано 11 ноября, 2004 tHunder да ладно, лишь бы работало Ссылка на комментарий Поделиться на другие сайты More sharing options...
Джедай Опубликовано 12 ноября, 2004 Автор Жалоба Share Опубликовано 12 ноября, 2004 Как-то необычно $i - номер строки в файле. Он проверяет -если и $I>"" т.е. она не путсая то он выводит строку и потом прибавляет к $i - 1 И возвращается обратно. Но читает уже не строку 0, а 0 +1 , и снова если она имеет текст, то он выводит и приплюсовыввает опять. и так до тех пор, пока цикл не натолкнется на такое, которое будет равно "" Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 12 ноября, 2004 Жалоба Share Опубликовано 12 ноября, 2004 Джедай принято писать $i++ об это и сказал tHunder Добавлено: зы: еще есть функция file которая читает файл построчно в массив.... Добавлено: ззы:но это совсем другая история Ссылка на комментарий Поделиться на другие сайты More sharing options...
Grigory Опубликовано 12 ноября, 2004 Жалоба Share Опубликовано 12 ноября, 2004 Джедай $i - номер строки в файле. Он проверяет -если и $I>"" т.е. она не путсая то он выводит строку и потом прибавляет к $i - 1 И возвращается обратно. Но читает уже не строку 0, а 0 +1 , и снова если она имеет текст, то он выводит и приплюсовыввает опять. и так до тех пор, пока цикл не натолкнется на такое, которое будет равно "" Ой, спасибо за объяснение А я-то (зарабатывая на жизнь программированием; в частности, на PHP) и не знал, зачем это нужно mr.Faster принято писать $i++ Бинго! ;-) Ссылка на комментарий Поделиться на другие сайты More sharing options...
Джедай Опубликовано 13 ноября, 2004 Автор Жалоба Share Опубликовано 13 ноября, 2004 я именнно этой функцией и воспользовался. Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 13 ноября, 2004 Жалоба Share Опубликовано 13 ноября, 2004 а. просмотрел. Ссылка на комментарий Поделиться на другие сайты More sharing options...
Alexey333 Опубликовано 13 ноября, 2004 Жалоба Share Опубликовано 13 ноября, 2004 Джедай, мне твой код очень не нравится. Думаю будут проблемы с быстродейтвием скрипта. Да и оформлено это все крайне некрасиво и непонятно. Использовал цикл do...white white ($strock!==""); Ты бы так не торопился, а то вот такие вот ошибки вкрадываются Ссылка на комментарий Поделиться на другие сайты More sharing options...
Джедай Опубликовано 14 ноября, 2004 Автор Жалоба Share Опубликовано 14 ноября, 2004 Alexey333 Ну у меня все щас работает и быстро, кто хочет посмотреть качайте тут http://forum.comchatka.ru/showthread.php?t=6740 Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 14 ноября, 2004 Жалоба Share Опубликовано 14 ноября, 2004 Alexey333 Да и оформлено это все крайне некрасиво и непонятно. сорри если вмешиваюсь, но имхо красота оформления имеет значение лишь для понятности вопроса. какая нахрен скрипту разница как он оформлен? важно - работает. работает - не трожь Ссылка на комментарий Поделиться на другие сайты More sharing options...
Alexey333 Опубликовано 14 ноября, 2004 Жалоба Share Опубликовано 14 ноября, 2004 Ну у меня все щас работает и быстро, кто хочет посмотреть качайте тут http://forum.comchatka.ru/showthread.php?t=6740 Ага, качайте...требует регистрации даже для просмотра. Пытаюсь зарегиться, а он мне "Извините, регистрация отключена администрацией" имхо красота оформления имеет значение лишь для понятности вопроса. какая нахрен скрипту разница как он оформлен? важно - работает. работает - не трожь Для самого программиста это очень неудобно. Потом захочет скрипт модифицировать, и тут могут возникнуть проблемы. Да и сделает паузу в программировании, захочет вспомнить, да сам не разберет, что делал Тут все таки аккуратность важна. Ссылка на комментарий Поделиться на другие сайты More sharing options...
SLAVE Опубликовано 14 ноября, 2004 Жалоба Share Опубликовано 14 ноября, 2004 Alexey333 Для самого программиста это очень неудобно. Потом захочет скрипт модифицировать, и тут могут возникнуть проблемы. Да и сделает паузу в программировании, захочет вспомнить, да сам не разберет, что делал Тут все таки аккуратность важна. Это уже другой вопрос. Лично я себе ставлю ремарки всякие. Короче, свои методы отмечать что, как и почему, зачем какие куски кода и т. д. Табы тут роли не играют, хотя присутствуют Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 14 ноября, 2004 Жалоба Share Опубликовано 14 ноября, 2004 Alexey333 в принципе я согласен. скажи - ты много серверным программингом занимался? Ссылка на комментарий Поделиться на другие сайты More sharing options...
Alexey333 Опубликовано 14 ноября, 2004 Жалоба Share Опубликовано 14 ноября, 2004 Лично я себе ставлю ремарки всякие. Короче, свои методы отмечать что, как и почему, зачем какие куски кода и т. д. Табы тут роли не играют, хотя присутствуют Я вообще-то не только про комментарии говорил. Просто можно сам код так оформить, что понятно будет что к чему. Да и, как известно, одну и ту же задачу можно решить разными способами. Так вот надо всегда тщательно продумывать оптимальное решение на перспективу. Я вот сначала тоже писал крайне неоптимально. Но когда данных мало, то разница обычно не чувствуется. Тогда я решил проверить: набил свои файлы десятками тысяч (около 100000) записей и проверил. Оказалось, что мой скрипт стал выполняться где-то 10-15 секунд и больше (на некоторых страничках даже больше 30!) , что, естественно, совершенно неприемлемо. Тогда пришлось искать решение данной проблемы. В результате та же самая задача выполнилась на моем слабеньком компьютере максимум за 1-2 секунды с таким количеством данных. Что касается удобства, то тоже надо смотреть по обстоятельствам: возможно где-то удобнее написать функцию и вызывать ее, а не прописывать каждый раз одно и то же и т.д. скажи - ты много серверным программингом занимался? Достаточно (только на PHP). Правда я не использую MySQL. Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 14 ноября, 2004 Жалоба Share Опубликовано 14 ноября, 2004 у меня это все очень скоро и некогда красоту наводить, после тестинга остаются кучи комментов, поскольку - главное быстро и вовремя решить задачу, время == деньги Ссылка на комментарий Поделиться на другие сайты More sharing options...
Grigory Опубликовано 14 ноября, 2004 Жалоба Share Опубликовано 14 ноября, 2004 PHP без MySQL - время на ветер Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 14 ноября, 2004 Жалоба Share Опубликовано 14 ноября, 2004 весьма спорное утверждение Ссылка на комментарий Поделиться на другие сайты More sharing options...
Джедай Опубликовано 15 ноября, 2004 Автор Жалоба Share Опубликовано 15 ноября, 2004 Я конечно понимаю, что надо делать лучше. Но я еще только начинаю изучать язык, а вы уже меня оценили, будто я опытный программер написал такую стремную прогу. Ан нет. Я язык изучаю около 2 недель и причем самостоятельно, когда свободное время есть. А в проге своей я разбираюсь очень даже хорошо. Понимаю, что где есть. А тем временем читаю учебник дальше Потом прочитаю еще раз, для того чтобы уяснить не понятое. Ссылка на комментарий Поделиться на другие сайты More sharing options...
Alexey333 Опубликовано 15 ноября, 2004 Жалоба Share Опубликовано 15 ноября, 2004 PHP без MySQL - время на ветер Категорически не согласен. У MySQL никаких особых преимуществ перед файлами нет. 1. Скорость? При правильном написании скрипта скорость будет почти одинаковая. 2. Удобство? Опять же как построишь. В некоторых случаях файлы гораздо удобнее и практичнее. Просто так психологически сложилось, что база круче. Ссылка на комментарий Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Заархивировано
Эта тема находится в архиве и закрыта для дальнейших ответов.