2013-09-15 1 views
0

У меня есть простой код для добавления баннеров с панели администратора в индекс сайта. Но функция надстройки не работает правильно здесь форма добавить баннерПанель администратора: форма PHP не отправляет данные в MySQL

      <h2>Add Banner</h2>        
<?php include ("../engine/config/config.php"); ?> 
           <form method="post" action=""> 
     Clicks 
     <input type="text" name="click" value="0" style="width: 200px;" /> <div class="hr"></div>   
     Impressions 
     <input type="text" name="imp" value="0" style="width: 200px;" /> <div class="hr"></div>      
     LINK 
     <input type="text" name="url" value="http://" style="width: 200px;" /> <div class="hr"></div> 
     Size 
     <select name="razmer"> 
<option value='468x60'>468x60</option> 
<option value='88x31'>88x31</option> 
</select> 
<div class="hr"></div> 
     Banner<br /> 
     <input type="text" name="picurl" value="http://" style="width: 200px;" /><div class="hr"></div> 
     <input type="submit" name="submit" value="Submit"> <br /> 
     </form> 

<? 
if($_POST['submit']) { 
$click = $_POST['click']; 
$imp = $_POST['imp']; 
$url = $_POST['url']; 
$razmer = $_POST['razmer']; 
$picurl = $_POST['picurl']; 
    $sql = "INSERT INTO `banneradd` (click, imp, url, razmer, picurl, username) VALUES ('$click', '$imp', '$url', '$razmer', '$picurl', '')"; 
    $result = mysql_query($sql); 
    echo "<div class='hr'>The Banner has been added, please go back to the index: <a href='view_reklama.php'> Index </a></div>"; 
    } 
    ?> 

Так что сказать, что это был добавлен, но когда я возвращаюсь это не так. Нет ошибки или что-то еще, может кто-то может помочь? Заранее спасибо :)

+2

Для любви к Богу, дезинфицируйте свои переменные! –

+0

Вы можете быть более конкретным, Im beginner in php ... Спасибо :) – Bulqr4eto

+0

Проверьте '$ result', если он содержит' FALSE', были ошибки (которые вы можете получить с помощью функции 'mysql_error()'). –

ответ

0

Хорошо, у вас слишком много неправильного кода, поэтому, если вы учитесь у определенного сайта или человека ... найдите другой источник.

  1. Не открывайте PHP с помощью <?. Это сокращенный стиль. Он отключен на многих, если не на большинстве веб-серверов, и не зря - потому что XML вводит его кодировку с использованием того же открытия <? и вызывает конфликт. Всегда открывайте свой PHP с помощью <?php. http://www.php.net/manual/en/ini.core.php#ini.short-open-tag

  2. Не использовать if($_POST['submit']), используйте if (isset($_POST['submit'])). Ваш текущий скрипт должен генерировать ошибку, но это, вероятно, маскируется, потому что PHP по умолчанию не показывает очень много ошибок. Это вызывает предупреждение, хотя, потому что вы проверяете, является ли переменная (или, скорее, значение массива) $_POST['submit'] равна true. Фактически, эта переменная не определена. Используйте isset(), чтобы проверить, существует ли переменная. http://php.net/manual/en/function.isset.php

  3. Санизировать вход пользователя. Если кто-то набрал ' в любое из ваших полей, ваш запрос сломается. Зачем? Потому что в вашем запросе вы помещаете свои строковые значения в одинарные кавычки, и любой экземпляр другого одинарного кавычка вырвется из этого. Существует такая вещь, как волшебные кавычки в PHP (который автоматически избегает значений POST), но это абсолютно ужасно, поэтому, пожалуйста, отключите его. http://php.net/manual/en/security.magicquotes.php Лучший способ избежать ввода пользователем - это настоящие функции выхода (подробнее об этом позже).

  4. mysql_ функции устарели. Используйте PDO или MySQLi. Если вы привыкаете к функциям mysql_, проще перейти на MySQLi. Для простоты я буду использовать процедурный стиль, но гораздо лучше пойти с стилем ООП.

  5. Если вы хотите отлаживать команды MySQL с помощью PHP, вы должны тщательно отформатировать свои запросы, распечатать ошибку , а также распечатать вычисленный запрос, потому что иногда вам нужно посмотреть фактический приведенный запрос, чтобы узнать, что с ним не так.

Тем не менее, вот что я предлагаю:

<?php 
error_reporting(E_ALL); 
    // Turn on all error reporting. Honestly, do this every time you write a script, 
    // or, better yet, change the PHP configuration. 

$connection = mysqli_connect('host', 'username', 'password', 'database'); 
    // Somewhere in your config file, I assume you're calling mysql_connect. 
    // This is a pretty similar syntax, although you won't need mysql_select_db. 

if (isset($_POST['submit'])) { 
    $click = mysqli_real_escape_string($connection, $_POST['click']); 
     // This will escape the contents of $_POST['click'], e.g. 
     // if the user inputted: Hello, 'world'! then this will produce: 
     // Hello, \'world\'! 
    $imp = mysqli_real_escape_string($connection, $_POST['imp']); 
    $url = mysqli_real_escape_string($connection, $_POST['url']); 
    $razmer = mysqli_real_escape_string($connection, $_POST['razmer']); 
    $picurl = mysqli_real_escape_string($connection, $_POST['picurl']); 

    $query = " 
INSERT INTO `banneradd` (
    `click`, 
    `imp`, 
    `url`, 
    `razmer`, 
    `picurl`, 
    `username` 
) 
VALUES 
    (
     '$click', 
     '$imp', 
     '$url', 
     '$razmer', 
     '$picurl', 
     '' 
    ); 
"; 
    // Format your query nicely on multiple lines. MySQL will tell you what line 
    // the error occurred on, but it's not helpful if everything's on the same line. 
    $result = mysqli_query($connection, $query); 
    $error = mysqli_error($connection); 
    if ($error) { 
     echo "A MySQL error occurred: $error<br>"; 
     echo "<pre>$query</pre>"; 
      // If an error occurred, print the error and the original query 
      // so you can have a good look at it. 
     die; 
      // Stop executing the PHP. 
    } 

    echo '<div class="hr">The Banner has been added, please go back to the index: <a href="view_reklama.php"> Index </a></div>'; 
} 
?> 

Смотрите, если это помогает. Скорее всего, ошибка MySQL будет полезна при диагностике проблемы. Возможно, вы просто ошибочно написали имя столбца или имя таблицы.

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