Я создаю одну страницу администратора, где у меня несколько текстовых полей. Когда я ввожу идентификатор пользователя в одном текстовом поле, я хочу отображать имя пользователя в следующем текстовом поле, когда администратор переместится в следующее текстовое поле. Для этого я могу использовать ajax
или javascript
? какой из них будет лучше? Как я могу это сделать через javascript.
Вы не можете напрямую обращаться к БД через Javascript.
Вы можете использовать AJAX для вызова страницы сервера (например, PHP), которая запрашивает DB, хотя
<script> function showUser(str) { if (str=="") { document.getElementById("spName").innerHTML=""; return; } if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("spName").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","getUserName.php?q="+str,true); xmlhttp.send(); } </script>
getUsreName.php
<?php $q=$_GET["q"]; $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="pnpdb"; // Database name // Connect to server and select databse. $link = mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name",$link)or die("cannot select DB"); $sql="SELECT name FROM tblprofile WHERE userId = '".$q."'"; $result = mysql_query($sql); $row = mysql_fetch_array($result); $name =$row['name']; if($name == '' || empty($name)) { echo "<b>ID not found.</b>"; } else { echo "<b>".$name."</b>"; } mysql_close($link); ?>
Ответ – это AJAX, но в первую очередь лучше понять, что такое AJAX : асинхронный JavaScript и XML. Затем для упрощения вашей задачи лучше использовать фреймворк javascript, например jQuery или mootools .
Я лично предлагаю jQuery.
Используйте AJAX-Call для получения необходимых данных со сценария на стороне сервера (здесь php) и вставьте результат вызова в нужное текстовое поле.
Лучше использовать Mootools, jQuery, YUI или любую другую инфраструктуру js для выполнения запросов Ajax. Это сократит время разработки. Для получения дополнительной информации проверьте apis jQuery:
Вам нужно будет использовать ajax, который в любом случае является 9 / 10ths javascript. Я предлагаю использовать структуру JS, чтобы вам не приходилось кодировать разные браузеры. Тогда вам понадобится что-то на стороне сервера, которое обработает запрос и вернет нужные вам данные. Популярные форматы – это XML (x в ajax), JSON или просто простой HTML. В любом случае вам понадобится обратный вызов javascript для обработки результата (или условия ошибки, не забывайте об этом) и заполните ваше текстовое поле. Лично я предпочитаю просто возвращать HTML-фрагменты, но если у вас есть рамочные возможности, вы обнаружите, что обработка XML и JSON в нем сходит с ума.
Нет необходимости в ajax или javascript.
Просто введите алфавитный список всех пользователей со ссылками на страницу редактирования. Вы также можете добавить на эту страницу форму с одним текстовым полем для ввода пользователя вручную.
Как ссылки, так и форма ведут к странице редактирования, которая использует идентификатор пользователя из строки запроса для извлечения пользователей detais.
Первым шагом является создание PHP-скрипта, который отправит данные, пригодные для анализа, на JavaScript. Не разрешайте JavaScript передавать необработанные SQL-запросы на ваш PHP.
<?php $sqlGetName = $mysqli->prepare("SELECT id, name FROM users WHERE id=?"); $sqlGetName->bind_param("i", $_GET['id']); $sqlGetName->execute(); $result = array('success' => false, 'id' => null, 'name' => null); $sqlGetName->bind_result($result['id'], $result['name']); if($sqlGetName->fetch()) { $result['success'] = true; } echo json_encode($result);
Затем используйте JavaScript для извлечения значений. Пример ниже использует библиотеку MooTools для простоты, но может быть выполнен с другой библиотекой или обычным старым стандартным JavaScript.
var jsonRequest = new Request.JSON({url: 'get_user.php', onSuccess: function(result) { if(result.success) { alert(result.id + ': ' + result.name); } else { alert('Not Found'); } } }); jsonRequest.get({'id': 3});