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

Форум MySQL

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

 

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

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

тема: Ошибка при исправлении данных в базе данных
 
 автор: Dizels   (27.09.2007 в 17:38)   письмо автору
 
 

в файл 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
  {

  
$querymysql_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, 'Украина');


Из-за чего выдается ошибка понять не могу, подскажите плз.

   
 
 автор: fiper   (27.09.2007 в 17:43)   письмо автору
 
   для: Dizels   (27.09.2007 в 17:38)
 

А зачем точка с запятой?


select * from country;

   
 
 автор: sim5   (27.09.2007 в 17:44)   письмо автору
 
   для: Dizels   (27.09.2007 в 17:38)
 

А зачем передается в скрипт $_GET['id_country']? И зачем вы выбираете все записи в базе? Может вам нужно только это:


$query= mysql_query("select name from country where id_country=$_GET['id_country']")

   
 
 автор: Dizels   (27.09.2007 в 18:04)   письмо автору
 
   для: 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

   
 
 автор: sim5   (27.09.2007 в 18:34)   письмо автору
 
   для: 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 на страницу, лишь для того чтобы удостовериться что она пришла? У вас логика странная в скрипте, не говоря уж об ошибках.

   
 
 автор: Dizels   (28.09.2007 в 10:11)   письмо автору
 
   для: sim5   (27.09.2007 в 18:34)
 

Эта страница - форма, т.е. туда передается, чтобы потом в <input type="text"> установить значение value развное названию страны, а вот уже как там его подправят, тогда будет все передаваться в файл editcountry.php сейчас же я говорю про файл editcountryform.php

   
 
 автор: sim5   (28.09.2007 в 10:47)   письмо автору
 
   для: 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>

Тогда понятен выбор вами всех записей таблицы. А вы что делаете? Выбрали все (а это массив!), потом ни с того ни с чего, приравниваете это перменным, которые кстати вообще нигде не используются, далее следующий ляпсус - вставляете в форму, а вы думаете, что вы туда вставляете?

Проверили, нет запроса пользователя, значит выводите ему список (иначе выбор всего, это глупо), т.е. формируете форму. Если пришел запрос, значит либо переход к другому скрипту, либо в этом, где вы производите необходимые изменения в таблице, либо другое, то что вы подразумеваете под изменением.

   
 
 автор: Dizels   (28.09.2007 в 12:12)   письмо автору
 
   для: 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-запрос составлен неправильно, подскажите плз, как надо сделать.

   
 
 автор: sim5   (28.09.2007 в 12:44)   письмо автору
 
   для: Dizels   (28.09.2007 в 12:12)
 


$query = "UPDATE country SET name=$name WHERE id_country=$country";

Кавычки закрывать надо.

   
 
 автор: Dizels   (28.09.2007 в 13:15)   письмо автору
 
   для: sim5   (28.09.2007 в 12:44)
 

исправил, спасибо

   
 
 автор: fiper   (28.09.2007 в 13:32)   письмо автору
 
   для: Dizels   (28.09.2007 в 13:15)
 

У вас в запросе запятая после name='$name',


$query = "UPDATE country SET   name='$name',  WHERE id_country='$country'; 

   
Rambler's Top100
вверх

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