Показать сообщение отдельно
  #24 (permalink)  
Старый 25.11.2014, 14:33
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ладно, представим что я это делаю.

Сначала мне нужна таблица в БД с именами и толкованиями (общая схема).

Код:
create table names (
id int,
name varchar(100),
gen enum('мальчик','девочка'),
legend varchar(4095),
primary key(id)
);
Теперь мне надо вывести из нее массив с парой name => id

select id,name,gen+0 from names;

// тут конкретика как получить из запроса результат

$out=array();
while($row = $result->fetch_assoc())
  $out[$row['gen']][$row['name']]=$row['id'];


то есть получим массив из 2-х элементов первого уровня (1 и 2), в каждом из которых будут массивы в виде пары имя - индекс. Имя первое, поскольку оно - аргумент, а искомое - индекс.

фича gen+0 превращает текст в индексе, если без +0, то вместо 1 и 2 будет мальчик и девочка. Может и так хорошо.

теперь надо отпостить этот массив в хтмл в процессе рендера страницы

<script>
  var names=<?php echo json_encode($out);?>;
</script>


или непосредственно в ту функцию в виде проперти или там аргумента, которая ищет и качает.

Теперь идет интерфейс из которого поступает запрос - Анакин.

if(name in names[1])
 var id = names[1][name]; // 1 == мальчик, 2 == девочка, если помните
else
  throw 'Такого имени "'+name+'" человечество еще не придумало!';


Теперь надо сделать запрос на сервер. Реализация может быть какой угодно. Например

var url = location.host+'search.php/?id='+index;

var link = new XMLHttpRequest();
link.onreadystatechange=function()  {
	if (link.readyState==4 && link.status==200) {
		update_legend(link.responseText);
	}
	document.body.style.cursor = "auto";
}
link.open('GET', url, true);
link.send();
document.body.style.cursor = "wait";

// update_legend() - функция которая знает куда сунуть пришедший ответ


search.php
<?php
if(isset($_GET['id'])){
  $id=(int)$_GET['id'];
   
  select legend from names where id=$id;

  // бла-бла-бла, зависит от провайдера БД

  echo json_encode($data);

}


готово.

Последний раз редактировалось kostyanet, 25.11.2014 в 14:36.
Ответить с цитированием