как в пхп вставить знак?

Статус
В этой теме нельзя размещать новые ответы.

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
466
Реакции
16
Столкнулся с проблемой,
вставляю знаки в код и они неверно отображаются!
пример:
PHP:
echo "<option value='$row[make][b]&menu=home[/b]";

а в браузере это выгляди так:
wwwlala.com/index.php?make=blabla%25menu%3Dhome

Помогите пожалуйста!
 
если запрос передается методом GET, надо делать urlencode
 
вот весь код
PHP:
<?php
					$result = mysql_query("SELECT DISTINCT make FROM $dblist ORDER BY make ASC");
					if(mysql_num_rows($result)) {
						while($row = mysql_fetch_array($result)) {
						
							echo "<option value='$row[make]?menu=home";
							if($row[make] == $_GET[make]) echo "selected='selected'";
							echo ">$row[make]</option>";
						}
					}
					?>
 
смысл в том что мне в любом случае надо сделать так что бы в адресной строке была вписана строчка &menu=home
 
PHP:
  <?php
        $result = mysql_query('SELECT DISTINCT `make` FROM `'.$dblist.'` ORDER BY `make` ASC;');
        if(mysql_num_rows($result)) {
            while($row = mysql_fetch_array($result)) 
            {
                echo '<option value="'.$row['make'].'?menu=home"'.
                ($row['make'] == $_GET['make']? ' selected="selected"' : '').
                '>'.$row['make'].'</option>';
            }
        }
  ?>
 
Вообще, старайся использовать символ конкатенации (склеивания).
В PHP это точка.

Например, код:
PHP:
<?
$a="Вася";
$b="Пупкин";
echo "$a $b";
?>
равен коду:
PHP:
<?
$a="Вася";
$b="Пупкин";
echo $a." ".$b;
?>
для сложения выражений можно использовать скобки:
PHP:
<?
echo "1+2=".(1+2);
?>
 
Проследи какие функции проходит переменная перед отправкой на сервер.
Мне кажется, что на каком то шаге чем-то делается urlencode
Может и сам браузер меняет, можно еще попробовать в разных браузерах
 
По теме - после тега <form ...> добавь:
PHP:
echo '<input type="hidden" name="menu" value="home" />';
А в браузере всё верно отображалось, ему сказано передать на сервер строку blabla&menu=home, он её кодирует по правилам и передаёт, а сервер получает и раскодирует в аргумент make точно то, что написано между кавычками.
-------------------
А зачем стараться использовать оператор-конкатенацию?) Вроде и 2ные кавычки замечательно конкатенируют.
 
А зачем стараться использовать оператор-конкатенацию?) Вроде и 2ные кавычки замечательно конкатенируют.
С точки зрения профессионального программирования на пхп, рекомендуется использовать конкатенацию строк, дабы это работает быстрее.
 
Раньше тоже так думал, всегда и везде использовал одинарные кавычки, доходило до того что вместо "\r\n" писал chr(13).chr(10) . Потом сделал для себя синтетический тест на различных строках и получилось, что, если учавствуют 5 и более аргументов, запись с двойными кавычками работает на порядок (в 2-3 раза) быстрее явной конкатенации; при росте длины строк, явная конкатенация "точкой" проигрывает ещё больше. На мелких строках с малым количеством аргументов запись с кавычками медленнее примерно на 33%. Так что рекомендация сомнительна )) Если строк много и они большие, то много времени уходит на перевыделение памяти при присоединении каждой строки.

Самое главное, что относительно других более ресурсоёмких операций - это мелочь, которая не стоит внимания. А способ конкатенации нужно выбирать исходя не из сомнительных выигрышей в скорости, а из удобства записи и чтения кода в каждом конкретном случае =)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху