2014-10-29 5 views
0

У меня есть таблица, которая отображается на экране пользователя. Когда пользователь нажимает на редактирование, я хочу, чтобы он мог щелкнуть параметры этой конкретной строки и обновить один параметр (например, имя); то другие параметры (например, адрес электронной почты, пароль и адрес) должны оставаться неизменными.Обновление определенной строки из таблицы

name email   password address  action 
user [email protected] user  u.address edit 

Код, используемый для ссылки редактирования:

echo"<td class='center'><a class='btn btn-info' href=\"admin_edit_user.php?id=".$row['id']."\"><i class='glyphicon glyphicon-edit icon-white'></i>Edit</a></td>"; 

код на admin_edit_user.php странице:

<form class="form-horizontal" role="form" action="admin_update_user.php" enctype="multipart/form-data" method="post"> 
    <div class="form-group"> 
     <label class="col-lg-3 control-label">Name</label> 
      <div class="col-lg-8"> 
       <input class="form-control" name="name" value="" type="text"> 
      </div> 
    </div> 

    <div class="form-group"> 
     <label class="col-lg-3 control-label">Email</label> 
      <div class="col-lg-8"> 
       <input class="form-control" name="email" value="" type="text"> 
      </div> 
    </div> 

    <div class="form-group"> 
     <label class="col-lg-3 control-label">Password</label> 
      <div class="col-lg-8"> 
       <input class="form-control" name="password" value="" type="text"> 
      </div> 
    </div> 

    <div class="form-group"> 
     <label class="col-lg-3 control-label">Address</label> 
      <div class="col-lg-8"> 
       <input class="form-control" name="address" value="" type="text"> 
      </div> 
    </div> 

    <div class="form-group"> 
     <label class="col-md-3 control-label"></label> 
      <div class="submit"> 
       <input class="btn btn-primary" value="Save Changes" type="submit" name="submit"> 
      </div> 
    </div>       
</form> 

После этой формы пользователь перенаправляется на admin_update_user.php странице

<?php 
    $con=mysqli_connect("localhost","root","","db"); 
    if (mysqli_connect_errno()) 
     { 
      echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 
    $id = $_GET['id']; 


    $query="SELECT * FROM user"; 
    $result= mysqli_query($con, $query) or die(mysqli_error()); 
    while ($row= mysqli_fetch_array($result)) 
     { 
      $name_data=$row['name']; 
      $name_email=$row['email']; 
      $name_password=$row['password']; 
      $name_address=$row['address']; 
     } 

    if(isset($_POST['submit'])) 
     { 
      $name=$_POST['name']; 
      $email=$_POST['email']; 
      $password=$_POST['password']; 
      $address=$_POST['address']; 

      if(empty($name)) 
       { 
        //if the value is empty its going to set it equal to the database value 
        $name=$name_data; 
       } 
      else 
       $name=$name; 

      if(empty($email)) 
       { 
        $email=$name_email; 
       } 
      else 
       $email=$email; 

      if(empty($password)) 
       { 

        $password=$name_password; 
       } 
      else 
       $password=$password; 

      if(empty($address)) 
       { 
        $address=$name_address; 
       } 
      else 
       $address=$address; 

     } 
//0: demo.name (value given for name) 
//[email protected] (value given for email) 
//demo (value given forpassword) 
//demo 
//demo.address (value given for address) 

     $sql = "UPDATE user SET name='".$name."',email='".$email."',password='".$password."',address='".$address."' WHERE id ='".$id."'"; 

     echo mysqli_errno($con) . ": " . mysqli_error($con) . "\n"; 


     if (!mysqli_query($con,$sql)) 
      { 
       die('Error: ' . mysqli_error($con)); 
      } 
     header("Location: admin_user_list.php"); 
     exit; 
     mysqli_close($con); 
    ?> 

Я получаю сообщение об ошибке в запросе обновления. Я был бы очень признателен, если бы кто-то мог помочь.

P.S @ FortMauris здесь отредактированная часть, которую вы хотели видеть.

$id = $_GET['id']; 
    $name = mysqli_real_escape_string($con, $_POST['name']); 
    $email = mysqli_real_escape_string($con, $_POST['email']); 
    $password = mysqli_real_escape_string($con, $_POST['password']); 
    $address = mysqli_real_escape_string($con, $_POST['address']); 

    $query="SELECT * FROM user"; 
    $result= mysqli_query($con, $query) or die(mysqli_error()); 
    //get the value from database 
    while ($row= mysqli_fetch_array($result)) 
    { 
     $name_data=$row['name']; 
     $name_email=$row['email']; 
     $name_password=$row['password']; 
     $name_address=$row['address']; 

    } 

if(isset($_POST['submit'])) 
{ 
    $name=$_POST['name']; 
    $email=$_POST['email']; 
    $password=$_POST['password']; 
    $address=$_POST['address']; 

    if(empty($name)) 
    { 
     //if the value is empty its going to set it equal to the database value 
     $name=$name_data; 
    } 


    if(empty($email)) 
    { 
     $email=$name_email; 
    } 

     if ($password == '') 
    { 

     $password=$name_password; 
    } 

    if(empty($address)) 
    { 
     $address=$name_address; 
    } 

} 

echo mysqli_errno($con) . ": " . mysqli_error($con) . "\n"; 

$sql = "UPDATE user SET name='".$name."',email='".$email."',password='".$password."',address='".$address."' WHERE id ='".$id."'"; 


    if (!mysqli_query($con,$sql)) 
    { 
     die('Error: ' . mysqli_error($con)); 
    } 
mysqli_close($con); 
//header("Location: admin_user_list.php"); 
exit; 
    mysqli_close($con); 
+0

какая ошибка вы получаете? –

+0

какая ошибка вы получаете – Naincy

+0

@sgt mysql_errno() ожидает, что параметр 1 будет ресурсом – sam

ответ

1
  • На обеих страницах добавьте эту строку в верхней session_start();
  • чем на admin_edit_user Добавьте эту строку $_SESSION['id']=$_GET['id'];
  • чем на admin_update_user.php добавить эту строку $id=$_SESSION['id'];
  • В этом же файле admin_update_user.php у вас есть эта строка $id=$_GET['id']; убери это.

    $sql = "UPDATE user SET name='".$name."',email='".mysqli_real_escape_string($con,$email)."',password='".$password."',address='".mysqli_real_escape_string($con,$address)."' WHERE id ='".$id."'";

0

Я чувствую, что вы запросили зарезервированное ключевое слово в запросе, чтобы изменить свой запрос, и вы смешиваете mysql и mysqli.

удалить эту строку echo mysql_errno($con) . ": " . mysql_error($con) . "\n";

$sql = "UPDATE `user` SET `name`='".$name."',`email`='".$email."',`password`='".$password."',`address`='".$address."' WHERE `id` =".$id; 

if (!mysqli_query($con,$sql)) 
    { 
     die('Error: ' . mysqli_error($con)); 
    } 
mysqli_close($con); 
header("Location: admin_user_list.php"); 
exit; 

, если dosn't работа затем распечатать запрос и попробуйте запустить его вручную в PHPMyAdmin или MySQL;

+0

Я получаю синтаксическую ошибку, но я не могу понять, что пошло не так – sam

+0

У меня есть только обновленный мой ответ можно попробовать с обновленным кодом? –

+0

Я по-прежнему получаю ту же ошибку – sam

0
$sql = "UPDATE user SET name='".$name."',email='".$email."',password='".$password."',address='".$address."' WHERE id ='".$id."'"; 

Вместо этого попробуйте использовать это:

$sql = "UPDATE user SET name = '$name', email = '$email', password = '$password', address = '$address' WHERE id = $id"; 

Это намного чище, и будет решать много вопросов запроса.

EDIT:

Вопрос, вероятно, с 1 ваших переменных, имеющих ' или ".

, когда вы кладете его, он становится чем-то вроде этого:

$sam = "Sam'"; 
$sql = " UPDATE user SET name = 'sam'' "; 

Он обнаруживает дополнительную перевернутую запятую, и поэтому возвращает ошибку.

+0

, он показывает ту же ошибку синтаксиса – sam

+0

okay sam, попробуйте повторить все переменные ($ name, $ email и т. д.) и посмотрите, есть ли в любом поле с проблемой. Я думаю, что проблема будет заключаться в адресе, скорее всего, с инвертированной запятой в одной из этих переменных. попробуйте избежать этого или полностью удалить его. – FortMauris

+0

Я пробовал ваше решение, но все же он не дает желаемого результата. – sam

Смежные вопросы