За последние 24 часа нас посетили 35095 программистов и 1737 роботов. Сейчас ищет 761 программист ...

Синтаксические ошибки на php

Тема в разделе "PHP для новичков", создана пользователем dhorh, 20 авг 2012.

  1. dhorh

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

    С нами с:
    19 июл 2012
    Сообщения:
    39
    Симпатии:
    0
    Здравствуйте, для начала расскажу начало истории, чтобы было понятно то, что я хочу сделать.

    Вот решил перевести свой сайт на разные языки...

    В каждый языковой файл я поместил функцию с массивом, вот примерно таким(для рус):
    Код (Text):
    1. function lang($str)
    2. {
    3.     $lang = array(
    4.         'main' => 'Главная',
    5.         'categories' => 'Категории',
    6.         'relatedVideos' => 'Похожие видео',
    7.         'categories' => 'Категории',
    8.  
    9.     );
    10.    
    11.     $str = $lang[$str];
    12.    
    13.     if(in_array($str, $lang)) return $str; else return false;
    Там где был текст, я подставлял вывод массива
    Код (Text):
    1. <?=lang('имя любого из элемента массива lang')?>
    В зависимости от выбранного языка, выбирается массив с определённым языком, а там уже выбирается определённый элемент массива, который я указал...
    Ну, думаю здесь всё понятно, я не стал придумывать велосипед.

    Проблемы начались после того, как мне пришлось выводить язык не из статического текста, а с динамического, к примеру выборкой из базы данных, поясню:
    если я указывална странице так
    Код (Text):
    1. <?=lang('main')?>
    , то выводилось или "Main" или "Главная", в зависимости от языка, но если элемент массива я указываю не на прямую, а через переменную
    Код (Text):
    1.  
    2. <?
    3. $example = main;
    4. =lang('$example')
    5. ?>
    , то почему-то сама переменная не подставляется в массив и массив дальше выбирает элемент из файла, а наоборот ничего не подставляет, то есть переменную $example считает просто тестом и ищет в массиве lang элемент "$example".

    Уважаемые господа программисты, подскажите как сделать так, чтобы переменная в массив подставлялось и всё работало. Бился над этой задачей весь вечер, но увы и ах, хотя может быть я просто туплю, и сдесь ничего нет сложного, заранее спасибо.
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Тупишь. Убери кавычки.
     
  3. dhorh

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

    С нами с:
    19 июл 2012
    Сообщения:
    39
    Симпатии:
    0
    Нене, ну я так пробовал, сейчас вот опять попробовал - Не работает, выводит просто текстом: "lang(young)", ну без кавычек конечно, и ничего нет дальше...
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    покажи код полностью из реального примера, который выводит тебе "lang(young)"
     
  5. dhorh

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

    С нами с:
    19 июл 2012
    Сообщения:
    39
    Симпатии:
    0
    $resultTR = mysql_query("SELECT id, cat, link_en FROM categories ORDER BY view DESC LIMIT 0,17",$db);

    if (!$resultTR)
    {
    echo "<p class='errorMesseg'>Запрос на выборку данных из базы не прошел</p>";
    exit(mysql_error());
    }

    if (mysql_num_rows($resultTR) > 0)

    {
    $myrowTR = mysql_fetch_array($resultTR);

    do
    {
    $result10 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$myrowTR[id]'",$db);
    $sum = mysql_fetch_array($result10);

    $e = $myrowTR[link_en];

    printf ("<li> <a href='$SERVER/category/%s' title='%s'>lang($e)</a></li>",$myrowTR["link_en"],$myrowTR["cat"]);
    }
    while ($myrowTR = mysql_fetch_array($resultTR));
    }

    else
    {
    echo "<p 'class='errorMesseg'>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    exit();
    }

    Добавлено спустя 3 минуты 2 секунды:
    вот код языкового файла на всякий случай, но думаю тут проблем не должно возникнуть
    Код (Text):
    1. <?
    2.  
    3. function lang($str)
    4. {
    5.     $lang = array(
    6.        
    7.         // навигация
    8.         'main' => 'Главная',
    9.         'categories' => 'Категории',
    10.         'relatedVideos' => 'Похожие видео',
    11.         'categories' => 'Категории',
    12.         'best_for' => 'Лучшее за',
    13.         'all_the_time' => 'Всё время',
    14.         'month' => 'Месяц',
    15.         '3days' => '3 дня',
    16.         'added' => 'добавлено',
    17.        
    18.         'young' => 'Молоденькие',
    19.        
    20.         //Дни недели
    21.         'Monday' => 'Понедельник',
    22.         'Tuesday' => 'Вторник',
    23.         'Wednesday' => 'Среда',
    24.         'Thursday' => 'Четверг',
    25.         'Friday' => 'Пятница',
    26.         'Saturday' => 'Суббота',
    27.         'Sunday' => 'Воскресенье',
    28.        
    29.  
    30.     );
    31.    
    32.     $str = $lang[$str];
    33.    
    34.     if(in_array($str, $lang)) return $str; else return false;
    35. }
    36. //'' => '',
    37.  
    38. ?>
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. printf ("<li> <a href='$SERVER/category/%s' title='%s'>lang($e)</a></li>",$myrowTR["link_en"],$myrowTR["cat"]); 
    ==>
    Код (PHP):
    1. printf ("<li> <a href='$SERVER/category/%s' title='%s'>" . lang($e) . "</a></li>",$myrowTR["link_en"],$myrowTR["cat"]); 
     
  7. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    я думал у сайтов порнухи куда большие бюджеты :(
     
  8. dhorh

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

    С нами с:
    19 июл 2012
    Сообщения:
    39
    Симпатии:
    0
    Добавлено спустя 1 минуту 28 секунд:
    Чёрт, как же я тупил, о боги, какое счастье, у меня уже 4 часа ночи, чёрт, какое наслаждение, когда несколько часов бился, сидел тупил, а тут блин... ох-ох... Огромное спасибо!!) Блин, какая радость, спасибо вам огромное)

    Добавлено спустя 1 минуту 7 секунд:
    нормальные бюджеты, надо же ведь всё самому разобрать)