Добрый день форумчане!) Встала задача: вывод новостей из базы данных. Был написан код Код (Text): <?php include('temp/shapka.php'); include('config.php'); ?> <u>Ваши новости</u><br><br> <?php $resultat_news = mysql_query("SELECT id FROM news"); $array_news = mysql_fetch_array($resultat_news); $result = count($array_news);// Узнаем кол-во новстей echo '<b>Всего Новостей - </b>',$result,'<br>'; for ($i=1; $i<=$result;$i++) { $resulta = mysql_query("SELECT * FROM news WHERE id='$i'"); $arra = mysql_fetch_array($resulta); echo "Новость #",$i,' <br>Заголовок - ',$arra['title'],'<br>'; echo "Дата добовления - ",$arra['date_news'],''; echo ' <br>Текст новости - ',$arra['text_news'],'<br>----------<br>'; } ?> Код вроде работает, но встает вопрос - если обращаться к базе в каждом цикле это не нагрузит систему? Так как слышал что через-мерные запросы не желательны. Буду благодарен, если поясните )
систему может сильно и не нагрузит но для решения таких задач придуманы штатные инструменты языка структурированных запросов. join называется. удивительно как новички берутся за "проекты" не имея вообще никакого базиса. Добавлено спустя 2 минуты 25 секунд: еще более удивительно наблюдать незнание базиса от человека который только на этом форуме с марта месяца 2014. то есть за 8 месяцев знаний ноль и саморазвития ноль.
Это не серьезный проект и не коммерческий. Просто в качестве изучения языка решил написать систему управления. Добавлено спустя 1 минуту 5 секунд: Кроме изучения есть еще учеба и работа), Уделяется столько времени, сколько возможно.
$resultat_news = mysql_query("SELECT id FROM news"); - выбрать колонку ид у всех строк в таблице новостей $array_news = mysql_fetch_array($resultat_news); - получить первый кортеж при успешном запросе, false если строк ноль или провал запроса $result = count($array_news);// Узнаем кол-во новстей - посчитать кол-во полей в первом кортеже. блин АДЫН. у тэба там тока ыд. адын. всэгда адын. Добавлено спустя 3 минуты 4 секунды: базис скуэля один вечер займет. будешь знать реляционную модель по крайней мере. так что работа-учеба это просто отмаза. книжки можно и в метро почитать, и на толчке сидя. Добавлено спустя 2 минуты 19 секунд: блин, только сейчас заметил... а зачем там вообще херова туча запросов? ты ж с одной таблицы читаешь!!! ну точно клиника...
чо-то я сегодня добрый... Код (PHP): $resultat_news = mysql_query("SELECT * FROM news"); // выбор всех кортежей и всех столбцов из таблицы новостей while($stroka_novosti = mysql_fetch_assocc($resultat_news)){ // итерация результата var_dump($stroka_novosti); // просто отладочный дамп строки новости. уж сам додумайся что с ним делать. } Добавлено спустя 1 минуту 48 секунд: да, критика. потому что если за 8 месяцев ты осилил... говнокодерство... то лучше тебе этим не заниматься. хотя даже на говнокодерство это не похоже... непонимание есть, отмазки от саморазвития придуманы, тебя всё устраивает. я лишь сижу на диване и размышляю вслух о том какие нынче люди ленивые пошли. Добавлено спустя 4 минуты 22 секунды: поставил напоминание на 01 декабря 2016. не пропадай из виду))
да незашт. обращайся. но базис рекомендую освоить в любом случае. проще будет программы писать. не важно на заказ или просто для души.
Для души) , спасибо за совет. P.S В будущем возможно на заказ;-) Добавлено спустя 24 минуты 48 секунд: Ради Эксперимента Код (Text): <?php $resultat_news = mysql_query("SELECT * FROM news"); $array_news = mysql_fetch_array($resultat_news); //$result = count($array_news);// Узнаем кол-во новстей //echo '<b>Всего Новостей - </b>',$result,'<br>'; $id_news=$array_news['id']; for ($i=1; $i<=$id_news;$i++) { $resulta = mysql_query("SELECT * FROM news WHERE id='$i'"); $arra = mysql_fetch_array($resulta); $id_news=$arra['id']+1; if ($arra['id']==NULL) { $i=1000; break; } echo "Новость #",$i,' <br>Заголовок - ',$arra['title'],'<br>'; echo "Дата добовления - ",$arra['date_news'],''; echo ' <br>Текст новости - ',$arra['text_news'],'<br>----------<br>'; } ?> Хаа как такой вариант?
нах такой вариант... ты выбрал все строки новостей, получил одну внутрь программы, получил ее идентификатор. а потом у тебя какой-то цикл. чтоааа? ты себе сам объяснить что-нибудь можешь? поглянь на то что я тебе дал - получили все строки, итерируем результат работая с каждой новостью. видишь как тебе базиса не хватает? тебе дали рабочий код а ты не можешь просто взглянув на него понять что он делает. и не можешь встроить его в свою программу... на вот еще раз подумай Код (PHP): <?php $resultat_news = mysql_query("SELECT * FROM `news`"); $array_news = mysql_fetch_array($resultat_news); $i = 0; while ($arra = mysql_fetch_assocc($resultat_news)) { echo 'Новость #', ++$i, ' <br>Заголовок - ', $arra['title'], '<br>'; echo 'Дата добАвления - ', $arra['date_news'], ''; echo ' <br>Текст новости - ', $arra['text_news'], '<br>----------<br>'; }
И ещё, sham, лучше не пользуйтесь функциями с приставкой mysql_ их скоро искрлючат из php. Они устарели. Пользуйтесь PDO или mysqli
Где то я читал что выполнять запрос в цикле это очень плохо и нельзя. Второе, твой код будет по максимуму нагружать систему, по максимуму это имеется ввиду не то что 100% ЦП и ОП, а то что у тебя почти самый расходный вариант. Я вот тут второй день сижу делаю программу на C# которая работает с MySQL, так вот если по одной записи доставать из БД и запихивать по 1 записи, это сильно грузит базу, я переделал программу, что бы за раз получать много и за раз добавлять много, производительность возросла многократно. по этому уменьшай количество запросов в БД, делай как пишет выше Ganzal, ну или около того.
Код (Text): $resultat_news = mysql_query("SELECT * FROM news"); // выбор всех кортежей и всех столбцов из таблицы новостей while($stroka_novosti = mysql_fetch_array($resultat_news)){ // итерация результата //var_dump($stroka_novosti); } Момент в var_dump($stroka_novosti) не понятен немного. Как можно вывести это? Гугл говорит что стоит смотреть в сторону foreach . Можете растолковать
а почему вдруг вы пытаетесь понять первый пример когда я вам дал рабочий код вторым примером? вардамп не пытайтесь понять. там массив соответствующий кортежу текущей итерации результата запроса к субд.
Код (Text): $resultat_news = mysql_query("SELECT * FROM `news`"); $array_news = mysql_fetch_array($resultat_news); $i = 0; while ($arra = mysql_fetch_assocc($resultat_news)) { echo 'Новость #', ++$i, ' <br>Заголовок - ', $arra['title'], '<br>'; echo 'Дата добАвления - ', $arra['date_news'], ''; echo ' <br>Текст новости - ', $arra['text_news'], '<br>----------<br>'; } Если про этот код, то он ничего не выводит Добавлено спустя 1 минуту 16 секунд: Но если поменять while ($arra = mysql_fetch_assocc($resultat_news)) { на mysql_fetch_array - все отличное работает Добавлено спустя 2 минуты 10 секунд: Встает след проблема, если удалить запись из БД, например с ид-1. То при работе данного кода выводит новости все - кроме 2. Т.е все новости начиная с ид 3,4,5,6 .... и тд
ахахахаха.... mysql_fetch_assocc, жгу да. я опечатался тупо а ты ни отладку не умеешь делать ни поискать ЭТУ строку в гугле не осилил... дальше даже вникать не буду что у тебя там первая вторая пятая новость... за год уж обязан был научиться дебажить и тупо понимать чо хочешь и сравнивать с тем что видишь. а знаешь как я знаю что ты отладку не делаешь? ну тебе же ничего не выводит. а пхп по идее плюется ошибкой. стало быть ты считаешь себя таким крутым что вывод ошибок ты погасил. ну значит это было осознанное дело. значит ты знаешь где искать журнал в который пхп-машина складирует свои недовольства. или его ты тоже выключил?
ну так надо было включить! это очевидно же! ты только учишься писать код! нужно врубить е_ол и наслаждаться тем как с тобой общается пхп-машина. хороший код не бросается даже нотисами. ну а на продакшене это по дефолту выключается чтоб неслучайный посетитель не читал лишнего. но тебе еще далеко до продакшн кода. очень далеко с таким прогрессом за неполный год...
27-Nov-2014 23:56:26 Europe/Paris] PHP Fatal error: Call to undefined function mysql_fetch_assocc() in C:\wamp\www\q\table_news.php on line 30 в ЖУРНАЛЕ НАШЕЛ Видимо на мне теперь клеймо(Зарегистрировался 8 мес назад). Я же говорю стало интересно, зарегистрировался.Потом был перерыв, сейчас опять появ интерес.)
ну нашел ты в журнале. и дальше что? клеймо не клеймо а хотя бы за полтора дня что вот эта конкретная тема существует уже можно было осилить отладку и настройку сервера разработки.
А ты опасный человек, надо быть поосторожнее.. sham, чувак ты пользующийся устаревшими функциями (классом) для работы с БД - mysql, ей на замену пришел другой класс - mysqli, i на конце значит что то типа усовершенствованный, найди как пользоваться этик классом (по большому счету так же как и mysql) и пользуйся.
VLK, там хрен с ним с расширением, я дабл-си хернул в майэскуэль-фетч-асоц. и ошибка ведь кажет что нет такой функции. но у человека режим паранойи поэтому была пустая страница. sham, на режим паранойи не обижайся ибо это вполне себе термин из мира безопасности например
Так почему первый элемент не выводится? Код (Text): $resultat_news = mysql_query("SELECT * FROM news"); $array_news = mysql_fetch_array($resultat_news); $i = 0; while ($arra = mysql_fetch_array($resultat_news)) { echo 'Новость #', $arra['id'], ' <br>Заголовок - ', $arra['title'], '<br>'; echo 'Дата добАвления - ', $arra['date_news'], ''; echo ' <br>Текст новости - ', $arra['text_news'], '<br>----------<br>'; } VLK, я обязательно прочитаю про mysqli