Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » замена значения элемента массива другим значением элемента..

Ответить
Настройки темы
замена значения элемента массива другим значением элемента..
MXM MXM вне форума

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем привет!
Ситуация:
Есть форма (низподающая меню), из которой выбирается интересующая позиция, данные по позициям берутся php-скриптом из текстового файла. В данном случае низподающая меню - выбор марок автомобилей. Выбрав интересующую марку пользователь кликает на Ok, далее данные передаются скрипту, который обрабатывает их и выводит ему, из другой тектовой базы, все авто соответсвующей данной марки.
Текстовые базы данных.
Код: Выделить весь код
 
(1-ая база, marks.txt, для низподающей меню), вид: 
... 
22;Mini; 
23;Cadillac; 
24;Lincoln; 
... 
(2-ая база, cars.txt), вид: 
... 
29;2;Murano 
28;3;Endeavor; 
27;23;Escalade 
26;23;SRX 
...
Связанны эти базы так: во 2-ой базе, 1-ый индекс равен 0-му индексу 1-ой базы, т.е.
Код: Выделить весь код
$cars[1]=$marks[0];
Проблема:
При выводе пользователю инфы по интересующей марке 1-ый индекс (2-ой базы) не заменяется на 0-ой индекс (1-ой базы).
К примеру, переменная, которая передаются из формы скрипту $mark, значение этой переменной 23, т.е. пользователю в браузере отображется так:
Код: Выделить весь код
23 Escalade 
23 SRX
, а должно быть:
Код: Выделить весь код
Cadillac Escalade 
Cadillac SRX
"Код в студию":
Код: Выделить весь код
$fp=fopen("data/marks.txt","r"); 
$marks=array(); 
$i=0; 
while(!feof($fp)) 
{$marks[$i]=fgets($fp,10000); 
 $i++;} 
fclose($fp); 
 
$fp=fopen("data/cars.txt","r"); 
$cars=array(); 
$i=0; 
while(!feof($fp)) 
{$str=" "; 
 $cars[$i]=fgets($fp,10000); 
 $pt=explode(";",$cars[$i]); 
 for($j=0;$j<count($marks);$j++) 
 {$mpt=explode(";",$marks[$j]); 
 *if($pt[1]==$mpt[0]) 
 *{$pt[1]=$mpt[1]; 
 * break;}} 
// $cars[$i]=implode(";",$pt); 
 $str=$str.";"; 
 $cars[$i]=$str.$cars[$i]; 
 $i++;} 
fclose($fp); 
 
sort($cars); 
$ncars=count($cars); 
 
$ndcars=array(); 
$counter=0; 
for($i=0;$i<$ncars;$i++) 
{$pt=explode(";",$cars[$i]); 
 if($pt[2]==$mark) 
 {$ndcars[$counter]=$cars[$i]; 
 *$counter++;}} 
 
$ncars=count($ndcars); 
 print "Всего авто - $ncars<br>"; 
 
for($i=0;$i<$ncars;$i++) 
{$pt=explode(";",$ndcars[$i]); 
 $id=$pt[1]; 
 $mark=$pt[2]; 
 $art=$pt[3]; 
 print "$mark $art<br>";}
Строку, которую я закомментировал, как раз она, если не ошибаюсь, отвечает за замену, но если её раскомментировать, то на экране ничего не отобразится...(
Вопрос:
В чём может быть причина? Что я делаю не так? Как это делается? Заранее спасибо!

Отправлено: 17:45, 19-05-2004

 

Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Мне нравится ваш стиль описания проблемы - мои респекты!
Теперь ближе к делу.
1) Мне также кажется странным способ организации данных - зачем во второй таблице первый (нулевой в сложившейся терминологии) индекс? Это id авто? Тогда лады, если нет - зачем он? Хотя он возможно не используется...
2) Зачем такой громоздкий скрипт? Представьте себе процесс передачи данных от посетителя к скрипту и вам станет ясно, что легче написать функцию которая по выбранной марке (ее номеру) сообщит все, что вам покажется необходимым сообщить (ведь во втором файле можно разместить не только названия авто, но и их другие характеристики). Например из описанной вами задачи получается нечто такое (разумеется без проверки данных и всего такого прочего):
Код: Выделить весь код
function GetAvtos($Mark)
  {
   $Out = '';
   $Cars  = file('data/cars.txt');

   foreach ($Cars as $Car)
     {
      $CarInfo = explode (';', $Car);
      if ($CarInfo[1] == $Mark)
        $Out .= $CarInfo[1].' '.$CarInfo[2].'<br>';
     }
   return $Out;
  }
Вызывать можно так или просто в какую-либо переменную для последующего вывода.
Код: Выделить весь код
echo (GetAvtos(23));
А можно изменить саму функцию, если оно необходимо...

Кстати, в php есть такая функция как
Цитата php manual:
fgetcsv - получает строку из указателя файла и разбирает её на CSV-поля.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 06:50, 20-05-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » замена значения элемента массива другим значением элемента..

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как получить индекс текущего элемента GUICtrlCreateListView malev AutoIt 5 20-10-2009 10:35
[решено] Сохранение содержимого элемента EDIT в текстовый файл snoitaleR AutoIt 3 25-07-2009 14:34
Выбор элемента из перечня на веб странице(елемент select) aesir AutoIt 2 30-04-2009 19:56
Разное - Составление процедуры для определения минимального элемента матрицы Boney Программирование и базы данных 1 27-05-2008 22:39
Выделение элемента в ListBox ramo Программирование и базы данных 3 07-02-2007 20:56




 
Переход