Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод данных из бд в таблицу с возможностью редактирования

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
daewoosh
Отправлено: 30 Марта, 2014 - 17:09:14
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




Здравствуйте. У меня имеется следующее задание:
Необходимо создать страницу, выводящую список пользователей в виде таблицы
- колонки: id, имя, возраст, город

Реализовать возможность редактирования данных пользователя в данной таблице со следующим функционалом:
- при клике на имя или возраст вместо текста появляется поле ввода с текстом внутри, после чего можно начинать редактировать. При нажатии Enter или увода фокуса из поля ввода, происходит сохранение данных через вызов Ajax. Поле ввода пропадает и снова остается текст.
- при клике на город, вместо текста появляется выпадающий список городов, выбранным значением является город пользователя. можно выбрать любой другой город или первую запись в списке (Город не указан), нажать Enter и значение изменится, процесс редактирования завершится

Дополнительные условия:
- Данные о пользователях хранятся в таблице users, о городах в таблице cities,таблицы связаны между собой по полю city_id
- Реализовать класс User. Передавая к конструктор в качестве параметра id пользователя, мы должны на выходе получить объект пользователя с заполненными данными.
- В классе User должна быть реализована статичная функция GetAllUsers, которая извлекает всех пользователей из таблицы. Страница со списком пользователей формируется на основе этих данных. Функция должна минимизировать количество обращений к базе данных. Не должно быть количество запросов равное количеству пользователей.
- Изменение данных происходит через объект

Я уже в принципе все сделал, кроме обновления записи в БД с помощью AJAX. Не могу разобраться, как найти к какому пользователю принадлежит ячейка чтобы обновить соответствующую запись. Так же хотелось бы узнать замечания по своему коду. Как не стоило делать? Что нужно поменять?

Код главной страницы
PHP:
скопировать код в буфер обмена
  1.  
  2. <html>
  3.   <head>
  4.     <title>AJAX</title>
  5.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6.         <script type="text/javascript" src="redact.js"></script>
  7.         <script type="text/javascript">
  8.        
  9.  
  10. </script>
  11.         </script>
  12.   </head>
  13.   <body>
  14.   <CENTER>
  15.     <?PHP
  16.         header( 'Content-Type: text/html; charset=utf-8' );
  17.         require_once('users.class.php');
  18.       users::getAllUsers();
  19. echo '<table border="1">';
  20.         echo '<thead>';
  21.         echo '<tr>';
  22.         echo '<th>Id</th>';
  23.         echo '<th>Фамилия</th>';
  24.         echo '<th>Возраст</th>';
  25.         echo '<th>Город</th>';
  26.         echo '</tr>';
  27.         echo '</thead>';
  28.         echo '<tbody>';
  29.  while($data = mysql_fetch_array($qr_result)){
  30.                 echo '<tr>';
  31.                 echo '<td>' . $data['users_id'] . '</td>';
  32.                 echo '<td onclick="script_(this)"  width=100 height=30>' . $data['users_name'] . '</td>';
  33.                 echo '<td onclick="script_(this)" width=70 height=30>' . $data['users_age'] . '</td>';
  34.                 echo '<td onclick="script2_(this)" width=150 height=30>' . $data['city'] .  '</td>';
  35.                 echo '</tr>';
  36.         }      
  37.     echo '</tbody>';
  38.         echo '</table>';
  39.         ?>  
  40. <FORM NAME='FORM1' accept-charset="UTF-8">
  41.  
  42. Имя:
  43. <br>
  44. <INPUT type = "text" name = "users_name" align="center">
  45. <br>
  46. Возраст:
  47. <br>
  48. <INPUT type = "text" name = "users_age"><br>
  49. Город: <br>
  50. <?PHP
  51.  
  52. $i=0;
  53.  $connect_to_db = mysql_connect('localhost', 'root', '')
  54.                 or die("Could not connect: " . mysql_error());
  55.                 mysql_query("SET NAMES UTF8") or die(mysql_error());
  56.         mysql_query("SET CHARACTER SET UTF8") or die(mysql_error());
  57.                 mysql_select_db('users', $connect_to_db)
  58.                 or die("Could not select DB: " . mysql_error());
  59.                 $qr_result1 = mysql_query("SELECT city
  60.        FROM cities")
  61.                 or die(mysql_error());
  62. while($data1 = mysql_fetch_array($qr_result1))
  63. {
  64. global $make;
  65.   $make[$i]=$data1[0];  
  66.     $i++;
  67. }
  68. mysql_close($connect_to_db);
  69.   echo '<SELECT id="mySelect" name="mySelect">';
  70.   for ($k=0;$k<$i;$k++)
  71.   echo '<OPTION VALUE=" ' .$make[$k].'">' .$make[$k].' </option>';
  72.   echo '</SELECT>';
  73. ?>
  74. <br>
  75.  
  76. </CENTER>
  77. </FORM>
  78.         </body>
  79. </html>
  80.  


Файл Users.class.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // Класс для работы с базой данных
  4. class users
  5. {
  6. //***************************************************************
  7. function __construct($id)
  8. {
  9.   $db_host = 'localhost';
  10.     $db_name = 'users';
  11.     $db_username = 'root';
  12.     $db_password = '';
  13.     $db_table_to_show = 'users';  
  14.     $connect_to_db = mysql_connect($db_host, $db_username, $db_password)
  15.                 or die("Could not connect: " . mysql_error());
  16.                 mysql_query("SET NAMES UTF8") or die(mysql_error());
  17.         mysql_query("SET CHARACTER SET UTF8") or die(mysql_error());
  18.  
  19.    
  20.     mysql_select_db($db_name, $connect_to_db)
  21.                 or die("Could not select DB: " . mysql_error());
  22.  
  23.    
  24.     $qr_result = mysql_query("select * from users where users_id='$id'")
  25.                 or die(mysql_error());    
  26.     global $data1;
  27.         $data1 = mysql_fetch_array($qr_result);
  28.                  
  29.     return $data1;
  30.     mysql_close($connect_to_db);
  31. }
  32.  
  33.  
  34. //***************************************************************
  35. static function getAllUsers(){ // Выбор данных об автомобиле
  36. header( 'Content-Type: text/html; charset=utf-8' );
  37.    
  38.     $db_host = 'localhost';
  39.     $db_name = 'users';
  40.     $db_username = 'root';
  41.     $db_password = '';
  42.     $db_table_to_show = 'users';  
  43.     $connect_to_db = mysql_connect($db_host, $db_username, $db_password)
  44.                 or die("Could not connect: " . mysql_error());
  45.                 mysql_query("SET NAMES UTF8") or die(mysql_error());
  46.         mysql_query("SET CHARACTER SET UTF8") or die(mysql_error());
  47.  
  48.    
  49.     mysql_select_db($db_name, $connect_to_db)
  50.                 or die("Could not select DB: " . mysql_error());
  51.  
  52.     global $qr_result;
  53.     $qr_result = mysql_query("SELECT *
  54.        FROM users
  55.        JOIN cities
  56.        WHERE cities.city_id = users.city ")
  57.                 or die(mysql_error()); 
  58.    
  59.         //$data = mysql_fetch_array($qr_result);
  60.         return $qr_result;     
  61.  
  62.    mysql_close($connect_to_db);
  63.  
  64. }
  65. }
  66. ?>
  67.  


И файл redact.js, в котором функции обработки ячейки по щелчку.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function script_(whf)
  3. {
  4.   if (whf.firstChild.nodeType==3)
  5.     {
  6.           name=whf.innerHTML;
  7.           whf.innerHTML='<input width=100% onblur="Killer(this)" name="my"></input>'
  8.           whf.firstChild.value=name;
  9.           my.focus();
  10.         }
  11. }
  12.  
  13.   function script2_(whf)
  14. {
  15.   if (whf.firstChild.nodeType==3)
  16.         {
  17.           name=whf.innerHTML;
  18.           whf.innerHTML=                '<select onblur="Killer(this)" name="menu" id="menu" size="1">'+
  19.                   '</select>'  
  20.                 var objSel = document.getElementById("menu");
  21.                 var obj = document.getElementById("mySelect");
  22. var i=0;
  23.                 //Создаем новый объект Option и заносим его в коллекцию options
  24.                 for (i;i<obj.options.length;i++)
  25.                 {
  26.                   var t = obj.options[i].text;
  27.                   var v = obj.options[i].value;
  28.                   objSel.options[i] = new Option(t, t);
  29.                  }
  30.           whf.firstChild.value=name;
  31.           menu.focus();
  32.         }
  33. }
  34.  
  35. function Killer(whf)
  36. {
  37.   name = whf.value;
  38.   if (name=='') name='0';
  39.   whf.parentNode.innerHTML= name;
  40.   whf.onblur = null;
  41. }
  42.  


Спасибо за ранее
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB