Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите, не работает INSERT INTO и DELETE
 
 автор: Kioni   (13.03.2012 в 00:41)   письмо автору
 
 

Дело в том, что с другими данными все работало (ну кроме DELETE, очень странно)
Связь с базой данных MySQL была, данные через форму добавлялись в таблицу, все работало. Когда добавила и поменяла некоторые переменные - тишина
Как исправить, посоветуйте.

Данный случай уже рассматривался на этом форуме, но решения этой проблемы так и не нашлось (как пишет автор вопроса "все само вдруг заработало"). Не знаю что и делать.

Вот код страниц:


<?php 

$path 
$_SERVER['DOCUMENT_ROOT'];
require 
"$path/Smarty/Smarty.class.php";

$smarty = new Smarty();
$smarty->template_dir "$path/temp/smarty/templates";
$smarty->compile_dir  "$path/temp/smarty/templates_c";
$smarty->cache_dir    "$path/temp/smarty/cache";
$smarty->config_dir   "$path/temp/smarty/configs";

require_once(
"$path/temp/login.php");
$db_server mysql_connect($db_hostname$db_username$db_password);


if (!
$db_server) die("Unable to connect to MySQL: " mysql_error());

mysql_select_db($db_database)
    or die(
"Unable to select database: " mysql_error());
mysql_query("SET NAMES cp1251");

if (isset (
$_POST['id']))
{
   
$id $_POST['id'];
    }


if (isset(
$_POST['id']) &&
    isset(
$_POST['author']) &&
    isset(
$_POST['title']) &&
    isset(
$_POST['year']) &&
    isset(
$_POST['category']) &&
    isset(
$_POST['text']) &&
    isset(
$_POST['metakeys']) &&
    isset(
$_POST['metadesc']) &&
    isset(
$_POST['url']) &&
    isset(
$_POST['urldesc']))
{
    
$id   get_post('id');
    
$author    get_post('author');
    
$title    get_post('title');
    
$year    get_post('year');
    
$category    get_post('category');
    
$text get_post('text');
    
$metakeys     get_post('metakeys');
    
$metadesc     get_post('metadesc');
    
$url     get_post('url');
    
$urldesc    get_post('urldesc');
    

     
    if (isset(
$_POST['delete']) && $id != "")
    {
        
$query "DELETE FROM public WHERE id='$id'";

        if (!
mysql_query($query))
        {    
            echo 
"DELETE failed: $query<br>" .
            
mysql_error() . "<p>";
        }
    }
    else
    {
    
        
$query "INSERT INTO public VALUES" .
        
"(NULL, '$author', '$title', '$year', '$category', '$text', '$metakeys', '$metadesc', '$url', '$urldesc')";

        if (!
mysql_query($query))
        {
            echo 
"INSERT failed: $query<br>" .
            
mysql_error() . "<p>";
        }
    }


$query "SELECT * FROM public";
$result mysql_query($query);

if (!
$result) die ("Database access failed: " mysql_error());
$rows mysql_num_rows($result);

for (
$j $j $rows ; ++$j)
{
    
$results[] = mysql_fetch_array($result);
}

mysql_close($db_server); 

$smarty->assign('results'$results);
$smarty->display("smartytest.tpl");

function 
get_post($var)
{
    return 
mysql_real_escape_string($_POST[$var]);
}
?>
 


шаблон smarty:


<form action="smartytest.php" method="post"><pre>
         <table>
         <input type="hidden" name="id">
         <tr><td>Автор</td><td><input type="text" name="author"></td></tr>
         <tr><td>Заголовок</td><td> <input type="text" name="title"></td></tr>
         <tr><td>Год</td><td><input type="text" name="year"></td></tr>
         <tr><td>Раздел</td><td><select name="category">
                               <option value="article">Статья</option>
                               <option value="book">Книга</option>
                               <option value="e-book">Электронное издание</option>
                               </select>
         </td></tr>
         <tr><td>Текст</td><td><textarea cols="100%" rows="7" name="metadescription" id="edit_text"></textarea></td></tr>
         <tr><td>Ключевые слова</td><td><input type="text" name="metakeywords"></td></tr>
         <tr><td>Описание страницы</td><td><input type="text" name="metadesc"></td></tr>
         <tr><td>URL</td><td><input type="text" value=""></td></tr>
         <tr><td>Описание ссылки</td><td><input type="text" name="urldesc"></td></tr>
         <tr><td>&nbsp;</td><td><input type="submit" value="Добавить запись"></td></tr>
         </table> 
       </pre></form>  

{section name=row loop=$results}
    <form action="smartytest.php" method="post">
    <input type="hidden" name="delete" value="yes">
    <input type="hidden" name="id" value="{$results[row].id}">
    <pre>
    id:   {$results[row].id}
    Автор:   {$results[row].author}
    Заголовок:   {$results[row].title}
    Год: {$results[row].year}
    Раздел:     {$results[row].category}
    Текст:   {$results[row].text}
    Ключевые слова:     {$results[row].metakeys}
    Описание страницы:     {$results[row].metadesc}
    URL:   {$results[row].url}
    Описание ссылки:   {$results[row].urldesc}
    <input type="submit" value="Удалить запись"></pre>
    </form>
{/section}


Причем, если вводить команду через phpMyAdmin:

insert into public (id, author, title, year, category, metakeys, text, metadesc, url, urldesc)
values ('3','Иван', 'регрессия', '2005', 'book', 'книга', 'книга', 'книга', 'fgh', 'аббр')

все срабатывает, на странице появляется результат.

  Ответить  
 
 автор: cheops   (13.03.2012 в 12:57)   письмо автору
 
   для: Kioni   (13.03.2012 в 00:41)
 

1. Функция mysql_error() выводит какие-то сообщения об ошибках?
2. Дело происходит на локальной машине или на арендуемом сервере? Вернее, из под какого пользователя происходит работа скрипта и какие у него привилегии? Не может быть так, что у пользователя просто нет прав на вставку и удаление данных?

  Ответить  
 
 автор: kioni   (13.03.2012 в 13:40)   письмо автору
 
   для: cheops   (13.03.2012 в 12:57)
 

Сервер установлен локально, все привилегии разрешены
ошибок не выдает
может что-то с таблицей? может проблема быть в ней?

  Ответить  
 
 автор: cheops   (13.03.2012 в 17:23)   письмо автору
 
   для: kioni   (13.03.2012 в 13:40)
 

Попробуйте вывести отладочные строки в точках, где выполняются запросы, PHP-скрипт вообще доходит до этого места?

  Ответить  
 
 автор: Kioni   (13.03.2012 в 18:18)   письмо автору
 
   для: cheops   (13.03.2012 в 17:23)
 

Как проверить, поподробнее можно?
Скрипт работал, когда соединение было с другой таблицей, где было меньше строк.

  Ответить  
 
 автор: cheops   (13.03.2012 в 19:27)   письмо автору
 
   для: Kioni   (13.03.2012 в 18:18)
 

Просто рядом с запросом выведете
<?php
  
echo "Hello";
?>
и создайте условия, когда по вашему мнению запрос должен выполняться, если запись не выводится значит где-то ошибка в логике, если выводится - проблема на стороне базы данных. Если проблема на строне базы данных, выводите запрос, если в логике, двигайте отладочную запись вверх по-скрипту, чтобы локализовать место, где логика срабатывает не так как надо.

  Ответить  
 
 автор: Kioni   (13.03.2012 в 23:25)   письмо автору
 
   для: cheops   (13.03.2012 в 19:27)
 

Спасибо большое!
Разобралась с ошибками своими.

  Ответить  
 
 автор: Focus   (03.06.2012 в 15:27)
 
   для: Kioni   (13.03.2012 в 23:25)
 

Данный случай уже рассматривался на этом форуме, но решения этой проблемы так и не нашлось (как пишет автор вопроса "все само вдруг заработало").
А сама поступила не так, да?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования