Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с кодировкой 
:(
    Опции темы
sugee
Дата 7.11.2005, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Ещё проблема...
Запрос выглядит так
Код

delete from `cafe` where `name`=`имя`

Значение name приходит из чекбокса, тут я не буду вдаваться
в подробности, я его проверял - значение правильное.
Название таблицы тоже передаётся из формы и тут тоже все верно.
вот что говорит мускул
Код

Unknown column 'РІРїРї' in 'where clause'

PM MAIL   Вверх
Kesh
Дата 7.11.2005, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 5
Всего: 54



sugee А можно кусочек кода побольше... smile


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
PARROT
Дата 7.11.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 3
Всего: 50



Проверь правильность полей.
Такое впечатление, что он выдает ошибочное поле.



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
sugee
Дата 7.11.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Цитата(Kesh @ 7.11.2005, 11:14)
А можно кусочек кода побольше...


это таблица с чекбоксами
Код


  if(isset($_GET['category']))
{ 
    $category=$_GET['category'];
    $q=mysql_query("select * from {$_GET['category']}");
 for($i=0; $i<mysql_num_rows($q); $i++) {
  $r=mysql_fetch_array($q);
   echo "<tr><td><input type=checkbox name=delAll value={$r['name']}>
 удалить запись {$r['name']}</td><td>уд.</td><td>ред.</td></tr>
 <form action='restoran-kazAdmin.php' method=post>
 <tr><td id='name'><a href=''><font class='name'><b>
 {$r['name']}</b></font></a><input type=hidden name=_name value={$r['name']}></td>
 <td>&nbsp</td>
 <td><input type=checkbox name=edit value=name.{$r['name']}></td></tr>
 <tr><td>Описание<br>{$r['opis']}<input type=hidden name=_opis value={$r['opis']}></td>
 <td><input type=checkbox name=delete value=opis.{$r['name']}></td>
 <td><input type=checkbox name=edit value=opis.{$r['name']}></td></tr>
 <tr><td>Ценовая категория&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
     {$r['cat']}<input type=hidden name=_cat value={$r['cat']}></td>
 <td><input type=checkbox name=delete value=cat.{$r['name']}></td>
 <td><input type=checkbox name=edit value=cat.{$r['name']}></td></tr>";
 }
echo "<tr><td colspan=3>
 <input type=hidden name=_category value={$_GET['category']}>
 <input type=submit name=red value=сохранить></td></tr></form>";
}



здесь удаляем всю запись
Код

if(isset($_POST['delAll'])) {
$q=mysql_query("delete from `{$_POST['_category']}` where `name` like {$_POST['delAll']}");
}

а тут удаляем значения отдельных полей в записи, точнее говоря делаем их пустыми
Код

if(isset($_POST['delete'])) {
// $_POST['delete']=name.{$r['name']} - это то что прислал чекбокс, отсюда можно выделить имя поля
//(то что до точки), и поле name данной записи(после точки).
$length=strpos($_POST['delete'], ".");
$field=substr($_POST['delete'], 0, $length);
$id=substr($_POST['delete'], $length+1);
$q=mysql_query("update {$_POST['_category']} set {$field}='' where name like {$id}");
//like я использую пока потому что забыл как экранировать кводратные скобки
}



PM MAIL   Вверх
Kesh
Дата 7.11.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 5
Всего: 54



Вот, насчет удаления записи... Я бы сделал так...
Код

if(isset($_POST['delAll'])) {    
  $q=mysql_query("delete from `{$_POST['_category']}` where `name` like \'{$_POST['delAll']}\'");    
}

т.е. добавил бы одинарные кавычки после LIKE

Да, кстати, не забыл ли ты про
Код

SET NAMES cp1251

Добавлено @ 14:09
PARROT
Прикольная птичка... smile


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 7.11.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Да нет, там все проще. Он "имя" взял в ковычки (тильды) которые используются для обрамления ТОЛЬКО имен таблиц и столбцов. Для литералов они не годяться. Надо юзать апострофы (обычные).

Цитата(Kesh @ 7.11.2005, 15:08)
Прикольная птичка... smile

Развелось, понимаешь ли smile))
Хотя побольше бы таких птичек smile))

Свабоду ПАПУГАЯМ smile)

PM ICQ   Вверх
sugee
Дата 7.11.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



короче удалить запись получилось вот так
Код

$delAll=$_POST['delAll'];
$q=mysql_query("delete from `{$_POST['_category']}` where `name` like '$delAll'");


когда пишу так
Код

$q=mysql_query("delete from `{$_POST['_category']}` where `name` like \'{$_POST['delAll']}\'");    

MySQL почему то отправляет меня читать мануал... Хотя по моему все верно, но ему виднее...

с удалением(обнулением) отдельных полей немного сложнее
Код

$q=mysql_query("update `{$_POST['_category']}` set 
`{$field}`=''  where `name` like '{$id}'");

нормально всё делает только если name содержит одно слово.
Зря я понадеялся на like...
Не подскажете как правильно заключить {$id} в квадратные скобки?
PM MAIL   Вверх
Mal Hack
Дата 7.11.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Цитата(sugee @ 7.11.2005, 17:15)
\'{$_POST['delAll']}\'"

Не надо тут эскэйпить.

Цитата(sugee @ 7.11.2005, 17:15)
Не подскажете как правильно заключить {$id} в квадратные скобки?

Зачем?
like '%{$id}%'
PM ICQ   Вверх
sugee
Дата 7.11.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



А что если у меня в таблице есть "Пицца Люкс" и "Пицца для всех"?
like не катит...
PM MAIL   Вверх
PARROT
Дата 7.11.2005, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 3
Всего: 50



Попробуй так:
Код

$q=mysql_query("DELETE from `{$_POST['_category']}` where name='".$_POST['delAll']."' ");   

Код

mysql_query ("UPDATE `{$_POST['_category']}`  SET `$field`='' WHERE  name=$id");



Это сообщение отредактировал(а) PARROT - 7.11.2005, 20:08


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
sugee
Дата 7.11.2005, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Цитата(PARROT @ 7.11.2005, 20:07)
$q=mysql_query("DELETE from `{$_POST['_category']}` where name='".$_POST['delAll']."' "); 

удаляет только записи где name из одного слова

Цитата(PARROT @ 7.11.2005, 20:07)
mysql_query ("UPDATE `{$_POST['_category']}`  SET `$field`='' WHERE  name=$id");

выдаёт ошибку "неизвестная колонка"

вот что на данный момент есть у меня
Код

$q=mysql_query("update `{$_POST['_category']}` set `{$field}`='' 
 where `name` like '%{$id}%' ");

работает всегда, но существует опасность, что в таблице попадутся разные названия содержащие одно слово

Код

$q=mysql_query("delete from `{$_POST['_category']}`
 where `name` like '$delAll'");

удаляет только записи где name из одного слова

Добавлено @ 21:19
полцарства за квадратные скобки!
PM MAIL   Вверх
AntonioBanderaz
Дата 8.11.2005, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 18



вместо '' лучше использ NULL, а так у тя с $id проблема, не name=$id, а наверно id или что ещё, что у тя первичным ключём стоит. (вместо name)
Код

mysql_query ("UPDATE `{$_POST['_category']}`  SET `$field`= NULL WHERE  id=$id");


Это сообщение отредактировал(а) AntonioBanderaz - 8.11.2005, 20:20


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
sugee
Дата 9.11.2005, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Я добавил в таблицы поле id объявленное как
Код

id int auto_increment primary key

теперь при добавлении в таблицу новой строки появляется ошибка
Код

column count doesnt`t match value at row 1


Запрос на добавление выглядит так:
Код

insert into {$_POST['type']} 
 values('$name', '$opis', '$cat')


Код

структура таблицы такая:
id int auto_increment primary key NOT NULL
name text NOT NULL
opis text NOT NULL
cat text NOT NULL
address varchar NULL
music varchar NULL
kitchen varchar NULL
auto varchar NULL


поле с адресом естественно будет NOT NULL,
это пока так...

auto_increment должен добавлятся автоматически при
вставке новой записи, не пойму в чем ошибка...
PM MAIL   Вверх
PARROT
Дата 10.11.2005, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 3
Всего: 50



Если поле автоинкремент, то ставишь пустые апострофы:
Код

insert into {$_POST['type']} values('','$name', '$opis', '$cat') or die(mysql_error());



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
sugee
Дата 10.11.2005, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



А, понятно...
А то я теперь вот как мучаюсь
Код


  $qr=mysql_query("select `id` from {$_POST['type']}");
  $RAND=mt_rand(0, mysql_num_rows($qr));
  $q=mysql_query
 ("insert into {$_POST['type']} 
 values($RAND, '$name', '$opis', '$cat', NULL, NULL, NULL, NULL)");


В общем я сделал всё через id, всё получилось.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0642 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.