Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420

Проблема с типами данных

10.12.2021, 09:01. Показов 651. Ответов 11

Студворк — интернет-сервис помощи студентам
Хочу сделать ширину таблицы чкть большую от ширины надписи:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html><head>
<title>Пример</title>
<meta charset="utf-8">
<style>
.a1{font:bold 24px 'Verdana'; position:absolute; visibility:hidden;}
.h1{font:bold 24px 'Verdana'; color:#f00;}
</style></head>
<div class="a1" id="b1">В лесу родилась ёлочка</div>
 
<?php
//Длина надписи
$wB1 = "<script>document.write(document.getElementById('b1').clientWidth);</script>";
//Вывод длины (для справок)
echo "<br>wB1 = ".$wB1."<br>"; //здесь $wB1 = 332 
 
//Ширина таблицы
$wTable=$wB1+20; //а здесь $wB1 = 0. ПОЧЕМУ ?
//Вывод ширины (для справок)
echo "<br>wTable = ".$wTable."<br>";
?>
 
<body>
<table border=1 align=center width=<?php echo $wTable; ?>>
<tr><td><span class="h1">В лесу родилась ёлочка</span></td></tr>
</table></body></html>
Почему-то $wB1 сначала выводит нормальное значение (видимо тип строчный), а где надо численный $wB1=0.
Принудительное изменение типа
PHP
1
$wTable=(int)$wB1+20;
ничем не помогло. В чём здесь причина?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2021, 09:01
Ответы с готовыми решениями:

Проблема с типами данных
В одной функции одномерный динамический массив заполняется случайными числами //...

проблема с типами данных
помогите пожста. во втором селекте ругается на pdatr. Пишет &quot;Incompatible types: 'String' and 'TDate'&quot;. не могу разобраться( ...

Проблема с типами данных. Run-time error '6': OverFlow
Option Explicit Option Explicit Dim curCSP As Single Dim curSP As Single Dim dbSV As Single Dim dbIr As Single Dim dbTM As...

11
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
10.12.2021, 11:23
Цитата Сообщение от Инженер_3 Посмотреть сообщение
здесь $wB1 = 332
Потому что на тот момент PHP-сценарий уже умер и отдал код браузеру, который выполнил полученный JS и вывел результат.
Цитата Сообщение от Инженер_3 Посмотреть сообщение
а здесь $wB1 = 0. ПОЧЕМУ ?
Потому что для PHP тот JS-код -- просто строка. Вы строку HTML/JS-кода пытаетесь суммировать с числом.
1
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
10.12.2021, 13:49  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Потому что на тот момент PHP-сценарий уже умер и отдал код браузеру, который выполнил полученный JS и вывел результат.
А в какой строке PHP-сценарий родился и в какой строке умер?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
10.12.2021, 13:58
Вы через echo выводите, то, что содержится в $wB1. Затем выведенное выполняется уже в браузере.
Тут дело в строках.
Почитайте это: http://phpfaq.ru/newbie/na_tanke
1
Невнимательный
 Аватар для ft4l
3107 / 1277 / 358
Регистрация: 08.02.2013
Сообщений: 7,457
Записей в блоге: 2
10.12.2021, 14:18
Цитата Сообщение от Инженер_3 Посмотреть сообщение
родился и в какой строке умер
from JS то PHP издревле данные при следующих обращениях за страницами передавали
JS пишутся данные в document.cookie и при новых запросах из $_COOKIE доступны в PHP.

ещё можно JS-ом (jquery.ajax/XHR/fetch) что-то получать с сервера или передавать на сервер.

Но для конкретно этого width=<?php echo $wTable; ?> PHP не нужен совсем
Просто на JS можно всё сделать , не меняя html-разметку
1
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
10.12.2021, 15:23
Цитата Сообщение от Инженер_3 Посмотреть сообщение
А в какой строке PHP-сценарий родился и в какой строке умер?
PHP
1
2
3
$wB1 = "<script>document.write(document.getElementById('b1').clientWidth);</script>";
//Вывод длины (для справок)
echo "<br>wB1 = ".$wB1."<br>"; //здесь $wB1 = 332
НЕТ! Тут равно строке, которую вы присвоили выше!

PHP
1
2
//Ширина таблицы
$wTable=$wB1+20; //а здесь $wB1 = 0. А тут вдруг ноль?
Здесь не 0, а ничего не поменялось, в $wB1 всё так же строка <script.... .
Вы путаете вывод в бразузере и переменные PHP. Браузер выполняется на компе пользователя, а PHP на сервере.
Чтобы передавать данные между ними нужно использовать fetch.
1
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
10.12.2021, 19:16  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
Просто на JS можно всё сделать , не меняя html-разметку
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html><head><title>Пример</title>
<meta charset="utf-8">
<style>
.a1{font:bold 24px 'Verdana'; position:absolute; visibility:hidden;}
.h1{font:bold 24px 'Verdana'; color:#f00;}
</style></head>
<div class="a1" id="b1">В лесу родилась ёлочка</div>
<script type='text/javascript'>
wB1=document.getElementById('b1').clientWidth + 20;
s="<body><table border=1 align=center width=";
s+=wB1;
s+="><tr><td><span class=\"h1\">В лесу родилась ёлочка</span></td></tr></table></body></html>";
document.write(s);
</script>
Сделать так? Да, работает. В браузере всё чётко, но, если просматривать сам код в браузере, то не очень - не видно значения ширины таблицы.

Но сразу возникает вопрос, а если у пользователя отключена в браузере обработка скриптов, то ...
через PHP можно узнать?
0
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
10.12.2021, 19:22
Инженер_3, в консоли всё видно

HTML5
1
2
3
4
5
6
7
8
<body><div class="a1" id="b1">В лесу родилась ёлочка</div>
<script type="text/javascript">
wB1=document.getElementById('b1').clientWidth + 20;
s="<body><table border=1 align=center width=";
s+=wB1;
s+="><tr><td><span class=\"h1\">В лесу родилась ёлочка</span></td></tr></table></body></html>";
document.write(s);
</script><table border="1" align="center" width="354"><tbody><tr><td><span class="h1">В лесу родилась ёлочка</span></td></tr></tbody></table></body>
1
Невнимательный
 Аватар для ft4l
3107 / 1277 / 358
Регистрация: 08.02.2013
Сообщений: 7,457
Записей в блоге: 2
10.12.2021, 19:55
Цитата Сообщение от Инженер_3 Посмотреть сообщение
если у пользователя отключена в браузере обработка скриптов, то ...
через PHP можно узнать?
Можно только изначально всё сделать так, чтобы JS по таким мелочам не нужен был совсем ))
Универсально или адаптивно... Проценты в CSS возможно заданные в нескольких вариантах,
для нескольких разных размеров экрана.

Не по теме:

Но я сам не очень в JS как и в CSS :)
т.к. с тех времён, когда я всё пробовал на штук пяти разных браузеров,
до последних многих лет, когда из браузеров пользуюсь только одним, не популярным )
, технологии куда-то ломанулись как стадо ужаленных гну :)

1
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
10.12.2021, 20:57  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
Можно только изначально всё сделать так, чтобы JS по таким мелочам не нужен был совсем ))
Универсально или адаптивно... Проценты в CSS возможно заданные в нескольких вариантах,
для нескольких разных размеров экрана.
С контролем отключения JS разобрался - через <noscript> и перенаправление, но по-моему, сейчас нет пользователей, которые бы отключали в браузерах JS, иначе страницы сайта будут отображаться не верно.

Добавлено через 1 минуту
Цитата Сообщение от KingdaKa Посмотреть сообщение
в консоли всё видно
Что видно в консоли? Значение ширины таблицы?
0
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
11.12.2021, 13:02
Цитата Сообщение от Инженер_3 Посмотреть сообщение
Что видно в консоли? Значение ширины таблицы?
Да, разве не это вы имеете ввиуду?

HTML5
1
<table border="1" align="center" width="354">
1
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
13.12.2021, 18:19  [ТС]
Цитата Сообщение от KingdaKa Посмотреть сообщение
Да, разве не это вы имеете ввиуду?
<table border="1" align="center" width="354">
Это. Но web-страницы просматриваются не в консоли, а в браузере. Или я что-то недопонимаю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2021, 18:19
Помогаю со студенческими работами здесь

Проблема с типами
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; const int cN=100; struct pirkinys { ...

Проблема з типами!!!
Нужно виполнить операцию: m mod n Но тип переменой n: int64 и результат выдает число m. что делать? помогите!

Проблема с типами реквизитов
У справочника &quot;Склады&quot; есть синоним &quot;Склады (Места хранения)&quot;. Почему когда я запрашиваю тип реквизита документа, который ссылается на этот...

Проблема с типами строк
В общем, проблема в том, что я не знаю как обратиться к эл-менту строки типа string так, чтобы тип сохранился. И не знаю вообще возможно ли...

Ввод и вывод данных. Типы данных. Операции с числовыми типами данных
В работе необходимо вычислять значение (я) функции y = f(x). Варианты заданий отличаются видом функции (табл..1). Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru