2015-11-23 7 views
-2

есть форма с submit "update". Форма имеет значения из базы данных. Он работает (Альбом всегда изменяется). Но не имеет значения, если я изменить значение в форме, и я нажимаю «обновление», он будет бросатьВызов функции-члена fetch_assoc() на boolean в

Fatal error: Call to a member function fetch_assoc() on boolean in /www/doc/www.mudreslova.sk/www/admin/edit-galeriu.php on line 35

Вы можете попробовать ссылку «http://www.mudreslova.sk/admin/edit-galeriu.php?url1=fsdfds», он сейчас работает. Что не так в коде, пожалуйста?

<?php 
    $titulok='Edit ALBUM'; 
    include('header.php'); 
    require_once('connect.php'); 

    if (!empty($_POST["submit"]) && isset($_GET[url1])) { // all entries are required in FORM 
     $sql=" 
     UPDATE gallery 
     SET namesk='{$_POST[namesk]}', nameen='{$_POST[nameen]}', descriptionsk='{$_POST[descriptionsk]}', 
      descriptionen='{$_POST[descriptionen]}', date='{$_POST[date]}', url1='{$_POST[url1]}' 
     WHERE url1='{$_GET[url1]}'; 

     UPDATE photos 
      SET url1_gallery='{$_POST[url1]}' 
      WHERE url1_gallery='{$_GET[url1]}'; 
     "; 
     $success = rename("../photos/$_GET[url1]","../photos/$_POST[url1]"); 

     if ($mysqli->multi_query($sql) && $success===true) { 
     $messEditAlb="Album was changed :)"; 

     } else { 
     $messEditAlb="Error, Album wasn't changed."; 
     } 
     $_GET["url1"] = $_POST["url1"]; 
    } 
?> 

<div id="mobile-margin"> 
    <div class="container center"> 
     <h1 class="tshadow">Editovať ALBUM</h1> 
     <p><?php echo $messEditAlb ?></p> 
    <?php 
     if (isset($_GET[url1])) { 
     $result = $mysqli->query("SELECT * FROM gallery WHERE url1='$_GET[url1]'"); 
     while ($row = $result->fetch_assoc()) { // line 35! 
     echo 
     " 
     <form action='' method='post'> 
      <div class='form-fotky widexs'> 
       <label for='namesk' class='left'>Názov albumu - SK:</label> 
       <input type='text' name='namesk' id='namesk' value='$row[namesk]' required> 
      </div> 
      <div class='form-fotky widexs'> 
       <label for='url1' class='left'>url adresa: napr. michalsky-jarmok2</label> 
       <input type='text' name='url1' id='url1' value='$row[url1]' required>    
      </div> 
      <div class='form-fotky widexs'> 
       <input type='submit' name='submit' value='Update' class='pure-button pure-button-primary bggreen'> 
      </div>  
     </form>"; 
     }}; 
include('footer.php'); ?> 
+0

use '{$ _GET [" url1 "]}' вместо '$ _GET [url1]' – swidmann

+0

ошибка синтаксиса в '$ messEditAlb = 'Ошибка, альбом не был изменен.'; '' было бы '$ messEditAlb =" Ошибка, альбом не был изменен. ";' – Saty

+0

[swidmann] Я не могу, есть еще один "" вне – Tomi

ответ

0

ОК, теперь все работает. Мне пришлось создать новый файл для вызова действия из формы. Он делает то же самое, но в конце кода я добавил «header» («location: edit-galeriu.php? Url1 = $ _ POST [url1]»); «.... Я думаю, проблема в том, что форма внутри его страница не возвращалась "? url1 = xxx" позади "www/admin/edit-galeriu.php".

0

Это не может быть ответ, это всего лишь подход к сужению вашей проблемы. Я думаю, что ваш журнал ошибок должен быть заполнен undefined index, undefined constant, ........

Дополнительно вы должны взглянуть на prepared statement.

Я положил свои индексы в кавычки и добавил var_dump() для $mysqli->error

Поэтому, пожалуйста, попробуйте этот код:

<?php 
$titulok = 'Edit ALBUM'; 
include('header.php'); 
require_once('connect.php'); 

if (!empty($_POST["submit"]) && isset($_GET["url1"])) { // all entries are required in FORM 
    $sql = " 
     UPDATE gallery 
     SET namesk='{$_POST["namesk"]}', nameen='{$_POST["nameen"]}', descriptionsk='{$_POST["descriptionsk"]}', 
      descriptionen='{$_POST["descriptionen"]}', date='{$_POST["date"]}', url1='{$_POST["url1"]}' 
     WHERE url1='{$_GET["url1"]}'; 

     UPDATE photos 
      SET url1_gallery='{$_POST["url1"]}' 
      WHERE url1_gallery='{$_GET["url1"]}'; 
     "; 
    $success = rename("../photos/{$_GET["url1"]}", "../photos/{$_POST["url1"]}"); 

    if ($mysqli->multi_query($sql) && $success === true) { 
     $messEditAlb = "Album was changed :)"; 
    } else { 
     $messEditAlb = "Error, Album wasn't changed."; 
    } 
    $_GET["url1"] = $_POST["url1"]; 
} 
?> 

<div id="mobile-margin"> 
    <div class="container center"> 
     <h1 class="tshadow">Editovať ALBUM</h1> 
     <p><?php echo $messEditAlb ?></p> 
     <?php 
     if (isset($_GET["url1"])) { 
      $result = $mysqli->query("SELECT * FROM gallery WHERE url1='{$_GET["url1"]}'"); 
      if(!$result) { 
       var_dump("MySQLi Error:".$mysqli->error); 
       // here you should output an error message 
       // you while condition should look like 
       // while ($result && ($row = $result->fetch_assoc())) 
      } 

      while ($row = $result->fetch_assoc()) { // line 35! 
       echo 
       " 
     <form action='' method='post'> 
      <div class='form-fotky widexs'> 
       <label for='namesk' class='left'>Názov albumu - SK:</label> 
       <input type='text' name='namesk' id='namesk' value='{$row["namesk"]}' required> 
      </div> 
      <div class='form-fotky widexs'> 
       <label for='url1' class='left'>url adresa: napr. michalsky-jarmok2</label> 
       <input type='text' name='url1' id='url1' value='{$row["url1"]}' required> 
      </div> 
      <div class='form-fotky widexs'> 
       <input type='submit' name='submit' value='Update' class='pure-button pure-button-primary bggreen'> 
      </div> 
     </form>"; 
      } 
     }; 
include('footer.php'); 
?> 
+0

Спасибо, тот же результат: «Ошибка, альбом не был изменен. строка (65)« Ошибка MySQLi: команды не синхронизированы; вы не можете запустить эту команду сейчас » Неустранимая ошибка: вызовите функцию-член fetch_assoc() на boolean в /www/doc/www.mudreslova.sk/www/admin/edit-galeriu.php в строке 42" .. ... Но я собираюсь сделать новый файл для вызова действия из формы. – Tomi

+0

Посмотрите здесь: http://php.net/manual/en/mysqli-result.free.php – swidmann

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