|
|
|
| Дело в том, что с другими данными все работало (ну кроме 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 = 0 ; $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> </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', 'аббр')
|
все срабатывает, на странице появляется результат. | |
|
|
|
|
|
|
|
для: Kioni
(13.03.2012 в 00:41)
| | 1. Функция mysql_error() выводит какие-то сообщения об ошибках?
2. Дело происходит на локальной машине или на арендуемом сервере? Вернее, из под какого пользователя происходит работа скрипта и какие у него привилегии? Не может быть так, что у пользователя просто нет прав на вставку и удаление данных? | |
|
|
|
|
|
|
|
для: cheops
(13.03.2012 в 12:57)
| | Сервер установлен локально, все привилегии разрешены
ошибок не выдает
может что-то с таблицей? может проблема быть в ней? | |
|
|
|
|
|
|
|
для: kioni
(13.03.2012 в 13:40)
| | Попробуйте вывести отладочные строки в точках, где выполняются запросы, PHP-скрипт вообще доходит до этого места? | |
|
|
|
|
|
|
|
для: cheops
(13.03.2012 в 17:23)
| | Как проверить, поподробнее можно?
Скрипт работал, когда соединение было с другой таблицей, где было меньше строк. | |
|
|
|
|
|
|
|
для: Kioni
(13.03.2012 в 18:18)
| | Просто рядом с запросом выведете
и создайте условия, когда по вашему мнению запрос должен выполняться, если запись не выводится значит где-то ошибка в логике, если выводится - проблема на стороне базы данных. Если проблема на строне базы данных, выводите запрос, если в логике, двигайте отладочную запись вверх по-скрипту, чтобы локализовать место, где логика срабатывает не так как надо. | |
|
|
|
|
|
|
|
для: cheops
(13.03.2012 в 19:27)
| | Спасибо большое!
Разобралась с ошибками своими. | |
|
|
|
|
автор: Focus (03.06.2012 в 15:27) |
|
|
для: Kioni
(13.03.2012 в 23:25)
| | Данный случай уже рассматривался на этом форуме, но решения этой проблемы так и не нашлось (как пишет автор вопроса "все само вдруг заработало").
А сама поступила не так, да? | |
|
|
|