Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод списка пользователей и редактирование их...
 
 автор: Spyder   (17.03.2006 в 16:55)   письмо автору
 
 

Помогите осуществить редактирование пользователей.
вот код который выводит список пользователей edit.php

<?
//подключение к базе
include ("config.php");

//выполняем запрос
$query "SELECT * FROM users ";

$pt mysql_query($query);

if(
$pt)
 {
   echo 
"<table border=1 width=100% bgcolor=gold>
          <tr>
            <td>id номер</td>
            <td>Nickname</td>
            <td>Фамилия</td>
            <td>Редакстирование</td>
          </tr>"
;
   while(list(
$id_user$name, , $family) = mysql_fetch_row($pt))
    {
    echo 
"
             <tr>
               <td>
$id_user</td>
               <td>
$name</td>
               <td>
$family</td>
               <td><a href=edit_form.php?id=
$id>Редактировать</a></td>
             </tr>"
;
    }

 }
 else
 {
  echo 
"figny";
 }
 echo 
"</table>";
?>

чтобы при нажатии на ссылку Редактировать выводил информацию о пользвателе в формы.
я написал не знаю правильно или нет но в формы текст не добавляется.

<?php
 
require_once("update.php");

?>
   <form action=update_user.php method=post>
      <table>
        <tr>
         <td>Имя :</td><td><input type=text name=name value="<?php echo $_POST['name']; ?>"></td>
        </tr>

        <tr>
         <td>Фамилия :</td><td><input type=text name=family value="<?php echo $_POST['family']; ?>"></td>
        </tr>
      </table>
   </form>
 </body>
</html>


код файла update.php

<?php
 
//подключение базы
 
require_once("config.php");


 
//Выполняем запрос
 
$query "SELECT * FROM users WHERE id_user";

 
$nme mysql_query($query);
  if(!
$nme)
     {
       echo 
mysql_error();
       echo 
"Ошибка выполнения запроса";
       exit();
    }
   if(
mysql_num_rows($nme) > 0)
   {
      
//
      
if($_POST['id'] == $id_user)
       {
        echo 
"правильно";
        
$que "SELECT * FROM users WHERE $name";
       }
       else
       {
        echo 
"нету";
       }
   }
   else
   {
   echo 
"ошибка";
   }
?>

   
 
 автор: Trianon   (17.03.2006 в 19:43)   письмо автору
 
   для: Spyder   (17.03.2006 в 16:55)
 

<?php  // ====edit.php=====
include ("config.php"); //подключение к базе


$query "SELECT * FROM users "//выполняем запрос
if(!($pt mysql_query($query)))
    exit(
"Ошибка запроса $query :"mysql_error());

echo 
"<table border=1 width=100% bgcolor=gold>
         <tr><td>id номер</td><td>Nickname</td><td>Фамилия</td><td>Ред.</td></tr>"
;

if(
mysql_num_rows($pt))
   while(list(
$id_user$name, , $family) = mysql_fetch_row($pt))
      echo 
"<tr><td>$id_user</td><td>$name</td><td>$family</td>
               <td><a href=edit_form.php?id=
$id_user>Редактировать</a></td></tr>";
else echo 
"<tr><td colspan=4>Пользователей в базе нет.</td></tr>";

echo 
"</table>";
?>



<?php   // ====edit_form.php=====
require_once("config.php"); //подключение базы

$query "SELECT * FROM users WHERE id_user = ".intval($_GET['id']);
if(!(
$nme mysql_query($query)))
    exit(
"Ошибка запроса $query :"mysql_error());

   if(
mysql_num_rows($nme) <= 0)
       exit(
"Нет пользователя с номером ".$_GET['id']);

   list(
$id_user$name, , $family) = mysql_fetch_row($nme);
?> <form action=update.php method=post>      <table>
        <tr> <td>Id :</td><td><?php
         
echo "$id_user<input type=hidden name=id_user value=$id_user />";
         
?></td> </tr>
        <tr><td>Имя :</td><td><input type=text name=name value="<?php
                  
echo htmlspecialchars($name);
         
?>"></td></tr>
        <tr><td>Фамилия :</td><td><input type=text name=family value="<?php
                  
echo htmlspecialchars($family);
         
?>"></td></tr>
        <tr><td><input type = submit value=Update /></td>
        <td><input type=reset value=Reset /></td></tr>
      </table>
   </form>




<?php  // =======update.php=======
require_once("config.php"); //подключение базы

$name $_POST['name']; $family $_POST['family'];
if(
get_magic_quotes_gpc())
  { 
$name   stripslashes($name);  $familiastripslashes($family); }

$name   mysql_escape_string($name);
$family mysql_escape_string($family);

$query "UPDATE users "
" SET name = '$name', family = '$family' "
." WHERE id_user = " intval($_POST['id_user']);

if(!(
$nme mysql_query($query)))
    exit(
"Ошибка запроса $query :"mysql_error());
if(
mysql_affected_rows() > 0)
       echo 
"<a href=edit.php>правильно</a>";
else
       echo 
"нет пользователя с номером ".$_POST['id_user'];
?>

   
 
 автор: Spyder   (17.03.2006 в 20:26)   письмо автору
 
   для: Trianon   (17.03.2006 в 19:43)
 

Большое спасибо!!!.
У меня появились вопросы по коду расскажите пожалуста.
1. для чего он нужен и что он делает .intval($_GET['id'])
2. --- // --- if(get_magic_quotes_gpc())
3. --- // --- { $name = stripslashes($name); $familia= stripslashes($family); }

   
 
 автор: Trianon   (17.03.2006 в 20:41)   письмо автору
 
   для: Spyder   (17.03.2006 в 20:26)
 

1. Чтобы сайт не смоги атаковать SQL-инъекцией. См. задачу 11 ответ 4. в разделе задачи на PHP.
Делает он следующее: он убирает из параметра всё, что не является числом.

2. Потому, что PHP на старте может добавить слэшей в значения формы.
Подробнее - [url=?id_forum=3&id_theme=14355&page=1 ]здесь[/url].
Кстати, я забыл заэкранировать кавычки следующими инструкциями:
$name = mysql_escape_string($name);
$family = mysql_escape_string($family);
Сейчас - исправил, гляньте еще раз код.

   
 
 автор: Spyder   (17.03.2006 в 20:54)   письмо автору
 
   для: Trianon   (17.03.2006 в 20:41)
 

спасибо за ответы!!!

   
 
 автор: Spyder   (17.03.2006 в 21:26)   письмо автору
 
   для: Spyder   (17.03.2006 в 20:54)
 

У меня ещё одна проблема возникла.
Я вроде сделал код который будет удалять пользователей

<?php

 
//подключение к БД
 
require_once("config.php");

 
//Формируем SQL-запрос
 
$query "DELETE FROM users WHERE id_user = " intval($_POST['id_user']);

 if(!(
$nme mysql_query($query)))
     exit(
"Ошибка запроса $query :"mysql_error());
 if(
mysql_affected_rows() > 0)
   {
        echo 
"Пользователь удален<br>";
        echo 
"<a href=edit.php>правильно</a>";
 } else {
        echo 
"нет пользователя с номером ".$_POST['id_user'];
        echo 
"<br><a href=edit.php>назад</a>";
 }
?>


но почему то он все время пишет нет пользователя с номером
подскажите что я не так сделал.

   
 
 автор: Trianon   (17.03.2006 в 21:37)   письмо автору
 
   для: Spyder   (17.03.2006 в 21:26)
 

edit.php свежий можно глянуть?

   
 
 автор: Spyder   (17.03.2006 в 21:43)   письмо автору
 
   для: Trianon   (17.03.2006 в 21:37)
 

я его пока не изменял

   
 
 автор: Trianon   (17.03.2006 в 21:44)   письмо автору
 
   для: Spyder   (17.03.2006 в 21:43)
 

Тогда кто будет передавать в скрипт delete.php номер пользователя через пост-форму в поле id_user?

   
 
 автор: Spyder   (17.03.2006 в 21:49)   письмо автору
 
   для: Trianon   (17.03.2006 в 21:44)
 

ой я забыл.
Я подставил ссыклу

<td><a href=del_user.php?id=$id_user>Удалить</a></td>

я правльно сделал.

   
 
 автор: Trianon   (17.03.2006 в 21:53)   письмо автору
 
   для: Spyder   (17.03.2006 в 21:49)
 

Здесь он передается как id в запросе GET
Надо поменять в del_user.php
$query = "DELETE FROM users WHERE id_user = " .  intval($_GET['id']);

и
  echo "нет пользователя с номером ".$_GET['id']; 


>я правльно сделал.
Это утверждение или вопрос?

   
 
 автор: Spyder   (17.03.2006 в 22:08)   письмо автору
 
   для: Trianon   (17.03.2006 в 21:53)
 

вопрос.
А почему в коде редактирование писали

id_user = " . intval($_POST['id_user'])

а в коде удаления так.

id_user = " . intval($_GET['id'])

Объясните пожалуйста

   
 
 автор: Trianon   (17.03.2006 в 22:15)   письмо автору
 
   для: Spyder   (17.03.2006 в 22:08)
 

Потому, что редактирование выполняется формой, значит POST
А удаление Вы прикрутили через ссылку (хотя я тоже бы сделал формой.) А раз через ссылку - значит GET.
А удаление формой позволило бы удалять сразу многих пользователей, а не только одного.
Выбор поля id вместо id_user в некоторых местах - тоже Ваш выбор. :)

   
 
 автор: Spyder   (17.03.2006 в 22:33)   письмо автору
 
   для: Trianon   (17.03.2006 в 22:15)
 

понятно.
А подскажите как осуществить чтоб при регистрации можно было выбирать админ или пользователь.
Когда админ проходит авторизацию попадает на стр пусть будет index.php и на этой странице проверялось если админ то появлялась ссылка "администрирование" а если обычный пользователь то ссылка непоказывалась. И если даже пользователь вручную введет адрес страницы администрирования перебрасывала обратно на index.php.

   
 
 автор: Trianon   (17.03.2006 в 22:37)   письмо автору
 
   для: Spyder   (17.03.2006 в 22:33)
 

Добавить в таблицу users столбик с типом пользователя.
Выбирать данные из этого столбика при авторизации и в зависимости от них строить ссылку и перебрасывающий код в начале защищенной страницы.

   
 
 автор: Spyder   (17.03.2006 в 22:40)   письмо автору
 
   для: Trianon   (17.03.2006 в 22:37)
 

это понятно.
Мне нужен код или подобные темы про это.

   
 
 автор: Trianon   (17.03.2006 в 22:43)   письмо автору
 
   для: Spyder   (17.03.2006 в 22:40)
 

Попробуйте воспользоваться поиском.

   
 
 автор: Spyder   (17.03.2006 в 22:53)   письмо автору
 
   для: Trianon   (17.03.2006 в 22:43)
 

я вот сделал форму через radio

<tr>
     <td><input type="radio" name="user">Пользователь<br>
         <input type="radio" name="admin">Администратор
     </td>
    </tr>

как осуществить запись в таблицу
или это делается по другому?

   
 
 автор: Trianon   (17.03.2006 в 22:58)   письмо автору
 
   для: Spyder   (17.03.2006 в 22:53)
 

<input type=radio name=adm value=0>Пользователь<br>
<input type=radio name=adm value=1>Администратор
Так лучше будет , не находите?

Для Пользователя $_GET['adm'] будет равна "0"
для Администратора $_GET['adm'] будет равна "1".

   
 
 автор: Spyder   (17.03.2006 в 23:16)   письмо автору
 
   для: Trianon   (17.03.2006 в 22:58)
 

я сделал как вы написали но данные в базу не записываются а когда вместо $_GET подставляю $_POST тогда записываются

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования