|
|
|
| В общем, привет всем... вряд ли меня здесь кто еще помнит, но когда-то я просил свой сайт (http://www.dp-life.ru/) оценить... Не важно.
Сделан он был коряво (текстовые файлы с информацией), что привело к перенагрузке сервера... Теперь вот переезжаю на MySQl, да кое-что на родном ПХП не получается...
Система должна вынимать информацию из файлов типажа artist12.txt и тп. В них хранится информация Альбом|~!|Песня|~!|№ песни|~!|Исполнитель|~!| Номер файла является номером исполнителя. Мне надо все это чудо вывести на экран, чтобы убедиться, что там все правильно, тогда я смогу со спокойной душой записать все это чудо в таблицу MySQL. Вот, что я написал:
<?php
for($i=1;$i<=1000;$i++)
{
$a = substr($i, 0, -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, 6 )!= "")
{
$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!!!.... | |
|
|
|
|
|
|
|
для: Diver
(16.08.2006 в 21:55)
| | Ты знаешь Дайвер, я даже и не знаю чем тебе помочь...
Давай подождем ответов более знающих людей...
Люди помогите хорошему человеку, плиз... | |
|
|
|
|
|
|
|
для: Anderson
(16.08.2006 в 22:20)
| | Андерсон, спасибо за поддержку. | |
|
|
|
|
|
|
|
для: Diver
(16.08.2006 в 21:55)
| | Дайте кусочек txt-файла, чтобы можно было воспроизвести ситуацию? | |
|
|
|
|
|
|
|
для: cheops
(16.08.2006 в 22:57)
| | Спасибочки!!!!!!!!!!
ARTIST7.txt
(2006)|~!|Ugly|~!|7|~!|Sugarbabes|~!|
(2006)|~!|Red Dress|~!|33|~!|Sugarbabes|~!|
В остальных обычно больше таких строк. | |
|
|
|
|
|
|
|
для: Diver
(16.08.2006 в 21:55)
| | А проблема заключается в том, что вы не обнуляете массив $info на каждой итерации цикла. В конце цикла for
<?php
if(substr($list123[$u], 1, 6 )!= "")
{
$info=explode('|~!|', $list123[$u]);
|
Следует уничтожать массив $info
чтобы в нём не ставались старые значения. | |
|
|
|
|
|
|
|
для: cheops
(17.08.2006 в 12:03)
| | Понимаешь, Cheops, это было то первое, что пришло мне в голову. Не помогает :(
Он же не последовательно запинается на номерах, а иногда через раз, иногда через ряд исполнитлей... Может, есть еще мылси на тему? Очень хотелось бы. | |
|
|
|
|
|
|
|
для: Diver
(17.08.2006 в 17:05)
| | Может оптимизировать скрипт? Зачем разобранная строка собирается по новой, а потом опять разбирается? unset() - поставьте в любом случае, это позволит избежать новых ошибок при модификации скрипта. | |
|
|
|
|
|
|
|
для: cheops
(17.08.2006 в 22:21)
| | Неплохая мысль, я в принципе только за. Но опыт в php у меня... Ну ты сам понял... Можешь лать совет/пример/схему или просто опиши, что должно получиться? Если бы я мог придумать что-нибудь получше, я бы не использовал эту схему для своего сайта вот уже полгода... | |
|
|
|
|
|
|
|
для: Diver
(18.08.2006 в 16:58)
| |
<?php
for($i=1;$i<=1000;$i++)
{
$a = substr($i, 0, -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 - это уникальные числа для всех записей и файлов? Если нет, то скрипт работает неправильно - у вас большая часть записей перезатирают друг друга. Посмотрите общее число записей в файлах и в результирующем массиве - если они не совпадают, лучше скрипт переписать. | |
|
|
|
|
|
|
|
для: cheops
(19.08.2006 в 12:01)
| | Спасибо большое | |
|
|
|