Использование В Js Php Переменных

Статус
Закрыто для дальнейших ответов.

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Привет всем!
Возникла проблема с проверкой имени по бд и выводом ошики без перезагрузки страницы.

У меня есть скрипт PHP который отбирает в массив все имена содержащиеся в базе данных
Код:
$users = mysql_query("SELECT * FROM users");
while($user = mysql_fetch_array($users))
{
	$list_name[] = $user['name'];
}
А так же у меня присутствует форма с кнопкой, по нажатию на которую, обрабатывается поле input формы.
Я биру значение поля и пытаюсь с помощью цикла осуществить проверку на совпадение.
Но вот незадача... У меня есть только PHP массив с именами пользователей.

Код:
function echo_error_name(name)
{
diverrorname1.style.display='none';
diverrorname2.style.display='none';
diverrorname3.style.display='none';
/*diverrormail.style.display='none';*/

var list_name = {$list_name};
document.write(list_name = <br>);
	if(name == "")
	{
		diverrorname1.style.display='block';
	}

	if(name.match( /[ \.,\[\]{}$<>?!#@%^&*()\/\\\|]/ ))
	{
		diverrorname2.style.display='block';
	}

	for(var i = 0; i<list_name.lenght; i++)
	{
		if(name == list_name[i])
		{
			diverrorname3.style.display='block';
		}
	}

	
}
Не могу понять как мне преобразовать php массив в js
Пытался просто вставить тупо переменную в цикл, но это геморой...

Может кто знаеьт путь. Подскажите плиз!
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
делаешь

<script language="javascript">

var myvar=<?=$myvar;?>;

</script>

вроде так. а вообще тема про переменные жс в пхп и переменные пхп в жс много статей (одинаковых) на просторах Сети.
 

Nick

Well-Known Member
Регистрация
03.10.2006
Сообщения
87
а вообще, в данном случае такая проверка глупа.
потому как если имен несколько мегабайт?
пользователю ждать загрузки страницы?
или как?

В данном случае АЯКС вам в руки.
Это будет идеальное рещение проблемы.
 

ZitosS_32

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

В данном случае АЯКС вам в руки.
Это будет идеальное рещение проблемы.
Это тоже что-то типа Ajax.

v0rbis такая сисма тож не катит. Javascript вообще не грузит
var list_name = <?=$list_name;?>;

Помогаем :blush:
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Так-с строка заработала после того, как я вставил js код в главный файл PHP, но ведь таким образом не получется передать сразу весь массив. Вместо массива JS переменная получает значение строки "function Array() { [native code] }"?.

Может кто подсказать как сделать перебор в цикле для занесния значений php переменной(массив) в js переменную(массив)?

ОЧень прошу помочь
 

Alterbit

Well-Known Member
Регистрация
10.05.2005
Сообщения
78
Так-с строка заработала после того, как я вставил js код в главный файл PHP, но ведь таким образом не получется передать сразу весь массив. Вместо массива JS переменная получает значение строки "function Array() { [native code] }"?.

Может кто подсказать как сделать перебор в цикле для занесния значений php переменной(массив) в js переменную(массив)?

ОЧень прошу помочь
Код:
		 <?php
		   $php_array1 = array(1, 2, 3);
		   $php_array2 = array('a' => 'a', 'b' => 'b', 'c' => 'c');
 ?>
		 
	   var js_array1 = <?php echo json_encode($php_array1)?>;
	   var js_array2 = <?php echo json_encode($php_array2)?>;
		 
 /*
	 js_array1 = [1, 2, 3]
	 js_array2 = {"a":"a", "b":"b", "c":"c"}
 */
json_encode доступна с php 5.2
для ранних версий нужны сторонние библиотеки
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
В том то и проблема, что я не знаю какой PHP стоит на хостинге.
А кроме такого варианта ничего нельзя сделать?

Если нет, то подскажите как скачать и где, и как подключать эти библиотеки! Пожайлуста! :blush:
 

Alterbit

Well-Known Member
Регистрация
10.05.2005
Сообщения
78
В том то и проблема, что я не знаю какой PHP стоит на хостинге.
А кроме такого варианта ничего нельзя сделать?

Если нет, то подскажите как скачать и где, и как подключать эти библиотеки! Пожайлуста! :blush:
я выше ссылку дал, там внизу список библиотек под любой язык программирования)

зы. я пользуюсь FastJSON http://phpclasses.segmenta.ru/browse/package/3512.html (только там зарегацо надо для скачки)
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
сделал так, получилось, но не всё работает как хотелось бы!


Код:
<script language='javascript'>

function echo_error_name(name)
{
diverrorname1.style.display='none';
diverrorname2.style.display='none';
diverrorname3.style.display='none';
/*diverrormail.style.display='none';*/

var list_name = new Array();


	if(name == "")
	{
		diverrorname1.style.display='block';
	}

	if(name.match( /[ \.,\[\]{}$<>?!#@%^&*()\/\\\|]/ ))
	{
		diverrorname2.style.display='block';
	}

	<?$m=0;?>

	for(var i = 0; i <= <?=count($list_name)-1;?>; i++)
	{

		list_name[i] = "<?=$list_name[$m];?>";

		<?$m++;?>

	document.write(list_name[0] + "<br> <?=$m;?>" );
	}


	for(var i = 0; i < list_name.lenght; i++)
	{
		if(name == list_name[i]) 
		{
			diverrorname3.style.display='block';
		}
	}

}
До проверки логина я ещё пока не дошёл. Возникла проблема! Как вы видите, я решил сделать проверку распечатки
Код:
document.write(list_name[0] + "<br> <?=$m;?>" );
Печатает такую строку
И в $m почему-то у меня всегда образуется 0. Не могу понять откудова. Почему счётчик сбрасывается на НОЛЬ?

Помогите пожайлуста!
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
кхм..

когда мне надо было делать ЖС скрипт как мне надо то просто делал их пыхпых ехом текст скрипта. мош тебе так?
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
Как я понял тебе надо так:
Код:
<?
foreach ($list_name as $key=>$val)
{
	print 'list_name['.$key.'] = "'.addslashes($list_name[$key])."\";\n";
}
?>
Видимо ты не понимаешь что ты можешь php кодом генерировать html те, ты можешь тупо через принт выводить js код который будет выполнен...
Еще чуть пояснения если выполнить этот код с
Код:
$list_name=array('z'=>'test1','zz'=>'test2','test3');
то выйдет:
list_name[z] = "test1";
list_name[zz] = "test2";
list_name[0] = "test3";
Еще если индексы не важны(что бывает чаще всего) можно использовать такой код, но тут в значениях массива не должно быть одиночных кавычек
Код:
var photo=new Array('<?=implode("','",$arr_photo)?>');
на выходе будет:
var list_name=new Array('test1','test2','test3');
И он будет выполнен как js код.
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Спасибки, ща попробую ))
 
Статус
Закрыто для дальнейших ответов.
Верх Низ