Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Прогноз погоды (https://javascript.ru/forum/project/81557-prognoz-pogody.html)

ALFRED450 17.12.2020 14:02

Цитата:

Сообщение от laimas (Сообщение 531822)
Не вижу тут функций, вижу условия.
if(false) { выполнятся не будет, где-то вы косячите, ищите.
rtrim($show_weather.' ', 'UTF-8') - это полнейшая чушь, как и mb_strtoupper(date('H:i'), 'UTF-8'), ну и остальное подобное. Ну это просто какая-то дичь.

так это не я делал :) mb_strtoupper(date('H:i'), 'UTF-8')
оставил как было
единственное мое rtrimтак как я хотел уйти от верхнего регистра, не найдя другого способа
по вашей рекомендации пробовал без mb_strtoupper
$bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, '$show_weather') результат вышел с ошибкой.
В кавычка, скобках, между точек, все равно ошибка

laimas 17.12.2020 14:27

Цитата:

Сообщение от ALFRED450
единственное мое rtrimтак как я хотел уйти от верхнего регистра

Ну-ка читаем https://www.php.net/manual/ru/function.rtrim.php.
Во-первых какой смысл добавлять справа пробел, чтобы потом его вырезать?
Во-вторых второй параметр функции не задает кодировку, а указывает символы, которые будут удалены справа. Пробела у вас не указано, а значит ...

У цифр, управляющих символов и знаков, нет ни верхнего регистра, нет отличия и в коде в других кодировках. Поэтому "в верхний регистр" да еще с учетом UTF-8 цифр date('H:i'), это глупость неимоверная.

А не работает у вас без этого хлама потому, что вы пишите код с ошибкой - это явно прописываемое строковое значение нужно обрамлять кавычками, но имя переменной почему в кавычках '$show_weather'?

Читайте о функциях, которые используете, вы делаете явные ошибки в задании параметров, а проблемы этого устраняете какими граблями.

ALFRED450 17.12.2020 14:53

Цитата:

Сообщение от laimas (Сообщение 531829)
Ну-ка читаем https://www.php.net/manual/ru/function.rtrim.php.
Во-первых какой смысл добавлять справа пробел, чтобы потом его вырезать?
Во-вторых второй параметр функции не задает кодировку, а указывает символы, которые будут удалены справа. Пробела у вас не указано, а значит ...

У цифр, управляющих символов и знаков, нет ни верхнего регистра, нет отличия и в коде в других кодировках. Поэтому "в верхний регистр" да еще с учетом UTF-8 цифр date('H:i'), это глупость неимоверная.

А не работает у вас без этого хлама потому, что вы пишите код с ошибкой - это явно прописываемое строковое значение нужно обрамлять кавычками, но имя переменной почему в кавычках '$show_weather'?

Читайте о функциях, которые используете, вы делаете явные ошибки в задании параметров, а проблемы этого устраняете какими граблями.

вы не поняли весь текст UTF-8 цифр date('H:i') работает, как и дата, время, работает если не трогать, как только лезу и убираю mb_strtoupper все ломается, я понимаю что часам которые показывают цифрами, не нужен РЕГИСТР.
Цитата:

но имя переменной почему в кавычках '$show_weather'?
я не могу написать все варианты в кавычка, точках , скобках и прочее , что я перепробовал, убираю функцию, и пробую и ничего.

laimas 17.12.2020 15:03

Цитата:

Сообщение от ALFRED450
вы не поняли весь текст UTF-8 цифр date('H:i')

Не городите ерунды, текст это одно, причем не только текст, но и сам скрипт должен быть сохранен в UTF. Дата/время причем тут, если она не содержится символов кроме знаков и цифр?

Читаем тут https://www.php.net/manual/ru/imagick.annotateimage.php и выполняем пример из описания, заменив строку 'The quick brown fox jumps over the lazy dog' на date('H:i'). Есть проблемы с выводом? Нет. А теперь так вывести strtoupper(date('H:i')), mb_... тут как собаке пятая лапа. Есть разница между date('H:i') и strtoupper(date('H:i'))?

Сколько еще можно говорить, что вы делаете преобразования там, где они не имеют никакого значения, это просто глупости. Не делайте ошибок в коде, вот ваши проблемы.

ALFRED450 17.12.2020 15:55

Цитата:

Сообщение от laimas (Сообщение 531836)
Не городите ерунды, текст это одно, причем не только текст, но и сам скрипт должен быть сохранен в UTF. Дата/время причем тут, если она не содержится символов кроме знаков и цифр?

Читаем тут https://www.php.net/manual/ru/imagick.annotateimage.php и выполняем пример из описания, заменив строку 'The quick brown fox jumps over the lazy dog' на date('H:i'). Есть проблемы с выводом? Нет. А теперь так вывести strtoupper(date('H:i')), mb_... тут как собаке пятая лапа. Есть разница между date('H:i') и strtoupper(date('H:i'))?

Сколько еще можно говорить, что вы делаете преобразования там, где они не имеют никакого значения, это просто глупости. Не делайте ошибок в коде, вот ваши проблемы.

вот меня черт дернул привести пример с датой
с днем недели верно же:
if($view_today){
	$draw->setFont(BASEPATH."/font/".$font_date);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($today_font_size);
    $draw->setFillColor("rgb(".$today_font_color.")");
    $bg->annotateImage($draw, $today_text_pixel_x, $today_text_pixel_y, 0, mb_strtoupper($days[(date('w'))]));

ALFRED450 17.12.2020 16:36

// Разрешение на отображение ошибок на экране
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

require_once('setup.php');
require_once('function.php');

header('Content-type: text/html; charset=utf-8');

echo '<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">';
echo '<link href="style.css" rel="stylesheet">';

// Получим текущую дату
$date_today = date('Ymd');

// Вывод месяца на русском
$monthes = array(
    1 => 'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля',
    5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа',
    9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря'
);

// Вывод дня недели на русском
$days = array(
    'Воскресенье', 'Понедельник', 'Вторник', 'Среда',
    'Четверг', 'Пятница', 'Суббота'
);

// --- РИСОВАНИЕ ---------------------
setLog('Создаем обложку');

$draw = new ImagickDraw(); 

if(file_exists(BASEPATH.timeToDayBg())) {
    $bg = new Imagick(BASEPATH.timeToDayBg());
} else {
    setLog('ОШИБКА! Не найден '.BASEPATH.timeToDayBg().' Загрузите файл либо отключите $show_time_of_day в config.php');
    print_r('ОШИБКА! Не найдена обложка, смотрите logs.txt');
    exit;
}

$draw->setFont(BASEPATH."/font/".$font);
$draw->setTextAlignment(Imagick::ALIGN_CENTER);

//ПОСЛЕДНИЕ ПОДПИСЧИКИ
if($view_last_subscriber) {
	
	$last_subscriber = getApiMethod('groups.getMembers', array(
                'group_id' => $group_id,
                'sort' => 'time_desc',
                'count' => $last_subscriber_count,
                'fields' => 'photo_200',
                'access_token' => $access_token
            ));

    setLog('Массив last_subscriber: '.$last_subscriber);

    if($last_subscriber) {
        $last_subscriber = json_decode($last_subscriber, true);
		
		foreach($last_subscriber['response']['items'] as $user ) {
			$last_users[] = $user; // добавляем юзера к юзерам
		}
		
		foreach ($last_users as $k => $last_user){
			// Скачиваем фото
			copy ($last_user['photo_200'], BASEPATH.'cover/last_subscriber_'.($k+1).'.jpg');
		}

		$last_subscriber_firstname_1 = $last_users[0]['first_name'];
        $last_subscriber_lastname_1 = $last_users[0]['last_name'];
		
		$last_subscriber_firstname_2 = $last_users[1]['first_name'];
        $last_subscriber_lastname_2 = $last_users[1]['last_name'];
		
		$last_subscriber_firstname_3 = $last_users[2]['first_name'];
        $last_subscriber_lastname_3 = $last_users[2]['last_name'];
    }
	
    $file_name_1 = BASEPATH.'cover/last_subscriber_1.jpg';
	$file_name_2 = BASEPATH.'cover/last_subscriber_2.jpg';
	$file_name_3 = BASEPATH.'cover/last_subscriber_3.jpg';

	//ПОДПИСЧИК #1
    if(file_exists($file_name_1) && $view_last_subscriber) {
        $last_subscriber_photo_1 = new Imagick($file_name_1);
        if($roundingOff==true) {
            RoundingOff($last_subscriber_photo_1, $last_subscriber_width,$last_subscriber_height);
        }

        $draw->setFontSize($last_subscriber_font_size);
        $draw->setFillColor("rgb(".$last_subscriber_font_color.")");

        $bg->compositeImage($last_subscriber_photo_1, Imagick::COMPOSITE_DEFAULT, $last_subscriber_photo_1_x, $last_subscriber_photo_1_y);
        $bg->annotateImage($draw, $last_subscriber_1_text_x, $last_subscriber_1_text_y, 0, mb_strtoupper($last_subscriber_firstname_1.' '.$last_subscriber_lastname_1, 'UTF-8'));
    }
	
	//ПОДПИСЧИК #2
	if(file_exists($file_name_2) && $view_last_subscriber) {
        $last_subscriber_photo_2 = new Imagick($file_name_2);
        if($roundingOff==true) {
            RoundingOff($last_subscriber_photo_2, $last_subscriber_width,$last_subscriber_height);
        }

        $draw->setFontSize($last_subscriber_font_size);
        $draw->setFillColor("rgb(".$last_subscriber_font_color.")");

        $bg->compositeImage($last_subscriber_photo_2, Imagick::COMPOSITE_DEFAULT, $last_subscriber_photo_2_x, $last_subscriber_photo_2_y);
        $bg->annotateImage($draw, $last_subscriber_2_text_x, $last_subscriber_2_text_y, 0, mb_strtoupper($last_subscriber_firstname_2.' '.$last_subscriber_lastname_2, 'UTF-8'));
    }
	
	//ПОДПИСЧИК #3
	if(file_exists($file_name_3) && $view_last_subscriber) {
        $last_subscriber_photo_3 = new Imagick($file_name_3);
        if($roundingOff==true) {
            RoundingOff($last_subscriber_photo_3, $last_subscriber_width,$last_subscriber_height);
        }

        $draw->setFontSize($last_subscriber_font_size);
        $draw->setFillColor("rgb(".$last_subscriber_font_color.")");

        $bg->compositeImage($last_subscriber_photo_3, Imagick::COMPOSITE_DEFAULT, $last_subscriber_photo_3_x, $last_subscriber_photo_3_y);
        $bg->annotateImage($draw, $last_subscriber_3_text_x, $last_subscriber_3_text_y, 0, mb_strtoupper($last_subscriber_firstname_3.' '.$last_subscriber_lastname_3, 'UTF-8'));
    }
}

// ВЫВОДИМ ДЕНЬ НЕДЕЛИ
if($view_today){
	$draw->setFont(BASEPATH."/font/".$font_date);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($today_font_size);
    $draw->setFillColor("rgb(".$today_font_color.")");
    $bg->annotateImage($draw, $today_text_pixel_x, $today_text_pixel_y, 0, mb_strtoupper($days[(date('w'))], 'UTF-8'));
}

// ВЫВОДИМ ДАТУ
if($view_date){
	$draw->setFont(BASEPATH."/font/".$font_date);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($date_font_size);
    $draw->setFillColor("rgb(".$date_font_color.")");
    $bg->annotateImage($draw, $date_text_pixel_x, $date_text_pixel_y, 0, mb_strtoupper(date('d ') . $monthes[(date('n'))] . date(' Y'), 'UTF-8'));
}

// ВЫВОДИМ ВРЕМЯ
if($view_clock){
	$draw->setFont(BASEPATH."/font/".$font_clock);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($clock_font_size);
    $draw->setFillColor("rgb(".$clock_font_color.")");
    $bg->annotateImage($draw, $clock_text_pixel_x, $clock_text_pixel_y, 0, mb_strtoupper(date('H:i'), 'UTF-8'));
}

// СОХРАНЯЕМ ФАЙЛ
$bg->setImageFormat("png");
$bg->writeImage($output_cover);

// --- ЗАГРУЗКА НА СЕРВЕР ------------

$getUrl = getApiMethod('photos.getOwnerCoverPhotoUploadServer', array(
    'group_id' => $group_id,
    'crop_x2' => '1590'
));
setLog('Адресс сервера... '.$getUrl);

if($getUrl) {
    $getUrl = json_decode($getUrl, true);

    $url = $getUrl['response']['upload_url'];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => new CURLFile($output_cover, 'image/jpeg', 'image0')));
    $upload = curl_exec( $ch );
    curl_close( $ch );

    if($upload) {
        $upload = json_decode($upload, true);

        $getUrl = getApiMethod('photos.saveOwnerCoverPhoto', array(
            'hash' => $upload['hash'],
            'photo' => $upload['photo'],
        ));
        
        setLog('Загружаем обложку '.$getUrl);

        if(stripos($getUrl, 'response":{"images":[{')) {
            print_r('<p>Динамическая обложка успешно загружена в <a href="https://vk.com/club' . $group_id . '" target="_blank" rel="noopener noreferrer">группу</a></p>' . PHP_EOL);
            echo '<p><img src="'.'cover/output.png'.'" width="795" height="200"></p>';
            setLog('Загружаем обложку в https://vk.com/club'.$group_id);
        } else {
            print_r('Ошибка загрузки! '.$getUrl);
            setLog('Ошибка загрузки! '.$getUrl);
        }
    }
}

Вот код без изменений. Я опирался на пример с выводом времени, числа и недели. Раз они получают данные в неком формате и день недели с функцией, и я решил пойти по такому же примеру:
$show_weather = round($weather->main->temp) . '°C';

получает погоду, а это те же цифры и я решил просто подставить и получил рабочий вариант:

if($show_weather){
	$draw->setFont(BASEPATH."/font/".$font_weather);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($weather_font_size);
    $draw->setFillColor("rgb(".$weather_font_color.")");
    $bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, 0, rtrim($show_weather.''));


если пробую использовать переменную не как выше варианте все ломается, неужели данные переменной $show_weather надо в рисунок превращать, а как же время, дата, неделя обходятся без этого?

laimas 17.12.2020 19:42

Это бред rtrim($show_weather.''), но в чем проблема выбросить это и явно прописать, например, '12°C', проблемы будут?

ALFRED450 17.12.2020 21:22

Цитата:

Сообщение от laimas (Сообщение 531843)
Это бред rtrim($show_weather.''), но в чем проблема выбросить это и явно прописать, например, '12°C', проблемы будут?

:) вот так бы с возрастом было, всегда 12 , температура то постоянно меняется

ALFRED450 17.12.2020 21:32

Ну, ладно пусть остается как есть. Вы мне помогли с выводом рисунка, он работает и подумал, а нельзя ли его модернизировать и стал экспериментировать с imagescale для изменения размеров изображения
$img = file_get_contents('http://openweathermap.org/img/wn/' . $icon);
$img2 = new Imagick();
$img2->readImageBlob($img);
$dest = imagescale($img2, $icon_width, $icon_height);


$dest потом подставляя далее вместо $img2 не работает и кажется бредом ))

laimas 17.12.2020 21:45

Цитата:

Сообщение от ALFRED450
температура то постоянно меняется

Да наплевать что она меняется, это ведь для проверки, потому, что rtrim($show_weather.''), даже слов нет чтобы выразить какой это бред. Вот так работает?

$bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, 0, '12°C');


А чем это отличается от $show_weather? Выясняйте, анализируйте, но не пишите чепухи в коде.

ALFRED450 17.12.2020 22:34

Цитата:

Сообщение от laimas (Сообщение 531847)
Да наплевать что она меняется, это ведь для проверки, потому, что rtrim($show_weather.''), даже слов нет чтобы выразить какой это бред. Вот так работает?

$bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, 0, '12°C');


А чем это отличается от $show_weather? Выясняйте, анализируйте, но не пишите чепухи в коде.

да работает

так этот бред еще и работает))) rtrim($show_weather.'')
точнее rtrim($show_weather.'')); стоит убрать ' ' и все не работает

laimas 18.12.2020 07:08

Вложений: 1
Цитата:

Сообщение от ALFRED450
стоит убрать ' ' и все не работает
('$cityname')

Сколько можно повторять одно и тоже:

$cityname = "Город"; //это переменная со строковым значением, и ее вывод где-то, во что-то, это будет Город

'$cityname' - это строка, которая так и будет выведена $cityname.

Нет, вы все лепите и лепите эту чушь в коде, удивляясь почему не работает.

Это ваши данные, и вывод температуры как вам хочется, а вывод ее один в один по примеру из руководства.

$data = json_decode(file_get_contents('https://api.openweathermap.org/data/2.5/weather?id=498817&units=metric&appid=42633145136a94711f8d879deade6bf1&lang=ru'));
$show_weather = round($data->main->temp) . '°C';

$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel('white');
$image->newImage(100, 80, $pixel);
$draw->setFont('fonts/tahoma.ttf');
$draw->setFontSize(30);
$image->annotateImage($draw, 10, 45, 0, $show_weather);
$image->setImageFormat('png');
header('Content-type: image/png');
echo $image;


А это результат работы. Выполните этот код отдельно, я сомневаюсь, что у вас он не выполнится должным образом, если вы не добавите в него эту дурь rtrim($show_weather . ' ').

ALFRED450 18.12.2020 08:59

Вложений: 1
Цитата:

Сообщение от laimas (Сообщение 531853)
Сколько можно повторять одно и тоже:

$cityname = "Город"; //это переменная со строковым значением, и ее вывод где-то, во что-то, это будет Город

'$cityname' - это строка, которая так и будет выведена $cityname.

Нет, вы все лепите и лепите эту чушь в коде, удивляясь почему не работает.

Это ваши данные, и вывод температуры как вам хочется, а вывод ее один в один по примеру из руководства.

$data = json_decode(file_get_contents('https://api.openweathermap.org/data/2.5/weather?id=498817&units=metric&appid=42633145136a94711f8d879deade6bf1&lang=ru'));
$show_weather = round($data->main->temp) . '°C';

$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel('white');
$image->newImage(100, 80, $pixel);
$draw->setFont('fonts/tahoma.ttf');
$draw->setFontSize(30);
$image->annotateImage($draw, 10, 45, 0, $show_weather);
$image->setImageFormat('png');
header('Content-type: image/png');
echo $image;


А это результат работы. Выполните этот код отдельно, я сомневаюсь, что у вас он не выполнится должным образом, если вы не добавите в него эту дурь rtrim($show_weather . ' ').

https://javascript.ru/forum/attachme...d=160827110 7

ALFRED450 18.12.2020 09:21

вот вы пишите
$cityname = "Город"; //это переменная со строковым значением, и ее вывод где-то, во что-то, это будет Город

'$cityname' - это строка, которая так и будет выведена $cityname.

как в таком случае выводится дата, время, неделя не превращая ее в рисунок
вот пример:
if($view_date){
	$draw->setFont(BASEPATH."/font/".$font_date);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($date_font_size);
    $draw->setFillColor("rgb(".$date_font_color.")");
    $bg->annotateImage($draw, $date_text_pixel_x, $date_text_pixel_y, 0, mb_strtoupper(date('d ') . $monthes[(date('n'))] . date(' Y')));

переменная $monthes подставляет свое тексты из источника
почему $cityname не может быть тем же источником
ведь она реально работает но в связке mb_strtoupper или rtrim

ALFRED450 18.12.2020 09:30

попробуйте на данный пример применить свой метод

ALFRED450 18.12.2020 09:35

Хоть дичь что получилась и работает я готов заплатить за ваш нормальный рабочий по всем правилам вариант.
В измененном работает, изменяет координаты, размеры, но единственное не отключается по команде как в этом рабочем примере:
//[true - разрешить false - запретить]
$view_last_subscriber = true; // Последний подписчик
$view_today = false; // День недели
$view_date = true; // Число
$view_clock = true; // Часы

laimas 18.12.2020 11:48

Делайте что хотите, а устал уже, так как писать такую чушь и удивляться почему нет текста

Цитата:

Сообщение от ALFRED450
да с датой я случайно кинул, ну сама переменная $cityname показывает город и пишет в верхнем регистре ТУЛА, а убираешь функцию летит ошибка
$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, ('$cityname');

вот так не отображается текст

затем опять теми же граблями

Цитата:

Сообщение от ALFRED450
вот вы пишите
$cityname = "Город"; //это переменная со строковым значением, и ее вывод где-то, во что-то, это будет Город

'$cityname' - это строка, которая так и будет выведена $cityname.

как в таком случае выводится дата, время, неделя не превращая ее в рисунок

Вы не с того начали, не с написания такого кода вам надо начинать, а с изучения этого раздела, так как у вас не только не хватает знаний, но и понимания элементарного.

ALFRED450 18.12.2020 12:36

Цитата:

Сообщение от laimas (Сообщение 531864)
Делайте что хотите, а устал уже, так как писать такую чушь и удивляться почему нет текста


Цитата:

да с датой я случайно кинул, ну сама переменная $cityname показывает город и пишет в верхнем регистре ТУЛА, а убираешь функцию летит ошибка
$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, ('$cityname');
я видел что так не верно и наблюдал результат что прописалось $cityname
не хочу вступать в конфронтацию, так как прекрасно понимаю, что нуб в этом, но вы опять же называете чушью, то что РАБОТАЕТ и ОТОБРАЖАЕТ результат, но говорите что это неправильно.
Неправильно разве может работать
$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, mb_strtoupper($cityname.' '));

повторяю ЭТО работает

ALFRED450 18.12.2020 12:43

Вложений: 1
https://javascript.ru/forum/attachme...d=160828456 4

laimas 18.12.2020 12:48

Цитата:

Сообщение от ALFRED450
но вы опять же называете чушью, то что РАБОТАЕТ

Вам надо выводить в верхнем регистре все? Выводе на здоровье, никто не запрещает.
Полнейшая чушь это ('$cityname') и "лечение" этого как mb_strtoupper(...). И если первое вам нужно, то зачем вы эту дурь к температуре клеите?

Ни кто с вами и не собирается вести военные действия, просто вам нужно начинать учить язык с его основ, а не хвататься сразу за то, в чем вы разобраться не можете. Это JS, но суть та же, выполните:

var $cityname = 'Город';
alert($cityname + '\n' + '$cityname')

Вопрос - почему во второй строке не выводит Город?

ALFRED450 18.12.2020 13:27

Цитата:

Сообщение от laimas (Сообщение 531870)
Вам надо выводить в верхнем регистре все? Выводе на здоровье, никто не запрещает.
Полнейшая чушь это ('$cityname') и "лечение" этого как mb_strtoupper(...). И если первое вам нужно, то зачем вы эту дурь к температуре клеите?

Ни кто с вами и не собирается вести военные действия, просто вам нужно начинать учить язык с его основ, а не хвататься сразу за то, в чем вы разобраться не можете. Это JS, но суть та же, выполните:

var $cityname = 'Город';
alert($cityname + '\n' + '$cityname')

Вопрос - почему во второй строке не выводит Город?

так не верно:
$cityname = 'Город';
echo 
$cityname;

laimas 18.12.2020 13:42

Цитата:

Сообщение от ALFRED450
так не верно:

Что именно не верно?

А вот так в обеих случаях будет вывод не строки $cityname, а значения переменной $cityname.

var $cityname = 'Город';
alert($cityname + '\n' + `${$cityname}`)


Такая возможность появилась в JS не так давно, и при этом строка заключена в обратные косые кавычки. В РНР вывод значений переменных (выполнение кода) в строке доступно давно, но возможно только тогда когда строка заключена не в одинарные, а в двойные кавычки. Именно поэтому простые строки в РНР лучше заключать в одинарные, а не двойные кавычки, чтобы избавить парсер от бесполезного разбора строки. Читайте об этом в разделе руководства по ссылке.

Но в данном случае поступать так "$cityname" вместо $cityname при передачи строки в функцию, это такая же глупость, как и rtrim(...) ради вывода. Если вы такие грабли в коде пишите, значит что-то вы упустили. Чудес не бывает, они легко объясняются незнанием, непониманием, невниманием или элементарными ошибками. Мы люди и нам свойственно ошибаться, поэтому нужно внимательно изучить то, что вы написали, проверить что и как вы отдаете в функцию и т.п., и тогда вы обнаружите свой же баг. Именно свой, ибо причиной "такой странности" являетесь вы, а никак не язык РНР или его расширения.

Скачивайте руководство РНР, оно в CHM формате на многих языках, скачивайте то что с примерами, и изучайте с самого начала, только так будут познания и опыт, через попу не получится.

ALFRED450 18.12.2020 13:47

Цитата:

Сообщение от laimas (Сообщение 531875)
Что именно не верно?

А вот так в обеих случаях будет вывод не строки $cityname, а значения переменной $cityname.

var $cityname = 'Город';
alert($cityname + '\n' + `${$cityname}`)


Такая возможность появилась в JS не так давно, и при этом строка заключена в обратные косые кавычки. В РНР вывод значений переменных (выполнение кода) в строке доступно давно, но возможно только тогда когда строка заключена не в одинарные, а в двойные кавычки. Именно поэтому простые строки в РНР лучше заключать в одинарные, а не двойные кавычки, чтобы избавить парсер от бесполезного разбора строки. Читайте об этом в разделе руководства по ссылке.

Но в данном случае поступать так "$cityname" вместо $cityname при передачи строки в функцию, это такая же глупость, как и rtrim(...) ради вывода. Если вы такие грабли в коде пишите, значит что-то вы упустили. Чудес не бывает, они легко объясняются незнанием, непониманием, невниманием или элементарными ошибками. Мы люди и нам свойственно ошибаться, поэтому нужно внимательно изучить то, что вы написали, проверить что и как вы отдаете в функцию и т.п., и тогда вы обнаружите свой же баг. Именно свой, ибо причиной "такой странности" являетесь вы, а никак не язык РНР или его расширения.

Скачивайте руководство РНР, оно в CHM формате на многих языках, скачивайте то что с примерами, и изучайте с самого начала, только так будут познания и опыт, через попу не получится.

))) 7 страниц пытки чтоб ......$city_text_pixel_y, 0, "$cityname");
взять просто в двойные кавычки. Спасибо большое - это не сарказм.
Даже "аспирантом" стал ))) взял в двойные, чтобы избавить себя от этого звания

laimas 18.12.2020 13:54

Цитата:

Сообщение от ALFRED450
взять просто в двойные кавычки

Опять 25 - не нужно вообще никаких кавычек!

Есть функция, которая ожидает строку, пусть так fun(string). Если вы пишите в коде явно с передачей строки "Текст", то и должны писать fun("Текст") вызывая функцию. Но если эта строка ранее определена в переменной $var, то вызов будет fun($var), обрамлять при этом имя переменной кавычками не надо, это дурь не иначе.

ALFRED450 18.12.2020 14:10

Цитата:

Сообщение от laimas (Сообщение 531877)
Опять 25 - не нужно вообще никаких кавычек!

Есть функция, которая ожидает строку, пусть так fun(string). Если вы пишите в коде явно с передачей строки "Текст", то и должны писать fun("Текст") вызывая функцию. Но если эта строка ранее определена в переменной $var, то вызов будет fun($var), обрамлять при этом имя переменной кавычками не надо, это дурь не иначе.

окончательно запутался, как китайская грамота

if($cityname){ //город
	$draw->setFont(BASEPATH."/font/".$font_city);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($city_font_size);
    $draw->setFillColor("rgb(".$city_font_color.")");
    $bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, "$cityname");

что куда писать?

laimas 18.12.2020 14:19

$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, $cityname);


На черта вы упорно переменную обрамляете в кавычки? И это когда рядом $city_text_pixel_y без этой чуши и нормально указывается.

ALFRED450 18.12.2020 14:28

Цитата:

Сообщение от laimas (Сообщение 531879)
$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, $cityname);


На черта вы упорно переменную обрамляете в кавычки? И это когда рядом $city_text_pixel_y без этой чуши и нормально указывается.

Верно, блин, ну пробовал я вроде так и не получалось.Убрал, работает.
Я выше просил, а как сделать чтобы
if($cityname){ //город
отключался как сделано со временем, днем и неделей
$view_today = false; // День недели
$view_date = true; // Число
$view_clock = true; // Часы
$cityname = false // не отключает

laimas 18.12.2020 14:38

Цитата:

Сообщение от ALFRED450
$cityname = false // не отключает

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

ALFRED450 18.12.2020 16:32

Цитата:

Сообщение от laimas (Сообщение 531884)
Понятия не имею, разбирайтесь, выведите в браузер значение переменной, в общем анализируйте.

разобрался, посмотрел внимательно на примеры в коде и понял, что переменные которые в названии и те что выполняются должны иметь разное название

if($view_cityname){ //город
$draw->setFont(BASEPATH."/font/".$font_city);
$draw->setTextAlignment(Imagick::ALIGN_LEFT);
$draw->setFontSize($city_font_size);
$draw->setFillColor("rgb(".$city_font_color.")");
$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, $cityname);

тогда:
$view_cityname = false; //отключается

ALFRED450 20.12.2020 18:58

не могли бы вы подсказать почему получая содержимое из текстового файла не получается вывести как примерами выше, то есть соединить с графикой?
$handle = fopen("statistika/online.txt", "r");
while (!feof($handle)) {
    $buffer = fgets($handle, 50);
    echo $buffer;
}
fclose($handle);

->
if($vs){ //статистика
	$draw->setFont(BASEPATH."/font/".$font_server);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($server_font_size);
    $draw->setFillColor("rgb(".$server_font_color.")");
    $bg->annotateImage($draw, $server_text_pixel_x, $server_text_pixel_y, 0, $buffer);
}

laimas 20.12.2020 19:04

Вы вопросы задает так, слово я ясновидящий. Что значит не получается?

ALFRED450 20.12.2020 22:40

Цитата:

Сообщение от laimas (Сообщение 531952)
Вы вопросы задает так, слово я ясновидящий. Что значит не получается?

Как правильно получить содержимое текстового файла и назначить ему переменную, например:
$handle = fopen("statistika/online.txt", "r");
я так понимаю чтением занимается функция fgets
тестовый файл к примеру содержит такой текст: 123456789
прочитать не более 50 символов, если даже там 10 символов прочитать их и назначить полученное в переменную скажем $buffer

чтоб указывая переменную $buffer = 123456789
как то так

laimas 21.12.2020 03:25

Это для чтения больших файлов, а для содержания 123456... file_get_contents.

ALFRED450 21.12.2020 11:03

Цитата:

Сообщение от laimas (Сообщение 531956)
Это для чтения больших файлов, а для содержания 123456... file_get_contents.

сделал так:

$handle = file_get_contents('statistika/online.txt', FALSE, NULL, 0, 10);

если дописать
var_dump($handle);
string(10) "1234546789"
то что нужно, соответственно прочитал 10 символов начиная с нулевого
но вот если переменную вставить чтоб текст наложился, то не выходит, что не так делаю?
if($vs){ //статистика
	$draw->setFont(BASEPATH."/font/".$font_server);
	$draw->setTextAlignment(Imagick::ALIGN_LEFT);
    $draw->setFontSize($server_font_size);
    $draw->setFillColor("rgb(".$server_font_color.")");
*!*
    $bg->annotateImage($draw, $server_text_pixel_x, $server_text_pixel_y, 0, $handle;
*/!*
}

laimas 21.12.2020 11:07

Цитата:

Сообщение от ALFRED450
file_get_contents('statistika/online.txt', FALSE, NULL, 0, 10);

Если на сервере организовано хранение чего-то, которое получают как file_get_contents('statistika/online.txt', FALSE, NULL, 0, 10), то это уже плохо. А вывод, если именно так и есть, то строка 6 написана с явной ошибкой.

laimas 21.12.2020 11:44

Цитата:

Сообщение от ALFRED450
чат собирает статистику и сохраняет в *.txt

Очень плохо, есть ведь база. А если в файле, то почему не json, а такой костыльный способ.

В рамка веб об CreateObject("Scripting.FileSystemObject") даже и думать не стоит.

ALFRED450 21.12.2020 15:30

Цитата:

Сообщение от laimas (Сообщение 531964)
Очень плохо, есть ведь база. А если в файле, то почему не json, а такой костыльный способ.

В рамка веб об CreateObject("Scripting.FileSystemObject") даже и думать не стоит.

CreateObject никак не связан с веб, чат как отдельная программа, это плагин отрабатывает и сохраняет в текстовый формат.

Данных не много чтоб подключать базу. Вообще тогда боюсь потеряться:) . Тут бы попроще разобраться, попроще в плане для вас ))

Так как с чтением в переменную, не подскажите верное решение?
я думал если в примерах на ранних страницах:
$cityname = "Город"
то
$handle = 123456789

и должно получится, но ...

laimas 21.12.2020 16:33

Цитата:

Сообщение от ALFRED450
Тут бы попроще разобраться, попроще в плане для вас

В чем я должен разбираться? Если у вас какой-то винегрет непонятный из того, что может работать как веб приложение, и хрен знает что и на чем, не понятно для чего. Если 123456789, это все что содержит файл и вы называете статистикой банальный счетчик, то достаточно trim(file_get_contents('statistika/online.txt'))

Отладкой нужно заниматься на локальном сервере, включив вывод ошибок, анализируйте их и исправляйте. А я не ясновидящий, я не знаю что там у вас происходит и гадать конечно же не буду.

ALFRED450 21.12.2020 18:26

Цитата:

Сообщение от laimas (Сообщение 531970)
В чем я должен разбираться? Если у вас какой-то винегрет непонятный из того, что может работать как веб приложение, и хрен знает что и на чем, не понятно для чего. Если 123456789, это все что содержит файл и вы называете статистикой банальный счетчик, то достаточно trim(file_get_contents('statistika/online.txt'))

Отладкой нужно заниматься на локальном сервере, включив вывод ошибок, анализируйте их и исправляйте. А я не ясновидящий, я не знаю что там у вас происходит и гадать конечно же не буду.

разобрался, не обратил внимание старые свои пробы и пропустил:
if($vs) заменить if($handle) и все работает.

последняя просьба, направьте в верном направлении, как это сделать для php, потому как для html работает:

$fp = fsockopen("127.0.0.1", 1234);

if (!$fp) {
    echo "<b><font color='red'> Оффлайн</font></b>";
} else {
    echo "<b><font color='green'> Онлайн</font></b>";
}

чтоб так же использовать
$bg->annotateImage(, , , 0, ;

laimas 22.12.2020 13:52

И в чем проблема заменить вывод на присвоение его переменной?

 =  ? \'On\' : \'Off\';


Часовой пояс GMT +3, время: 18:32.