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

Форум PHP

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

 

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

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

тема: Запись в csv фаил =)
 
 автор: gwest   (22.04.2005 в 14:05)   письмо автору
 
 

Код работает вот только в файл записывается последний элемент.
Смысл :
Достаем данные из базы и проверяем, если фаил в который нужно записать эти данные не существует, то мы его создаем, иначе просто дозаписываем !
У меня результат такой: Например данные в базе Иванов 2, Петров 3, Сидоров 6.
В фаил записывается только Сидоров 6.

<?
$open 
mysql_query("select * from subject where value>0 and sid='$sid';");
if(
$open)
{
while(
$data mysql_fetch_array($open))
$str="$data[name_subject];$data[value]";
$file_open=file_exists("$sid.csv");
 if(!
$file_open)
   {
   
$file=fopen("$sid.csv","w");
      if(
$file)
      {
       
fputs($file$str);
      }
   }
   else
   {
   
$file=fopen("$sid.csv","a");
      if(
$file)
      {
      
fputs($file$str);
      }
   }
}
?>

Код вроде правильный!

   
 
 автор: cheops   (22.04.2005 в 15:49)   письмо автору
 
   для: gwest   (22.04.2005 в 14:05)
 

Следует закрывать файл
<? 
$open 
mysql_query("select * from subject where value>0 and sid='$sid';"); 
if(
$open

while(
$data mysql_fetch_array($open)) 
$str="$data[name_subject];$data[value]"
$file_open=file_exists("$sid.csv"); 
if(!
$file_open
   { 
   
$file=fopen("$sid.csv","w"); 
      if(
$file
      { 
       
fputs($file$str); 
      } 
   
fclose($file);
   } 
   else 
   { 
   
$file=fopen("$sid.csv","a"); 
      if(
$file
      { 
      
fputs($file$str); 
      } 
   
fclose($file);
   } 

?>

А лучше вообще вынести открытие/закрытие за пределы цикла.

PS Поле sid у всех записей одинаковое?

   
 
 автор: gwest   (22.04.2005 в 17:25)   письмо автору
 
   для: cheops   (22.04.2005 в 15:49)
 

Сделал как ты сказал, всеравно тоже самое записывает!
И поле sid у всех записей одинаковое.

   
 
 автор: isset   (22.04.2005 в 17:35)   письмо автору
 
   для: gwest   (22.04.2005 в 17:25)
 

У вас пропущены { и } у while, а значит цикл выполняет только:

$str="$data[name_subject];$data[value]";

А надо:

<?
$open 
mysql_query("select * from subject where value>0 and sid='$sid';");
if(
$open)
{
while(
$data mysql_fetch_array($open))
{
$str="$data[name_subject];$data[value]";
$file_open=file_exists("$sid.csv");
if(!
$file_open)
   {
   
$file=fopen("$sid.csv","w");
      if(
$file)
      {
       
fputs($file$str);
      }
   
fclose($file);
   }
   else
   {
   
$file=fopen("$sid.csv","a");
      if(
$file)
      {
      
fputs($file$str);
      }
   
fclose($file);
   }
}
}
?> 

   
 
 автор: gwest   (22.04.2005 в 18:04)   письмо автору
 
   для: isset   (22.04.2005 в 17:35)
 

Ага... Зароботало !
Вот только записывается в ячейки в одной строке, хотелось бы чтобы строки менялись.

   
 
 автор: $OMEGA   (22.04.2005 в 20:44)   письмо автору
 
   для: gwest   (22.04.2005 в 18:04)
 

Маленький совет - не надо файл открывать два раза: атрибут а или а+, в случае отсутствия файла- создает его, а для построчного ввода удобнее помоему использовать цикл for, но как говорится, на вкус и цвет...

   
 
 автор: cheops   (22.04.2005 в 22:10)   письмо автору
 
   для: gwest   (22.04.2005 в 18:04)
 

Для этого необходимо добавить перевод строки \r\n
<?php
       fputs
($file$str."\r\n");
?>

   
Rambler's Top100
вверх

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