dazle
@dazle
Хороший электрик, но в душе программист

Можно ли упростить код на Php?

У меня отправляется запрос ajax к php файлу filosof.php

function po()
 {
 $.ajax({
 type: "POST",
 url: "shablon/filosof.php",
 data: "req=ok",
 // Выводим то что вернул PHP
 success: function(text)
 {
 //Очищаем форму ввода
 $(".frazy2").empty();
 //Выводим что вернул нам php
 $(".frazy2").append(text);
 //Прокручиваем блок вниз(если сообщений много)
 }
 });
 }


//Ставим цикл на каждые 20 секунд
setInterval(po,20000);


Можно ли как то упростить код php т.к слишком он грамозкий, но все работает. Подробнее: этот код берет рандомно с бд Mysql 2 строки и выводит на экран с интервалом 20 секунд. Можно ли сделать чтобы строки выводились последовательно так же с интервалом 20 секунд. Пробовал делать со sleep() -не работает.

include("bd.php");


$a=rand(1,7);

if($a==1)
{
 $res=mysql_query("SELECT `id`,`fraza`,`avtor` FROM `frazy` WHERE `id`='$a' ");
	$row=mysql_fetch_array($res);
echo "<p30>".$row['fraza']."</p30><br><p31>...".$row['avtor']."</p31>";}
if($a==2)
{
 $res=mysql_query("SELECT `id`,`fraza`,`avtor` FROM `frazy` WHERE `id`='$a' ");
	$row=mysql_fetch_array($res);
echo "<p30>".$row['fraza']."</p30><br><p31>...".$row['avtor']."</p31>";}
if($a==3)
{
 $res=mysql_query("SELECT `id`,`fraza`,`avtor` FROM `frazy` WHERE `id`='$a' ");
	$row=mysql_fetch_array($res);
echo "<p30>".$row['fraza']."</p30><br><p31>...".$row['avtor']."</p31>";}
if($a==4)
{
 $res=mysql_query("SELECT `id`,`fraza`,`avtor` FROM `frazy` WHERE `id`='$a' ");
	$row=mysql_fetch_array($res);
echo "<p30>".$row['fraza']."</p30><br><p31>...".$row['avtor']."</p31>";}
if($a==5)
{
 $res=mysql_query("SELECT `id`,`fraza`,`avtor` FROM `frazy` WHERE `id`='$a' ");
	$row=mysql_fetch_array($res);
echo "<p30>".$row['fraza']."</p30><br><p31>...".$row['avtor']."</p31>";}
if($a==6)
{
 $res=mysql_query("SELECT `id`,`fraza`,`avtor` FROM `frazy` WHERE `id`='$a' ");
	$row=mysql_fetch_array($res);
echo "<p30>".$row['fraza']."</p30><br><p31>...".$row['avtor']."</p31>";}
if($a==7)
{
 $res=mysql_query("SELECT `id`,`fraza`,`avtor` FROM `frazy` WHERE `id`='$a' ");
	$row=mysql_fetch_array($res);
echo "<p30>".$row['fraza']."</p30><br><p31>...".$row['avtor']."</p31>";}
  • Вопрос задан
  • 205 просмотров
Пригласить эксперта
Ответы на вопрос 3
@ipokos
Исходя из названий столбцов
SELECT `id`,`fraza`,`avtor
, я так понимаю это что-то типа рандомной фразы с каким-то интервалом.
Как по мне, можно получать выборку записей в js и хранить на клиенте. А с определенным интервалом просто прятать и показывать другую.
Чтобы не долбыть каждые 20сек в БД
Ответ написан
Комментировать
irishmann
@irishmann
Научись пользоваться дебаггером
Зачем куча if? Не стоит вешать запрос на цикл. Со стороны PHP возвращай JSON-массив, а на JS делай вывод так как тебе нужно
Ответ написан
Комментировать
@darknefrit
Я тоже не понял зачем тебе столько if если код внутри одинаковый ??
И Что тоакое .. ? Новый тэг?
Можно ли сделать чтобы строки выводились последовательно так же с интервалом 20 секунд.

в смысле эти две строки чтобы не сразу выводились а по очереди с интервалов в 20 сек?
Конечно можно, разве что то не возможно запрограммировать ?
ты возвращаешь 2 строки, помести их в json:
json = [
"p30"=>"<p30>".$row['fraza']."</p30>",
"p31"=>"<p31>...".$row['avtor']."</p31>"
]
echo json_encode(json);

на js увеличь интервал обращения к серверу до 40 сек.
а там где ты вставляемшь на старницу оберни в таймер который выведет вторую строку через 20сек. Ну как вариант.
function po()
 {
 $.ajax({
 type: "POST",
 url: "shablon/filosof.php",
 data: "req=ok",
 // Выводим то что вернул PHP
 success: function(text)
 {
 //Очищаем форму ввода
 $(".frazy2").empty();
 //Выводим что вернул нам php
 $(".frazy2").append(text.p30);
setTimeout(function (){
 $(".frazy2").append(text.p31);
},20000)

 }
 });
 }

Так кто решений 100500 мильонов как придумаешь так и будет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час
21 нояб. 2024, в 21:42
100000 руб./за проект