2017-01-28 5 views
0

Я в затруднении относительно того, что мне нужно сделать, чтобы заставить это работать. Эта страница должна обновлять информацию о контакте после нажатия кнопки обновления. Он подает номер идентификатора на страницу, он считывает информацию из базы данных и помещает ее в входы как значения. Затем вы обновляете входы по мере необходимости и обновляете его на сервере. Но по какой-то причине он не выполняет оператор Update, и ничего не меняется. Он также должен иметь возможность загружать изображение и делать его частью обновления.Страница обновления PHP - информация/изображение не обновляется

<?php 

    session_start(); 

    $_SESSION['message'] = '<div class="message">Your contact has been updated</div>'; 

    $dbh = new PDO('mysql:host=localhost;dbname=ssl;port=8889', 'root', 'root'); 

    $contactid = $_GET['id']; 

    $stmt=$dbh->prepare("SELECT * FROM contacts where contactid = :contactid"); 
    $stmt->bindParam(':contactid', $contactid); 
    $stmt->execute(); 
    $result = $stmt->fetchAll(); 

    if (isset($_POST['submit'])) { 

     $firstname = $_POST['firstname']; 
     $lastname = $_POST['lastname']; 
     $phone = $_POST['phone']; 
     $email = $_POST['email']; 
     $address = $_POST['address']; 
     $city = $_POST['city']; 
     $state = $_POST['state']; 

     $target_file = "uploads/" . basename($_FILES['picture']['name']); 
     $picture = $_FILES['picture']['name']; 

     if (move_uploaded_file($_FILES['picture']['tmp_name'], $target_file)) { 
      echo "<div class='message2'>File Uploaded.</div>"; 
     } 
     //SQL statement to update data 
     $stmt=$dbh->prepare("UPDATE contacts SET firstname='" . $firstname . "', 
               lastname='" . $lastname . "', 
               phone='" . $phone . "', 
               email='" . $email . "', 
               address='" . $address . "', 
               city='" . $city . "', 
               state='" . $state . "', 
               picture='" . $picture . "', 
               WHERE contactid='" . $contactid . "';"); 
     $stmt->execute(); 

     echo "<div class='message'>Your contact has been added!</div>"; 

     header("location: index.php"); 
     die(); 
    } 
?> 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Update</title> 
     <link rel="stylesheet" href="css/style.css"> 
    </head> 
    <body> 
     <nav> 
      <h1>Update A Fruit</h1> 
     </nav> 
     <form id="form" action="index.php" method="post"> 
      <p>Edit the following:</p> <br /> 
      First Name: <input type="text" name="firstname" value="<?php echo $result[0]['firstname']; ?>" /><br /> 
      Last Name: <input type="text" name="lastname" value="<?php echo $result[0]['lastname']; ?>" /><br /> 
      Phone: <input type="text" name="phone" value="<?php echo $result[0]['phone']; ?>" /><br /> 
      Email: <input type="text" name="email" value="<?php echo $result[0]['email']; ?>" /><br /> 
      Address: <input type="text" name="address" value="<?php echo $result[0]['address']; ?>" /><br /> 
      City: <input type="text" name="city" value="<?php echo $result[0]['city']; ?>" /><br /> 
      State: <select id="state" type="text" name="state" value=""> 
               <option value="" selected>Select a State</option> 
               <option value="AL">Alabama</option> 
               <option value="AK">Alaska</option> 
               <option value="AZ">Arizona</option> 
               <option value="AR">Arkansas</option> 
               <option value="CA">California</option> 
               <option value="CO">Colorado</option> 
               <option value="CT">Connecticut</option> 
               <option value="DE">Delaware</option> 
               <option value="DC">District Of Columbia</option> 
               <option value="FL">Florida</option> 
               <option value="GA">Georgia</option> 
               <option value="HI">Hawaii</option> 
               <option value="ID">Idaho</option> 
               <option value="IL">Illinois</option> 
               <option value="IN">Indiana</option> 
               <option value="IA">Iowa</option> 
               <option value="KS">Kansas</option> 
               <option value="KY">Kentucky</option> 
               <option value="LA">Louisiana</option> 
               <option value="ME">Maine</option> 
               <option value="MD">Maryland</option> 
               <option value="MA">Massachusetts</option> 
               <option value="MI">Michigan</option> 
               <option value="MN">Minnesota</option> 
               <option value="MS">Mississippi</option> 
               <option value="MO">Missouri</option> 
               <option value="MT">Montana</option> 
               <option value="NE">Nebraska</option> 
               <option value="NV">Nevada</option> 
               <option value="NH">New Hampshire</option> 
               <option value="NJ">New Jersey</option> 
               <option value="NM">New Mexico</option> 
               <option value="NY">New York</option> 
               <option value="NC">North Carolina</option> 
               <option value="ND">North Dakota</option> 
               <option value="OH">Ohio</option> 
               <option value="OK">Oklahoma</option> 
               <option value="OR">Oregon</option> 
               <option value="PA">Pennsylvania</option> 
               <option value="RI">Rhode Island</option> 
               <option value="SC">South Carolina</option> 
               <option value="SD">South Dakota</option> 
               <option value="TN">Tennessee</option> 
               <option value="TX">Texas</option> 
               <option value="UT">Utah</option> 
               <option value="VT">Vermont</option> 
               <option value="VA">Virginia</option> 
               <option value="WA">Washington</option> 
               <option value="WV">West Virginia</option> 
               <option value="WI">Wisconsin</option> 
               <option value="WY">Wyoming</option> 
              </select><br> 
      <input type="file" name="picture" value="<?php echo $result[0]['picture']; ?>"><br /> 
      <input type="submit" name="submit" value="Update"> 
     </form> 
     <a href="index.php">Go Back</a> 

     <pre> 
      <?php var_dump($st); ?> 
     </pre> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
     <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
     <script> 

      $('.message').fadeIn(500).delay(3000).fadeOut(600); 

     </script> 
    </body> 
</html> 

ответ

0

Есть несколько вещей, которые нужно изменить в коде, такие как:

  • Измените action из ваших <form> следующим образом,

    action="index.php?id=<?php echo $contactid; ?>" 
    
  • Вы выиграли Невозможно загрузить любой файл с вашей формой, если вы не включите enctype="multipart/form-data" в свой <form>.

    Так на основе двух указанных выше утверждений, ваш <form> элемент будет выглядеть так:

    <form id="form" action="index.php?id=<?php echo $contactid; ?>" method="post" enctype="multipart/form-data"> 
    
  • Сделать использование заполнителей в вашем UPDATE подготовленном заявлении.

  • Выполните UPDATE операцию перед темSELECT операции, в противном случае вы не будете получать обновленные значения в ваших <input> полях как только вы обновите их.

+0

Как я могу забыть об атрибуте enctype? Я не знал о первом изменении, но должен был знать о втором. Посмотрим, сработает ли это. –

+0

Хорошо, что имело смысл добавить эти части. Но он все еще не работает. –

+0

@MattLee Какая часть не работает? 'UPDATE' или загрузить? –

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