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

Форум PHP

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

 

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

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

тема: помогите записать в файл
 
 автор: Spenser   (16.05.2006 в 19:38)   письмо автору
 
 

Подскажите пожалуйсто, как записать в текстовыйфайл данные из MySQL из таблицы TAB1 в следующем виде:
text1_1 | text2_1 | text3_1 | text4_1
text1_2 | text2_2 | text3_2 | text4_2
text1_3 | text2_3 | text3_3 | text4_3

каждая строчка в текстовом файле это она строчка в таблице.
а потом надо прочитать эти данные и записать в таблицу TAB2 . также как они были записаны в TAB1. скрипт по записи в файл и чтения из файла должны быть в разных php файлах. ПОМОГИТЕ!

   
 
 автор: Евгений Петров   (16.05.2006 в 20:27)   письмо автору
 
   для: Spenser   (16.05.2006 в 19:38)
 

А может лучше сразу из одной таблицы в другую?

   
 
 автор: Spenser   (16.05.2006 в 20:34)   письмо автору
 
   для: Евгений Петров   (16.05.2006 в 20:27)
 

не, так не получится :)
мне надо перенести данные с одного хоста на другой. а дамп правильно не работает (проблемы с кодировкой).

   
 
 автор: Евгений Петров   (16.05.2006 в 20:35)   письмо автору
 
   для: Spenser   (16.05.2006 в 20:34)
 

Ну эти проблемы решаемы...
A доступ по SSH есть?

   
 
 автор: Spenser   (16.05.2006 в 20:40)   письмо автору
 
   для: Евгений Петров   (16.05.2006 в 20:35)
 

а поподробнее насчет ssh. я еще не очень в этом деле.

   
 
 автор: Евгений Петров   (16.05.2006 в 20:42)   письмо автору
 
   для: Spenser   (16.05.2006 в 20:40)
 

Ну это доступ к серверу через консоль. Через неё же можно сделать дамп таблиц или сразу скопировать файл базы данных...

   
 
 автор: Spenser   (16.05.2006 в 20:43)   письмо автору
 
   для: Евгений Петров   (16.05.2006 в 20:42)
 

тогда доступа нет. И еще мне хочется сделать это на пхп, чтобы получить опыт.

   
 
 автор: Евгений Петров   (16.05.2006 в 20:51)   письмо автору
 
   для: Spenser   (16.05.2006 в 20:43)
 

Ну вообще ваш вариант не очень хороший, во первых потому что он не очень хороший (:)) а во вторых если например в таблице поля будут такие
field[0] = "string";
field[1] = "st|ring";
field[2] = "strin|g";

тогда в файл запишется:
...
string|st|ring|strin|g
...

И уже не совсем понятно где что. Поэтому все символы | надо экранировать например слешами, т.е.
...
string|st\|ring|strin\|g
...

Если Вас это устроит, то можно попробовать

   
 
 автор: Spenser   (16.05.2006 в 20:49)   письмо автору
 
   для: Евгений Петров   (16.05.2006 в 20:42)
 

вот скрипт на запись в файл:

<?php
include("config.php");
/* создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");
@
mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");
/* Выбрать все датчики */
$query "SELECT * FROM $userstable1 ";
$result = @mysql_query($query);
/* Как много нашлось */
$number MYSQL_NUMROWS($result);

WHILE (
$i $number){ 
$nametype mysql_result($result,$i,"nametype");
$descrtype mysql_result($result,$i,"descrtype");
$fp=fopen("type.txt","a+"); 
fwrite($fp,$nametype."|".$descrtype."\r\n"); 
fclose($fp);
$i++;  
              } 
?>

а как теперь из этого файла вставить в БД?

   
 
 автор: Евгений Петров   (16.05.2006 в 20:56)   письмо автору
 
   для: Spenser   (16.05.2006 в 20:49)
 

Много лишнего, к тому же, зачем вы в цикле открываете и закрываете файл? Вот мой вариант:
<?php
  
include("config.php");
  if(!@
mysql_connect($hostname,$username,$password)) exit(mysql_error());
  if(!@
mysql_select_db($dbName)) exit(mysql_error());

  
$query mysql_query("SELECT * FROM $userstable1");

  if(
mysql_num_rows($query) > 0)
  {
    
$f fopen("type.txt","r");
    while(
$fetch mysql_fetch_array($query))
    {
      
fwrite($f,str_replace("|","\\|",$fetch['nametype'])."|".str_replace("|","\\|",$fetch['descrtype'])."\n");
    }
    
fclose($f);
  }
?>

   
 
 автор: Spenser   (16.05.2006 в 21:03)   письмо автору
 
   для: Евгений Петров   (16.05.2006 в 20:56)
 

А можно пример вывода и записи в БД?

   
 
 автор: Евгений Петров   (16.05.2006 в 21:05)   письмо автору
 
   для: Spenser   (16.05.2006 в 21:03)
 

Момент.

   
 
 автор: Евгений Петров   (16.05.2006 в 21:14)   письмо автору
 
   для: Евгений Петров   (16.05.2006 в 21:05)
 

Вроде такого, проверьте:
<?php
  
include("config.php");
  if(!@
mysql_connect($hostname,$username,$password)) exit(mysql_error());
  if(!@
mysql_select_db($dbName)) exit(mysql_error());

  function 
user_explode($separator,$string)
  {
    
$buf "";
    unset(
$ret_array);

    for(
$i 0$i strlen($string); $i++)
    {
      if(
$string[$i] == $separator && $string[$i 1] != "\\")
      {
        
$ret_array[] = $buf;
        
$buf "";
      }
      else
      {
        
$buf.= $string[$i];
      }
    }
    
$ret_array[] = $buf;

    return 
$ret_array;
  }

  
$f fopen("type.txt","r");
  if(
$f)
  {
    while(!
feof($f))
    {
      
$line fgets($f);
      
$arr user_explode("|",trim($line));
      
mysql_query("INSERT INTO $userstable1() VALUES('".mysql_escape_string($arr[0])."','".mysql_escape_string($arr[1])."')");
    }
  }

  
fclose($f);
?>

   
 
 автор: Spenser   (16.05.2006 в 21:20)   письмо автору
 
   для: Евгений Петров   (16.05.2006 в 21:14)
 

спасибо за скрипт. А можите подредактировать вот этот:

<?php
include("config.php");
/* создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");
@
mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");

$file file("type.txt");
$count count($file);
for(
$i 0$i $count$i++){
$typedat explode("|"$file[$i]);
$query "INSERT INTO $userstable2(nametype, descrtype) VALUES('$typedat[0]', '$typedat[1]')";
              } 
MYSQL_CLOSE();
?>

   
 
 автор: Евгений Петров   (16.05.2006 в 21:34)   письмо автору
 
   для: Spenser   (16.05.2006 в 21:20)
 

Ну впринципе все правильно, только здесь:
$typedat = explode("|", $file[$i]);

$file[$i] замените на trim($file[$i]) это нужно чтобы убрать символы переноса строки в конце строки. Ну и explode замените на ту функцию что я написал, хотя если в самих данных символ | у вас точно не встречается, тогда этого можно и не делать.

   
 
 автор: Spenser   (16.05.2006 в 21:41)   письмо автору
 
   для: Евгений Петров   (16.05.2006 в 21:34)
 

А в функции user_explode надо что то менять?

   
 
 автор: Spenser   (16.05.2006 в 21:58)   письмо автору
 
   для: Евгений Петров   (16.05.2006 в 21:34)
 

пробывал Ваш скрипт все работает. а свой нет. я поменял строчки

$typedat = explode("|", $file[$i]); 

на

$typedat = explode("|", trim($file[$i])); 

не работает, потом

$typedat = explode("|", trim($file[$i])); 
$query = "INSERT INTO $userstable2(nametype, descrtype) VALUES('$typedat[0]', '$typedat[1]')";

заменил на

$typedat = explode("|", trim($file[$i])); 
$query = "INSERT INTO $userstable2(nametype, descrtype) VALUES('".mysql_escape_string($typedat[0])."','".mysql_escape_string($typedat[1])."')";

все равно не работает. в чем проблема???

   
 
 автор: Евгений Петров   (17.05.2006 в 14:31)   письмо автору
 
   для: Spenser   (16.05.2006 в 21:58)
 

Эмм, а что значит не работает? Ошибку какую то выдает?

   
 
 автор: Spenser   (18.05.2006 в 09:47)   письмо автору
 
   для: Евгений Петров   (17.05.2006 в 14:31)
 

Нет, ошибки не выдает. Просто не записывает в таблицу и все.

   
Rambler's Top100
вверх

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