Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Помогите создать алгоритм...


Автор: Ground 2.10.2006, 12:03
Вообщем написал добавление записей в таблицу, чтение, теперь помогите создать алгоритм изменения значений таблицы.
Как это лучше сделать? по индексу? Или вывести все записи, и как нибудь рядом сделать кнопку правка?

Автор: helflip 2.10.2006, 12:37
Вот мой код. Редактирование и удаление пользователей из базы 

Код

<html>
<head>
<body>
<?php

$title="--=Редактирование пользователя по имени=--";

$msconnect=mssql_connect("ххх","ххх","");
$msdb=mssql_select_db('[sample_db]',$msconnect); 
$msquery0 = "SELECT * FROM [user]";
$msresults0 = mssql_query($msquery0);
    
//Удаление пользователя
if (isset($_POST['delete']) and $_POST['delete'] == 'Delete')
 {    
    if (isset($_POST['id_us']))
    {
        $iu=$_POST['id_us'];
        while ($row3= mssql_fetch_array($msresults0))
        {
                 
    
    $q2 = "DELETE FROM [user]
           WHERE N = '$iu'";
        

     @mssql_query($q2) or die("Error!!! Чего то не работает!!!"); 
     echo "Запись успешно удалена";
        }
     
 }
 }




//Обновление пользователя
if (isset($_POST['save']) and $_POST['save'] == 'Save')
 {    
    if (isset($_POST['edit_ui']))
    {
        $iu=$_POST['edit_ui'];
        
    while ($row3= mssql_fetch_array($msresults0))
        {
        
                $user_id = $_POST['user_id']; 
                $user_mail = $_POST['user_mail'];
                $user_position = $_POST['user_position'];
                $user_profile = $_POST['user_profile'];
                
    
    $q2 = "UPDATE [user]
           SET userid = '".addslashes($user_id)."',
               usermail = '".addslashes($user_mail)."',
               userposition = '".addslashes($user_position)."',
              userprofile = '".addslashes($user_profile)."'
            WHERE N = '$iu'";
        

     mssql_query($q2) or die("Error!!! Чего то не работает!!!"); 
     }
 }
 }


if (isset($_POST['edit']) and $_POST['edit'] == 'Edit')
 { 
    
    $n_s = $_POST['id_us']; 
    $q     = "SELECT * FROM [user] WHERE N = '".$n_s."';";

    @$msresults1 = mssql_query($q) or die("Error"); 
    
    while ($row0= mssql_fetch_array($msresults1))    {
    ?>
    <form action="" method="POST">
    <p><font color="Green" size="8">Измените данные пользователя и нажмите Save</font></p>
    <table width="100%" align="center" bgcolor="Gray" border="5">
   <tr bgcolor="Navy">
    <td align="center"><B><font color="Silver" size="3">Имя пользователя</td></b></font>
    <td align="center"><B><font color="Silver" size="3">E-mail пользователя</td></b></font>
    <td align="center"><B><font color="Silver" size="3">Местонахождение</td></b></font>
    <td align="center"><B><font color="Silver" size="3">Прочее</td></b></font>
    <td align="center"><B><font color="Silver" size="3">Управление</td></b></font>
   </tr>
   <td align="center"><input type="hidden" name="edit_ui" value="<?=$_POST['id_us']?>"></td>
   <tr bgcolor="Gray">
    <td align="center"><input type="text" name="user_id" value="<?=$row0['userid']?>"></td>
    <td align="center"><input type="text" name="user_mail" value="<?=$row0['usermail']?>"></td>
    <td align="center"><input type="text" name="user_position" value="<?=$row0['userposition']?>"></td>
    <td align="center"><input type="text" name="user_profile"  value="<?=$row0['userprofile']?>"></td>
    <td align="center"><input type="submit" name="save" value="Save">
    
    </td>
   </tr>
    
    
    
    </form>
<?php
 }
 }
 
 
 //при нажатии на клавишу поиск
if (isset($_POST['search']) and $_POST['search'] == 'Поиск')
 { 
    
    
    $n_s = $_POST['n_s']; 
    $q     = "SELECT * FROM [user] WHERE userid = '".$n_s."';";

    @$msresults1 = mssql_query($q) or die("Error"); 
        
?>

  <table width="100%" align="center" bgcolor="Gray" border="5">
   <tr bgcolor="Navy">
    <td align="center"><B><font color="Silver" size="3">Имя пользователя</td></b></font>
    <td align="center"><B><font color="Silver" size="3">E-mail пользователя</td></b></font>
    <td align="center"><B><font color="Silver" size="3">Местонахождение</td></b></font>
    <td align="center"><B><font color="Silver" size="3">Прочее</td></b></font>
    <td align="center"><B><font color="Silver" size="3">Управление</td></b></font>
<?php    
while ($row0= mssql_fetch_array($msresults1))    {
?>    
 <form action="" method="POST">
     <tr><td width="10%"> <?php echo "<b>".$row0['userid']."</b>"."</td>"."<td>".$row0['usermail']."</td>"."<td>".$row0['userposition']."</td>"."<td>".$row0['userprofile']."</td>";

//тут берется переменная  id_user
    ?><td align="center">    

        <input type="hidden" name="id_us" value="<?=$row0['N']?>">
        <input type="submit" name="edit" value="Edit">
        <input type="submit" name="delete" value="Delete"> 


      </td>
     </tr>
     </form>
    <?php          
     }
    }
 

?>
      <center><B><font color="Red" size="4">По какому полю найти пользователя для редактирования</font>
          </b>
  </center>
  <br>
  <table width="100%" align="center" bgcolor="Gray" border="5">

  
  <tr bgcolor="Navy">
     <a href="name_edit.php"><td align="center"id="cel" onmouseout="javascript:document.getElementById('cel').style.background='Navy'" onmouseover="javascript:document.getElementById('cel').style.background='red'"><B><font color="Silver" size="3">Имя пользователя</td></font></a>
     <a href="email_edit.php"><td align="center" id="cel1" onmouseout="javascript:document.getElementById('cel1').style.background='Navy'" onmouseover="javascript:document.getElementById('cel1').style.background='red'"><B><font color="Silver" size="3">E-mail пользователя</td></font>
     <a href="location_edit.php"><td align="center" id="cel2" onmouseout="javascript:document.getElementById('cel2').style.background='Navy'" onmouseover="javascript:document.getElementById('cel2').style.background='red'"><B><font color="Silver" size="3">Местонахождение</td></font>
     <a href="other_edit.php"><td align="center" id="cel3" onmouseout="javascript:document.getElementById('cel3').style.background='Navy'" onmouseover="javascript:document.getElementById('cel3').style.background='red'"><B><font color="Silver" size="3">Прочее</td></font>
  </table>
    <form action="" method="POST">
    <table> 
    <tr bgcolor="Gray">
        <td>
        <td align="center"><input type="text" name="n_s" ></td>
        <td align="center"><input type="submit" name="search" value="Поиск"></td>
        </td>
     </tr>
     </form>
     <?php 

//шаблон
include_once"template.php";
?>
</a>
</table>
</body>
</head>
</html>

Автор: Ground 2.10.2006, 12:51
Конечно спасибо, но мне нужен алгоритм. Ну не знаю я, как лучше осуществить изменение записей. Сам процесс изменения не сложен, UpDate. Но как сделать, чтобы это было очень удобно обычному пользователю???

Автор: helflip 2.10.2006, 13:49
У тя есть база с пользователями.
Выводишь их списком, только не простым а ввиде ссылок(т.е. когда нажимаешь на юзера выводится инфа о нем)
выводишь инфу о этом юзере в форму и делаешь 2 кнопки Делит и Едит.
На делит вешаешь СКЛ запрос с подтверждением (для красоты JS используй)
На едит вешай новую форму и в ней береш данные которые уже занесены в базу, выводишь их как и в первой форме, но в текстовых полях (т.е. чтобы удобно было править) и делаешь вместо 2-х кнопок едит и делит одну SAVE
На нее так же вешаешь СКЛ и так же для красоты JS (Данные успешно сохранены или чето в этом роде)
и везде зделай кнопочку назад

Помойму удобно получится

Автор: sOckets 2.10.2006, 14:13
Какая разница как удобно юзеру , UPDATE он и в африке UPDATE , не забывайте об безопастности.

Добавлено @ 14:16 
Дополню , я делал так , редактирование юзеров по ID , то есть выходит весь список юзеров (по страничкам или как тебе удобно) , в виде таблицы , где в самом последнем столбце , 2 ссылки
http://site.com/user_edit.php?edit&id=1 | http://site.com/user_edit.php?del&id=2  , а потом там просто пришемай ID (только проверь что этот ID действительно его) и выводи форму с его данными.

Автор: ZlojEzh 3.10.2006, 09:48
удобно использовать один запрос и на изменение записи, и на ее добавление
выглядит приблизительно так
форма:
[code=php]
<form action='save.php' nethod='post'>
<input type='hidden' name='REC
Код
' value='<?=@$REC['code']?>'>
<input type='text' name='REC[val1]' value='<?=@$REC['val1']?>'>
<input type='text' name='REC[val2]' value='<?=@$REC['val2']?>'>
<input type='submit' value='save'>
</form>

в случае редактирования форме в массиве $REC передается элемент из базы
в случае добавления - пустой массив

save.php:
Код
  
  $vals_str = '';
  foreach ($_POST['REC'] as $field => $value) {
     $vals_str .= "`".mysql_escape_string($field)."`='".mysql_escape_string($value)."', ";
  }
  $vals_str = trim($vals_str, ', ');
  $query = "insert into `table` set $vals_str on duplicate key update $vals_str";
  mysql_query($query);


работает, само собой, только если code - autoincrement, primary(unique) key

раньше отдельные запросы использовал - неудобно было
для сохранения каждого объекта - по 20 строчек кода

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)