2016-05-12 3 views
0

Я устал от этого кода. В самом деле. Я вчера работал, чтобы сделать это исправленным, и он просто не работает. Я бы сказал, если кто-то даст им их вклад.Изменить значения базы данных одним нажатием кнопки Отправить PHP

Я нашел старую CMS с некоторыми замечательными функциями. Однако эта CMS работает с 2008 года и по-прежнему работает в MySQL и больше не обновляется. Поэтому я взял несколько сценариев. Один из них может настроить несколько строк базы данных on и off всего одним нажатием кнопки отправки.

База данных выглядит следующим образом.

Значение означает, включено или выключено. На голландском - aan и uit. Я делаю голландскую CMS, поэтому я создаю ее на голландском языке по большей части, поэтому мой клиент тоже ее понимает.

Код из CMS 2008 выглядит так: http://pastebin.com/EkmB8rFr (Я вставляю его в Pastebin, потому что это грязный код и SO слишком мал для этого).

Итак, моя задача - преобразовать этот код 2008 в код 2016 со всеми исправлениями SQL и всеми. Вот мой результат:

<?php 
    if(isset($_POST['opslaan'])) { 
     $stmt = $dbConnection->prepare('SELECT * FROM settings'); 
     $stmt->execute(); 
     $result = $stmt->get_result(); 
     while ($row = $result->fetch_assoc()) { 
      $id = $_POST[$row["id"]]; 
      $row = $row["id"]; 
      $stmt1 = $dbConnection->prepare('UPDATE settings SET value = ? WHERE id = ?'); 
      $stmt1->bind_param('ss', $id, $id); 
      $stmt1->execute(); 
     } 

     //header('Location: index.php?page=instellingen'); 
    } else { 
     $stmt = $dbConnection->prepare('SELECT * FROM settings ORDER BY id ASC'); 
     $stmt->execute(); 

     $result = $stmt->get_result(); 
    ?> 
    <form method="POST" action=""> 
     <table> 
     <tr> 
      <th>Naam</th> 
      <th>Laatst gewijzigd</th> 
      <th>Waarde</th> 
     </tr> 
     <?php 
    while ($row = $result->fetch_assoc()) { 
    ?> 
     <tr> 
      <td><?php echo $row["code"]; ?></td> 
      <td><?php echo $row["updated"]; ?></td> 
      <td> 
       <select name="<?php echo $row["id"]; ?>"> 
        <option value="aan"<?php if($row["value"] == "aan") {echo ' selected';} ?>>Aan</option> 
        <option value="uit"<?php if($row["value"] == "uit") {echo ' selected';} ?>>Uit</option> 
       </select> 
      </td> 
     </tr> 
    <?php } ?> 
     </table> 
    <input type="submit" value="Opslaan" name="opslaan"> 
    </form> 
    <?php 
} 

Этот код просто не работает, как код 2008 года, и я просто не знаю, что происходит. Ошибка в том, что она помещает идентификатор в базу данных, а не значение <select>.


Результат должен быть таким:

+0

это isthe проблема '$ stmt1-> bind_param ('сс', $ ID, $ ID);' –

+0

@Dagon Понял фиксированной, спасибо за ваш вклад Дагон! –

ответ

1

Похоже, некоторые вещи, которые смешиваются в вашем обновлении. Я думаю, что это должно работать лучше:

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

    $id = $row["id"];      // get the id from the row 
    $value = $_POST[$id];     // find the corresponding POST value 

    $stmt1 = $dbConnection->prepare('UPDATE settings SET value = ? WHERE id = ?'); 

    $stmt1->bind_param('ss', $value, $id); // Bind the correct variables here 
    $stmt1->execute(); 
} 
+1

не говорите мне не паниковать, плохо панику, если я хочу ahrhrherhrharharhjeahrakwrkescrjmeuicyhtuiawmtlch, o –

+0

А, похоже, это исправило проблему. Наверное, я не могу получить вчерашний день, но ты просто сделал мой вечер. Спасибо, не паникуйте! –

+0

@ Дагон это всего лишь предложение, а не требование. :) –

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