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

Форум MySQL

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

 

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

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

тема: Перенос из одной таблицы в другую
 
 автор: Maxys   (26.11.2007 в 14:05)   письмо автору
 
 

Здравствуйте, у меня проблема заключается в том что while работает не правильно, пытаюсь с помощью while сделать перенос данных из таблицы 1 в таблицу 2, потом удалить данные из таблицы 1.

Делаю это таким способом

while($item = mysql_fetch_assoc($korz_to_archive))
    {
        $id_user = $item['id_user'];
        $cena = $item['cena'];
        $model = $item['model'];
        $kolvo = $item['kolvo'];
        $query_to_arch = "INSERT INTO korzina_archive values(\"$id_user\",\"$cena\",\"$model\",\"$kolvo\")";
        $result2 = mysql_query($query_to_arch);
    }

(после идёт удаление, с этим проблем нет)

всё к счастью переносится.. точнее вру не всё, похоже что While "не успевает" справляться с запросами и некоторые по 2 раза записывает в таблицу, а от этого получается 1 строчка уже теряется. Как лучше мне такой перенос данных проделовать? Или в чём моя ошибка в коде?

   
 
 автор: Faraon   (26.11.2007 в 14:08)   письмо автору
 
   для: Maxys   (26.11.2007 в 14:05)
 

Можно снять дамп таблицы, поменять название таблицы и залить в БД

   
 
 автор: Maxys   (26.11.2007 в 15:40)   письмо автору
 
   для: Faraon   (26.11.2007 в 14:08)
 

что значит "снять дамп таблицы"?

   
 
 автор: Faraon   (26.11.2007 в 15:43)   письмо автору
 
   для: Maxys   (26.11.2007 в 15:40)
 

У вас например PhpMyadmin есть?

   
 
 автор: Maxys   (26.11.2007 в 15:47)   письмо автору
 
   для: Faraon   (26.11.2007 в 15:43)
 

да конечно есть.

   
 
 автор: Faraon   (26.11.2007 в 16:08)   письмо автору
 
   для: Maxys   (26.11.2007 в 15:47)
 

Ну и в чем проблема
выбираете таблицу, далее нажимаете кнопку "Экспорт"
ставите галочку в чекбокс "Послать"
И нажимаете кнопку "Пошел"
Сохраните выданный вам sql-файл
Далее откройте его блокнотом например, и в CREATE TABLE меняете название таблицы
сохраняете
Далее в PMA выбираете SQL и в нем "Импорт файлов"
Загружаете данный файл

   
 
 автор: Maxys   (26.11.2007 в 16:32)   письмо автору
 
   для: Faraon   (26.11.2007 в 16:08)
 

мне нужно не таблицу, А ДАННЫЕ в таблице
и если вы ещё не поняли, мне это надо ЧЕРЕЗ СКРИПТЫ делать, а не за каждым пользователем бегать и вручную копировать.
я в данном случае когда пользователь жмёт кнопку по его ID номеру копирую его данные из одной таблицы в другую, только как я уже написал с помощью while из 4 значений (для примера 1-2-3-4 значение) он мне перенесёт только 2 значения 4 раза например (1-1-1-3 значение) тоесть это не правильно!!!

Кстати в phpmyadmin гораздо проще можно всё копировать! в операции зайти, выбрать какие таблицы и всё.

   
 
 автор: Maxys   (26.11.2007 в 18:36)   письмо автору
 
   для: Maxys   (26.11.2007 в 14:05)
 

разобрался не много в чём проблема была. Строки пропускались из-за того что в $model хранился слишком большой текст для БД (у меня вначале стоял VARCHAR(255) - оказывается мало, поставил TEXT тоже мало) какой лучше тогда тип для большого текста брать? и на сколько плохо это для базы данных и скриптов?

Так же вопрос попутный TINYINT - может хранить числа только от 0 до 127 или -127 до 127?

   
 
 автор: cheops   (27.11.2007 в 11:57)   письмо автору
 
   для: Maxys   (26.11.2007 в 18:36)
 

>Так же вопрос попутный TINYINT - может хранить числа только от 0 до 127 или -127 до 127?
Может и тот и другой диапазон хранить, в зависимости от того, снабжено полем атрибутом UNSIGNED или нет.

   
 
 автор: Faraon   (27.11.2007 в 13:32)   письмо автору
 
   для: Maxys   (26.11.2007 в 18:36)
 

странно что $model не помещается в поле типа TEXT

   
 
 автор: Maxys   (29.11.2007 в 14:34)   письмо автору
 
   для: Faraon   (27.11.2007 в 13:32)
 

я тоже не знаю, но вот весь код


$korz_to_archive = mysql_query("SELECT * FROM korzina_photocam WHERE id_user=$id_usr2");

while($item = mysql_fetch_assoc($korz_to_archive))
    {
        $id_user = $item['id_user'];
        $tovar = $item['photocam'];
        $cena = $item['cena'];
        $model = $item['model'];
        $kolvo = $item['kolvo'];
        $query_to_arch = "INSERT INTO korzina_archive(id_spec_num,id_user,tovar,cena,model,kolvo) values($id_specnum,\"$id_user\",\"$tovar\",\"$cena\",\"$model\",\"$kolvo\")";
        mysql_query($query_to_arch);
    }
    
        //очищаем текущие данные
        $querydel = "DELETE FROM korzina_photocam WHERE id_user=$id_usr";
        mysql_query($querydel);        


прошу под стол не падать от того как я кодю =) я только месяц пхп занимаюсь.

а вот как выглядит БД в mysql

Поле-Тип-Сравнение-Ноль-По умолчанию-Дополнительно
id_specif-int(6)--Нет--auto_increment
id_spec_num-int(6)--Нет
id_user-tinyint(4)--Нет
tovar-varchar(20)-cp1251_general_ci-Да-NULL
cena-varchar(8)-cp1251_general_ci-Нет
model-text-cp1251_general_ci-Нет
photocamunid-varchar(20)-cp1251_general_ci-Нет
kolvo-tinyint(4)--Нет

если на верху в записях стоят -- значит посередине пустое число. У меня всё вот так, а в текст model всё равно большой текст не записывается.

   
Rambler's Top100
вверх

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