За последние 24 часа нас посетили 18518 программистов и 1606 роботов. Сейчас ищет 931 программист ...

Передача переменных как стринг

Тема в разделе "PHP для новичков", создана пользователем cocka, 17 фев 2010.

  1. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    Есть ли возможность передать переменные как стринг?

    Пример: мне хотелось бы так сделать
    Код (Text):
    1.  
    2. if(!empty($this->data['timesearch']))
    3.         {
    4.             $Sdatefor = ''...";
    5.         }
    6.         else
    7.         $Sdatefor = 'date("m")-$month,date("d")-$day,date("Y")-$year';
    8. $datum = mktime(0, 0, 0, $Sdatefor);
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Это не нужно.
     
  3. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    у меня идет определение через post с какого времени по какое и с какими интервалами годы месяцы дни, опрашивается бд после чего используется ее массив где в промежутках идет проверка на пустые поля с бд по тем же интервалам и вставляется нужный стринг..

    снова case неудобный вставлять?
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Можно выполнить стркоу как код с помощью функции eval.
    PHP:
    1.  
    2. <?php
    3. $for = '$perem = 12; $perem <=0; $perem--';
    4. $code =  'echo "Preved!";'
    5. $source = 'for('.$for.'){'.$code.'}';
    6. eval($source);
    7.  
    Если скрипт небольшой, то вызов eval замедлит его выполнение почти в два раза (т.к. происходит лишний запуск препроцессора php). Ну и вообще, почти любую задачу можно решить без eval.
     
  5. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Непонятно ни что делается, ни что спрашивается.

    Перефразировать можно?
     
  6. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    [vs]
    тебя сразу пристрелить или сначала надругаться?
    Какой eval?
     
  7. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    ))
    вот кусок сокращенного кода, кокое оптимальное решение для такой проблемы придумать?
    Был бы рад при советах в улучшениях ))
    PHP:
    1.  
    2. if(!empty($this->data['timesearch']))
    3.         {
    4.             [color=red]$Sdatefor = 'date(mktime(0, 0, 0, $this->data["timesearch"]))';[/color]
    5.         }
    6.         else
    7.         [color=red]$Sdatefor = 'date("m")-$month,date("d")-$day,date("Y")-$year';[/color]
    8.         switch ($this->data['time'])
    9.         {
    10.             case day:
    11.                     $this->betweenvor = "%d.%m.%Y";
    12.                     $this->betweennach = "1 MONTH), 1";
    13.                     $this->time = "day(28)";
    14.                     $dayinterval = 31;
    15.                 break;
    16.                
    17.             case month:
    18.                     $this->betweenvor = "%m.%Y";
    19.                     $this->betweennach = "1 YEAR), DAYOFYEAR(CURDATE())";
    20.                     $this->time = "month(12)";
    21.                     $monthinterval = 12;
    22.                 break;
    23.                
    24.             case year:
    25.                     $this->betweenvor = "%Y";
    26.                     $this->betweennach = "10 YEAR), DAYOFYEAR(CURDATE())";
    27.                     $this->time = $this->year('10');
    28.                     $yearinterval = 15;
    29.                 break;
    30.         }
    31.         //Anfang
    32.     $qQuery = mysql_query('
    33.         SELECT COUNT(sms_id) as anzahl,
    34.         DATE_FORMAT( FROM_UNIXTIME( sms_zeit ) , "'.$this->betweenvor.'" ) AS date,
    35.         SUM(sms_preis) as cost
    36.         FROM tbl_sms
    37.         WHERE (sms_zeit) BETWEEN UNIX_TIMESTAMP(SUBDATE(SUBDATE(NOW(), INTERVAL '.$this->betweennach.')) AND UNIX_TIMESTAMP(NOW())
    38.         GROUP BY date
    39.         ORDER BY sms_zeit
    40.         ');
    41.     $this->data ='';
    42.    
    43.         echo mysql_error();
    44.         while($rQuery=mysql_fetch_array($qQuery))
    45.         {
    46.             //Leere Ausgabe
    47.                             for($year = $yearinterval-1; $year >= 0; $year--)
    48.                             {
    49.                                 $datum = date(str_replace("%", "", $this->betweenvor), mktime(0, 0, 0, [color=red]$Sdatefor[/color]));
    50.                                 //echo $datum." ".$rQuery['date']."<br>";
    51.                                 if($datum != $rQuery['date'])
    52.                                 {
    53.                                     $this->data .= "<item name='".$datum."' anzahl='0 SMS / 0 ?'/>";
    54.                                     $yearinterval = $year;
    55.                                 }
    56.                                 else
    57.                                 {
    58.                                 $year=0;
    59.                                 $yearinterval--;
    60.                                 }
    61.                             }
    62.                             for($month = $monthinterval-1; $month >= 0; $month--)
    63.                             {
    64.                                 $datum = date(str_replace("%", "", $this->betweenvor), mktime(0, 0, 0, [color=red]$Sdatefor)[/color]);
    65.                                 //echo $datum." ".$rQuery['date']."<br>";
    66.                                 if($datum != $rQuery['date'])
    67.                                 {
    68.                                     $this->data .= "<item name='".$datum."' anzahl='0 SMS / 0 ?'/>";
    69.                                     $monthinterval = $month;
    70.                                 }
    71.                                 else
    72.                                 {
    73.                                 $month=0;
    74.                                 $monthinterval--;
    75.                                 }
    76.                             }
    77.                             for($day = $dayinterval-1; $day >= 0; $day--)
    78.                             {
    79.                                 $datum = date(str_replace("%", "", $this->betweenvor), mktime(0, 0, 0, [color=red]$Sdatefor[/color]));
    80.                                 //echo $datum." ".$rQuery['date']."<br>";
    81.                                 if($datum != $rQuery['date'])
    82.                                 {
    83.                                     $this->data .= "<item name='".$datum."' anzahl='0 SMS / 0 ?'/>";
    84.                                     $dayinterval = $day;
    85.                                 }
    86.                                 else
    87.                                 {
    88.                                 $day=0;
    89.                                 $dayinterval--;
    90.                                 }
    91.                             }
    92.             //Ausgabe
    93.             $this->data .= "<item name='".$rQuery['date']."' anzahl='".$rQuery['anzahl']." SMS / ".$rQuery['cost']." ?'/>";
    94.         }
    95.  
     
  8. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Нет смысла постить код в таких количествах. Его никто не прочтет.

    Просто своими словами озвучить стоящую проблему, а не то, как пытались ее решить.
     
  9. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    вообщем хотелось бы переменные как стринг передавать для их запуска с позжей точки кода
     
  10. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Проблема это например:
    Пользователь задает интервал дат и нужно выбрать данные из БД в этом интервале.

    А это....
    Это не проблема - это бред.

    Разбирайтесь самостоятельно.
     
  11. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    ну спасибо )) Я поехал дальше ))
    я как продвинутый новичек хотел решить проблему, разве я виноват что не умею. Научите пожалуйста вместо посылательства - как поднятся до "любителя" )
    И я вам скажу Спасибо )
     
  12. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    cocka