2013-11-20 6 views
0

Я добавляю кнопку сохранения/обновления в нижней части моей формы редактирования на панели администратора. По какой-то причине, всякий раз, когда я вношу изменения в форму и щелкаю ее, она просто перезагружает страницу без внесенных изменений. Я также заметил, что только когда я пытаюсь запустить код из файла pages.php (стереосистеме и обновите из индекса затем щелкая страниц отлично) он говорит:SQL update query не сотрудничает

Неопределенная переменная: DBC в C: \ Users \ Jake \ Desktop \ Xampp \ HTDOCS \ jakefordsite \ админ \ контента \ pages.php на линии 12

Предупреждение: mysqli_query() ожидает параметр 1, чтобы быть MySQLi, нуль дано в C: \ Users \ Jake \ Desktop \ Xampp \ htdocs \ jakefordsite \ admin \ content \ pages.php в строке 12

Я могу избавиться от этой ошибки, объявив новую переменную $ dbc (databaseconnection) в pages.php, но у меня все еще есть такая же проблема, когда я обновляю данные формы.

PAGES.PHP:

<?php ## Page Manager ?> 

<h2>Page Manager</h2> 

<div class="col sidebar"> 

    <ul> 

     <?php 

      $q = "SELECT * FROM pages ORDER BY name ASC"; 
      $r = mysqli_query($dbc, $q); 

      if ($r) 
      { 
       while ($link = mysqli_fetch_assoc($r)) 
       { 
        echo '<li><a href="?page=pages&id='.$link['id'].'">'.$link['name'].'</a></li>'; 
       } 
      } 

     ?> 

    </ul> 
</div> 

<div class="col editor"> 

    <?php 

    if (isset($_POST['submitted']) == 1) { 

      $q = "UPDATE pages SET title='$_POST[title]', name='$_POST[name]', body='$_POST[body]', WHERE id = '$_POST[id]'"; 
      $r = mysqli_query($dbc, $q); 

    } 

    if (isset($_GET['id'])) { 

      $q = "SELECT * FROM pages WHERE id = '$_GET[id]' LIMIT 1"; 
; 
      $r = mysqli_query($dbc, $q); 
      $opened = mysqli_fetch_assoc($r); 


    ?> 

     <form action="?page=pages&id=<?php echo $opened['id'] ?>" method="post"> 

      <p><label>Page title: </label><input type="text" size="30" name="title" value="<?php echo $opened['title']?>"></p> 
      <p><label>Page name:</label> <input type="text" size="30" name="name" value="<?php echo $opened['name']?>"></p> 

      <label>Page body: </label><br> 
      <textarea name="body" cols="30" rows="8"><?php echo $opened['body'] ?></textarea> 

       <input type="hidden" name="submitted" value="1"/> 
       <input type="hidden" name="id" value="<?php echo $opened['id'] ?>"/> 

      <p><input type="submit" name="submit" value="Save Changes"/></p> 

     </form> 

    <?php } ?> 

</div> 

index.php:

<?php 
// Setup document: 
include('config/setup.php'); 
?> 

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title><?php //echo $page_title; ?>JakeForDesign - Admin Panel</title> 
<link rel="stylesheet" type="text/css" href="css/styles.css"> 

</head> 

<body> 

<div class="wrap_overall"> 

    <div class="header"> <?php head(); ?> </div> 

    <div class="nav_main"> <?php nav_main(); ?> </div> 

    <div class="content"> <?php include('content/'.$pg.'.php'); ?> </div> 

    <div class="footer"> <?php footer(); ?> </div> 

</div>  

</body> 
</html> 

Setup.php

<?php 
## Setup Document 

// host(or location of the database), username, //password, database name 

$dbc = @mysqli_connect('127.0.0.1', 'root', 'password', 'main') OR die ('Could not connect to the database because: '. mysqli_connect_error()); 

include('Functions/sandbox.php'); 
include('Functions/template.php'); 

if (isset($_GET['page']) == '') 
{ 
    $pg = 'home';  
} 
else 
{ 
    $pg = $_GET['page']; 
} 

$page_title = get_page_title($dbc, $pg); 

?> 
+0

Может быть вы не нужно загружать подключение к базе данных для $ dbc – vijaykumar

+1

Вы используете mysqli, который поддерживает параметризованные запросы. Почему вы выполняете строчную интерполяцию, которая позволяет SQL-инъекцию? – Barmar

ответ

0

на Pages.php у вас есть

$r = mysqli_query($dbc, $q); 

$q это хорошо, но вы не упомянули $dbc

на вашем setup page, создать класс для связи, declareing в connection method, а затем, на PAGES.PHP:

$db_obj = new setup(); /* create object for setup class */ 
$dbc = $db_obj -> connect_db();/* call connection method */ 
+0

Не забудьте включить 'setup page' в' pages.php' – NoobEditor