2013-04-14 3 views
1

У меня есть сайт, на котором вы можете отправлять приветственные сообщения через php на сервер mysql и страницу входа администратора. На странице входа в систему администратора отображаются все сообщения со статусом, ожидающим, отклоняемым или принятым с отклонениями кнопок и принимающими рядом с каждым сообщением. В настоящее время всякий раз, когда я нажимаю «принимать» или «отклонять», все сообщения становятся отклоненными или принятыми в базе данных. Я хотел бы, чтобы кнопки вызывали скрипт с параметром, который является идентификатором сообщения, которое они принимают/отклоняют, но я честно не знаю правильного синтаксиса. Любая помощь будет принята с благодарностью.php/mysql UPDATE где id = blah

$query = "SELECT name, location, message, status FROM messages ORDER by status "; 
if ($query_run = mysql_query($query)) 
{ 
    while ($query_row = mysql_fetch_assoc($query_run)) 
    { 
     $name = $query_row['name']; 
     $location = $query_row['location']; 
     $message = $query_row['message']; 
     $status = $query_row['status'];  

     echo '<form method="POST" action="login.php">'; 
     echo 'From: '.$name.'<br>Location: '.$location.'<br>Status: '.$status.'<br>Message: '.$message.'<br><br>'; 
?> 

<input type="submit" value="Approve" name="accept"> 
<input type="submit" value="Reject" name="reject"></form> 

<?php 

if (isset($_POST['accept'])) 
{ 
    echo 'Accepted!'; 
    $updateAccept = "UPDATE messages SET status = 'a'"; 
    mysql_query($updateAccept); 
}; 

if (isset($_POST['reject'])) 
{ 
    echo 'Rejected!'; 
    $updateAccept = "UPDATE messages SET status = 'r'"; 
    mysql_query($updateAccept); 
} 
+0

'UPDATE ... WHERE' вам нужно предложение WHERE. – Jon

+0

добавьте скрытое поле с идентификатором записи, прочитайте это с помощью '$ _POST' и примените его к вашему sql-запросу. – michi

+0

И, пожалуйста, подумайте о переходе на mysqli или PDO вместо устаревших функций mysql_ *. –

ответ

3

Bind кнопку скрытое поле с каждым представить, как этот

<form method="POST"> 
    <input type="submit" value="Whatever" name="trigger_update" /> 
    <input type="hidden" name="id_to_be_updated" value="<?php echo 'pass your id here'; ?>" /> 
</form> 

<?php 
    if(isset($_POST['trigger_update'])) { 
     //Do sanitization according to your needs 
     mysqli_query($connection, "UPDATE tbl_name SET column_name = 'whatever' WHERE id = {$_POST['id_to_be_updated']}"); 
    } 
?> 
+0

Пока да ... в то же время, нет. Тип вводит идентификатор или что-то еще, не помещайте сырые данные 'post' в инструкцию SQL. – Jon

+0

@ Jon Вот почему я упомянул, что нужно санировать в соответствии с его потребностями :) –

+0

Ха-ха, правда, но вы показываете '$ _POST' в обновлении, я просто подумал, что вы должны показать переназначение, а затем тип« sanitize to your needs » вещи. =] – Jon

0

Вам просто нужно добавить пункт WHERE в вашем UPDATE заявление:

$updateAccept = "UPDATE messages SET status = 'a' WHERE id = '$id'"; 
Смежные вопросы