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

Форум PHP

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

 

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

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

тема: php меня не понимает... по неизвестной причине
 
 автор: Diver   (16.08.2006 в 21:55)   письмо автору
 
 

В общем, привет всем... вряд ли меня здесь кто еще помнит, но когда-то я просил свой сайт (http://www.dp-life.ru/) оценить... Не важно.

Сделан он был коряво (текстовые файлы с информацией), что привело к перенагрузке сервера... Теперь вот переезжаю на MySQl, да кое-что на родном ПХП не получается...

Система должна вынимать информацию из файлов типажа artist12.txt и тп. В них хранится информация Альбом|~!|Песня|~!|№ песни|~!|Исполнитель|~!| Номер файла является номером исполнителя. Мне надо все это чудо вывести на экран, чтобы убедиться, что там все правильно, тогда я смогу со спокойной душой записать все это чудо в таблицу MySQL. Вот, что я написал:


<?php

for($i=1;$i<=1000;$i++)
{

  
$a substr($i0, -3);
  if(
$a==""){$a="";}
  
$b="000";
  
$c="$a$b";

  
$user1 file("music/info/artists/artists$c/artist$i.txt");

$tlis 0;
    for(
$mp=sizeof($user1)-1;$mp>=0;$mp--){
        
$mop explode("|~!|",$user1[$mp]);
        
$opp[$mp] = "$mop[0]|~!|$mop[1]|~!|$mop[2]|~!|$mop[3]";
        
$list123[$tlis] = $opp[$mp];
        
$tlis++; 
    }

$stop=count($list123);
for (
$u=0$u<=$stop$u++){
if(
substr($list123[$u], 1)!= "")
{
$info=explode('|~!|'$list123[$u]);
  
  
  
$albumv $info[0];
  
$song_namev $info[1];
  
$song_numv $info[2];
  
$author_namev $info[3];
  
$k $song_numv;


$albumv addslashes($albumv);
$song_namev addslashes($song_namev);
$author_namev addslashes($author_namev);

$artist_num[$k] = $i;
$album[$k] = $albumv;
$song_name[$k] = $song_namev;
$author_name[$k] = $author_namev;

}
}
}

for(
$f=0;$f<9507;$f++)
{
echo 
"[$f] => ";
echo 
"$author_name[$f] $artist_num[$f]<br>";
}

?>



Проблема в том, что вся информация заносится вроде правильно, кроме номера исполнителя. Он периодически повторяется у разных исполнителей (Depeche Mode - 8, Rasmus - 8)

Помогите, пожалуйста!! Наверняка я допустил где-нить какую-нибудь ошибку, но я ее уже второй день не могу вычислить! PLEASE!!!....

   
 
 автор: Anderson   (16.08.2006 в 22:20)   письмо автору
 
   для: Diver   (16.08.2006 в 21:55)
 

Ты знаешь Дайвер, я даже и не знаю чем тебе помочь...
Давай подождем ответов более знающих людей...
Люди помогите хорошему человеку, плиз...

   
 
 автор: Diver   (17.08.2006 в 01:51)   письмо автору
 
   для: Anderson   (16.08.2006 в 22:20)
 

Андерсон, спасибо за поддержку.

   
 
 автор: cheops   (16.08.2006 в 22:57)   письмо автору
 
   для: Diver   (16.08.2006 в 21:55)
 

Дайте кусочек txt-файла, чтобы можно было воспроизвести ситуацию?

   
 
 автор: Diver   (16.08.2006 в 23:00)   письмо автору
 
   для: cheops   (16.08.2006 в 22:57)
 

Спасибочки!!!!!!!!!!

ARTIST7.txt
(2006)|~!|Ugly|~!|7|~!|Sugarbabes|~!|
(2006)|~!|Red Dress|~!|33|~!|Sugarbabes|~!|

В остальных обычно больше таких строк.

   
 
 автор: cheops   (17.08.2006 в 12:03)   письмо автору
 
   для: Diver   (16.08.2006 в 21:55)
 

А проблема заключается в том, что вы не обнуляете массив $info на каждой итерации цикла. В конце цикла for
<?php
if(substr($list123[$u], 1)!= ""

$info=explode('|~!|'$list123[$u]);

Следует уничтожать массив $info
<?php
unset($info);
?>

чтобы в нём не ставались старые значения.

   
 
 автор: Diver   (17.08.2006 в 17:05)   письмо автору
 
   для: cheops   (17.08.2006 в 12:03)
 

Понимаешь, Cheops, это было то первое, что пришло мне в голову. Не помогает :(
Он же не последовательно запинается на номерах, а иногда через раз, иногда через ряд исполнитлей... Может, есть еще мылси на тему? Очень хотелось бы.

   
 
 автор: cheops   (17.08.2006 в 22:21)   письмо автору
 
   для: Diver   (17.08.2006 в 17:05)
 

Может оптимизировать скрипт? Зачем разобранная строка собирается по новой, а потом опять разбирается? unset() - поставьте в любом случае, это позволит избежать новых ошибок при модификации скрипта.

   
 
 автор: Diver   (18.08.2006 в 16:58)   письмо автору
 
   для: cheops   (17.08.2006 в 22:21)
 

Неплохая мысль, я в принципе только за. Но опыт в php у меня... Ну ты сам понял... Можешь лать совет/пример/схему или просто опиши, что должно получиться? Если бы я мог придумать что-нибудь получше, я бы не использовал эту схему для своего сайта вот уже полгода...

   
 
 автор: cheops   (19.08.2006 в 12:01)   письмо автору
 
   для: Diver   (18.08.2006 в 16:58)
 

<?php

for($i=1;$i<=1000;$i++) 


  
$a substr($i0, -3); 
  if(
$a==""){$a="";} 
  
$b="000"
  
$c="$a$b"

  
$user1 file("music/info/artists/artists$c/artist$i.txt"); 

  for (
$u=0$u<=count($user1); $u++)
  { 
    if(!empty(
$user1[$u])) 
    { 
      
$info explode('|~!|'$user1[$u]); 
      
$k $info[2]; 

      
$artist_num[$k]  = $i
      
$album[$k]       = addslashes($info[0]); 
      
$song_name[$k]   = addslashes($info[1]);
      
$author_name[$k] = addslashes($info[3]); 

      unset(
$info)
    } 
  } 


for(
$f=0;$f<9507;$f++) 

  echo 
"[$f] => "
  echo 
"$author_name[$f] $artist_num[$f]<br>"

?>

ARTIST7.txt
(2006)|~!|Ugly|~!|7|~!|Sugarbabes|~!|
(2006)|~!|Red Dress|~!|33|~!|Sugarbabes|~!|
А числа 7, 33 - это уникальные числа для всех записей и файлов? Если нет, то скрипт работает неправильно - у вас большая часть записей перезатирают друг друга. Посмотрите общее число записей в файлах и в результирующем массиве - если они не совпадают, лучше скрипт переписать.

   
 
 автор: Diver   (21.08.2006 в 21:14)   письмо автору
 
   для: cheops   (19.08.2006 в 12:01)
 

Спасибо большое

   
Rambler's Top100
вверх

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