|
|
|
| в файл editcountryform.php передается строка вида http://localhost/peoplecrimea/admin/country/editcountryform.php?id_country=2
Вот файл editcountryform.php:
<?php
// Устанавливаем соединение с базой данных
require_once("../config.php");
// Проверяем, установлены ли значения параметров
if(!isset($_GET['id_country']))
{
echo "Не выбрана страна для исправления";
exit();
}
else
{
$query= mysql_query("select * from country;");
// Выполняем SQL-запрос
$prg = mysql_query($query);
if($prg) $par = mysql_fetch_array($prg);
else puterror("Ошибка при обращении к блоку стран");
// Выбираем данные из базы данных
$id_country = $par['id_country'];
$name = $par['name'];
?>
// Устанавливаем переменные формы
<form action=editcountry.php method=POST>
Введите название страны:
<input type="text" name="name" size="30" value="".$par['name'].""><br>
<input type="submit" value="Исправить">
</form>
<?php
}
?>
|
Выводит ошибку: "Ошибка при обращении к блоку стран"
Вот структура таблицы в БД:
CREATE TABLE `country` (
`id_country` int(6) NOT NULL auto_increment,
`name` mediumtext NOT NULL,
PRIMARY KEY (`id_country`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;
--
-- Дамп данных таблицы `country`
--
INSERT INTO `country` VALUES (1, 'Россия');
INSERT INTO `country` VALUES (2, 'Украина');
|
Из-за чего выдается ошибка понять не могу, подскажите плз. | |
|
|
|
|
|
|
|
для: Dizels
(27.09.2007 в 17:38)
| | А зачем точка с запятой?
| |
|
|
|
|
|
|
|
для: Dizels
(27.09.2007 в 17:38)
| | А зачем передается в скрипт $_GET['id_country']? И зачем вы выбираете все записи в базе? Может вам нужно только это:
$query= mysql_query("select name from country where id_country=$_GET['id_country']")
|
| |
|
|
|
|
|
|
|
для: sim5
(27.09.2007 в 17:44)
| | id_country - передается чтобы было ясно название какой страны исправлять.
Если вставляю
$query= mysql_query("select name from country where id_country=$_GET['id_country']")
|
выдает ошибку:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in z:\home\localhost\www\peoplecrimea\admin\country\editcountryform.php on line 15
|
| |
|
|
|
|
|
|
|
для: Dizels
(27.09.2007 в 18:04)
| | И будет ошибка, потому как надо:
<?
//Сформировали запрос
$query="select name from country where id_country=".$_GET['id_country'];
//делаем запрос
mysql_query($query);
//а у вас дважды - не понятно?
|
Да и вообще, не важны детали, у вас не верна суть!
>id_country - передается чтобы было ясно название какой страны исправлять.
Если исправлять, то UPDATE, или вставить новое - INSERT. Вы же просто выберате, и что? Для чего вы передаете id_country на страницу, лишь для того чтобы удостовериться что она пришла? У вас логика странная в скрипте, не говоря уж об ошибках. | |
|
|
|
|
|
|
|
для: sim5
(27.09.2007 в 18:34)
| | Эта страница - форма, т.е. туда передается, чтобы потом в <input type="text"> установить значение value развное названию страны, а вот уже как там его подправят, тогда будет все передаваться в файл editcountry.php сейчас же я говорю про файл editcountryform.php | |
|
|
|
|
|
|
|
для: Dizels
(28.09.2007 в 10:11)
| | А я вам про что-то другое да? Для начала прочтите: mysql_query(), mysql_fetch_array().
А вот сама логика вообще не понятна. Если вы хотите предоставить пользователю выбор, то у вас должен быть список, например:
<select name="id_country">
<option value="1">Россия</option>
<option value="2">Украина</option>
<option value="3">Булоруссия</option>
</select>
|
Тогда понятен выбор вами всех записей таблицы. А вы что делаете? Выбрали все (а это массив!), потом ни с того ни с чего, приравниваете это перменным, которые кстати вообще нигде не используются, далее следующий ляпсус - вставляете в форму, а вы думаете, что вы туда вставляете?
Проверили, нет запроса пользователя, значит выводите ему список (иначе выбор всего, это глупо), т.е. формируете форму. Если пришел запрос, значит либо переход к другому скрипту, либо в этом, где вы производите необходимые изменения в таблице, либо другое, то что вы подразумеваете под изменением. | |
|
|
|
|
|
|
|
для: sim5
(28.09.2007 в 10:47)
| |
А вот сама логика вообще не понятна. Если вы хотите предоставить пользователю выбор, то у вас должен быть список
|
Нет - я хочу предоставить возможность модератору(эти скрипты будут использоваться ограниченным кругом людей) изменять название страны, к примеру, вот вы неправильно ввели Булоруссия - нажимаете исправить и вам должен выводится для начала ваш неправильный текст, т.е. Булоруссия, потом, вы его исправляете на Белоруссия и нажимаете исправить и в БД эта запись должна исправиться, надеюсь объясни понятно:)
Вот файл editcountry.php:
<?php
// Устанавливаем соединение с базой данных
require_once("../config.php");
// Проверяем, заполнены ли поля формы
if(empty($name)) { echo "Введите название страны";
exit;
}
if(empty($country)) { echo "Не передана переменная страны";
exit;
}
// Заменяем одинарные кавычки обратными
$name = str_replace("'","`",$_POST['name']);
// Формируем и осуществляем SQL-запрос на исправление страны
$query = "UPDATE country SET
name='$name',
WHERE id_country='$country';
if(mysql_query($query))
{
// В случае успеха, осуществляем автоматический переход на
// страницу стран
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
</HEAD></HTML>";
}
else puterror("Ошибка при обращении к блоку стран");
?>
|
переменные ТОЧНО передаются, а вот ошибка выпадает следующая:
Parse error: parse error, unexpected '>' in z:\home\localhost\www\peoplecrimea\admin\country\editcountry.php on line 28
|
Я так понимаю, что SQL-запрос составлен неправильно, подскажите плз, как надо сделать. | |
|
|
|
|
|
|
|
для: Dizels
(28.09.2007 в 12:12)
| |
$query = "UPDATE country SET name=$name WHERE id_country=$country";
|
Кавычки закрывать надо. | |
|
|
|
|
|
|
|
для: sim5
(28.09.2007 в 12:44)
| | исправил, спасибо | |
|
|
|
|
|
|
|
для: Dizels
(28.09.2007 в 13:15)
| | У вас в запросе запятая после name='$name',
$query = "UPDATE country SET name='$name', WHERE id_country='$country';
|
| |
|
|
|