2016-01-11 6 views
0

Я делаю приложение и нуждаюсь в обновлении только одной строки в моей базе данных. Как я создаю приложение, он обновляет все мои строки в базе данных. Может ли кто-нибудь посмотреть в моем сценарии и рассказать мне, как я могу обновить одну строку?Нужно обновить одну строку в базе данных

Я знаю, что нужно сделать что-то с идентификаторами, но я не знаю, как ..

Вот скрипт для страницы, где пользователи могут изменять данные из базы данных. Таким образом, каждая запись будет обновляться.

 <section> 
     <?php 
      $sql = "SELECT naam, plaats.plaats, type.type, status FROM devices, type, plaats, status 
        WHERE devices.type_id = type.type_id 
        AND plaats.plaats_id = devices.plaats_id 
        AND status.status_id = devices.status_id 
        AND plaats.plaats ='benedenverdieping'"; 
      $result = $con->query($sql); 
       if ($result->num_rows > 0) { 
        echo '<table><tr><td>Naam</td><td>Plaats</td><td>Type</td><td>Status</td><td>open/dicht</td><td>Submit</td></tr>'; 

        while($row = $result->fetch_assoc()) { 

         echo '<tr>'; 
         echo '<td>' .$row['naam']. '</td>'; 
         echo '<td>' .$row['plaats']. '</td>'; 
         echo '<td>' .$row['type']. '</td>'; 
         echo '<td>' .$row['status']. '</td>'; 
         echo '<td>';?> 
          <form action="opendicht.php" method="post"> 
           <select name="opendicht"> 
            <option name="open" value="1">open</option> 
            <option name="dicht" value="2">dicht</option> 
           </select> 
         <?php '</td>'; 
         echo '<td>'?> 
           <input type="submit" value="Doorvoeren" name="submit"> 
          </form>        
         <?php '</td>'; 
        } 
        echo '</table>';       
       } 
     ?> 
    </section> 

Вот сценарий, который выполняет ввод пользователей. Из-за запроса sql он не будет работать только для одной записи. Способ, которым он работает прямо сейчас, - это запрос, обновляющий каждую запись с помощью status_id 1 или 2. В базе данных 1 означает open, а 2 означает закрытие. Я не могу найти способ разрешить запрос обновлять только одну строку данных.

<?php 
session_start(); 
$naam = $_SESSION['username']; 
echo $naam; 

include '../dbconnect.php'; 

date_default_timezone_set("Europe/Amsterdam"); 
$t=time(); 
$aanpassing = date("d-m-y h:i",$t); 

$sel_device_id = ("SELECT device_id FROM devices"); 
$run_device_id = mysqli_query($con, $sel_device_id); 

    if(isset($_POST['submit'])) 
    { // Fetching variables of the form which travels in URL 
     $opendicht = $_POST['opendicht']; 
     if($opendicht =='1') 
     { 
      //UPDATE devices SET status_id = $opendicht, username = (SELECT user_id FROM users WHERE username = '$naam'), timestamp = '$timestamp' WHERE status_id = '2' 
      mysqli_query($con,"UPDATE devices SET status_id = $opendicht, username = '$naam', tijd = '$aanpassing' WHERE status_id = 2"); 
     } 
     else 
     { 
      mysqli_query($con,"UPDATE devices SET status_id = $opendicht, username = '$naam', tijd = '$aanpassing' WHERE status_id = 1"); 
     } 

    } 
    else{ 
     echo "er is iets fout gegaan"; 
    } 

    mysqli_close($con); // Closing Connection with Server 
    header("refresh:0;url=index.php"); 
?> 
+0

введите идентификатор таблицы устройств в первый скрипт и используйте значение как скрытое поле в своей форме. Затем во втором скрипте вы можете обновить на основе id –

+0

Не могли бы вы рассказать мне, как я мог это сделать? Не удается найти способ извлечения device_id –

ответ

1

Это ваши UPDATE запросы:

mysqli_query($con,"UPDATE devices SET status_id = $opendicht, username = '$naam', tijd = '$aanpassing' WHERE status_id = 1"); 
mysqli_query($con,"UPDATE devices SET status_id = $opendicht, username = '$naam', tijd = '$aanpassing' WHERE status_id = 2"); 

Вы обновляя все строки, где status_id является 1 или 2.

Вам необходимо добавить условие AND, чтобы идентифицировать уникальный идентификатор строки для обновления.

+1

Из того, что я могу разобрать, единственным идентификатором будет поле 'device_id'. Он также должен быть добавлен в html-форму, возможно, как скрытый ввод, а затем после обновления может быть прочитан из '$ _POST'. – jkiiski

+0

Не могли бы вы помочь мне. Я не знаю, как я мог бы сделать форму так, как я могу читать данные. –

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