Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Организация линка
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Организация линка

Страниц (2): [1] 2 »
 

1. VladisOK - 12 Июня, 2007 - 12:33:37 - перейти к сообщению
Задача стоит следующая:

В рабочий сайт надо добавить выподающее меню со списком производителей
и из него производить запросы для сортировки выводов страниц по производителю

Действия:
Создана таблица:
================================ =====
CREATE TABLE `firm` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`pict` varchar(100) NOT NULL default '',
`ord` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
================================ =====
Создан PHP код с выподающем меню:
================================ ==

echo " <table width="173" align="center" border="0">n";
echo " <tr>n";
echo " <td class=gray align=right>Производитель :</td>n";
echo " <td class=gray><select name=name size=1>n";
$query = "SELECT name FROM firm ";
if($name = mysql_query($query))
{
while(list($id_firm)=mysql_fetch_array($name))
{
echo "<option value='index.php?lang=$lang&p=$p&id_type=$id_type&id_subtype=$id_subtype&id_firm=$id_firm'>" . $id_firm . "</option>";
}
} else puterror("error");
echo " </select></td>n";
echo " </table>";

================================ =============

Результат:

Выводиться выподающее меню со списком производителей - но не производится вывод страниц
отсортированных по производителю ( т.е. не работает линк )

Если в адресной строке дописать к имеющемуся линку:
index.php?lang=ru&p=4&id_type=1&id_subtype=213
(который выводит страницы не отсортированный по производителю)
&id_firm=27 ( где 27 это id )
то получим желаемый результат - выводятся страницы отсортированный по производителю

Вывод:

Выподающее меню сделано правильно, а вот линк в меню организован не правильно

Прошу:

Указать на ошибку

P.S. За ранее благодарен
2. evgenijj - 12 Июня, 2007 - 12:52:43 - перейти к сообщению
Цитата:
Прошу: Указать на ошибку

Это не ошибка - это полное непонимание того, что делаешь. Почему браузер должен переходить по этому линку? Где это написано?

<select name="name" onChange="location.href=this.options[selectedIndex].value">
<option value="index.php?id=1">1</option>
<option value="index.php?id=2">2</option>
<option value="index.php?id=3">3</option>
</select>
3. VladisOK - 12 Июня, 2007 - 13:08:48 - перейти к сообщению
evgenijj пишет:
Цитата:
Прошу: Указать на ошибку

Это не ошибка - это полное непонимание того, что делаешь. Почему браузер должен переходить по этому линку? Где это написано?

<select name="name" onChange="location.href=this.options[selectedIndex].value">
<option value="index.php?id=1">1</option>
<option value="index.php?id=2">2</option>
<option value="index.php?id=3">3</option>
</select>


Ты имеешь ввиду:
================================ =============
echo " <table width="173" align="center" border="0">n";
echo " <tr>n";
echo " <td class=gray align=right>Производитель :</td>n";
echo " <td class=gray><select name=name location.href=this.options[selectedIndex].value size=1>n";
$query = "SELECT name FROM firm ";
if($name = mysql_query($query))
{
while(list($id_firm)=mysql_fetch_array($name))

{
echo "<option value='index.php?lang=$lang&p=$p&id_type=$id_type&id_subtype=$id_subtype&id_firm=$id_firm'>" . $id_firm . "</option>";
}
} else puterror("error");
echo " </select></td>n";
echo " </table>";
================================ ====
Так тоже не работает
4. evgenijj - 12 Июня, 2007 - 13:14:05 - перейти к сообщению
VladisOK пишет:

Так тоже не работает

У меня работает.
5. VladisOK - 12 Июня, 2007 - 13:16:39 - перейти к сообщению
evgenijj пишет:
VladisOK пишет:

Так тоже не работает

У меня работает.


Может у меня каких-то кавычек не хватает
6. evgenijj - 12 Июня, 2007 - 13:19:11 - перейти к сообщению
VladisOK пишет:

Может у меня каких-то кавычек не хватает

Очень даже может быть.
Третий раз сегодня даю эту ссылку: http://phpfaq[dot]ru/na_tanke
Цитата:

PHP формирует HTML код! И этот код ЗНАЧИТЕЛЬНО отличается от того изображения, которое вы видите на экране. Если у вас что-то не получается, то надо всегда смотреть именно ИСХОДНЫЙ код страницы, а не то, как вам ее рисует браузер. В браузере Internet Explorer исходный код можно посмотреть, выбрав в меню Вид - Просмотр HTML-кода.
Если у вас не работает яваскрипт, сформированный PHP скриптом, или html показывает не то, что вы хотите, то исправить эту проблему очень просто.
1. Сначала пишете нужный яваскрипт или html руками. Если у вас с этим проблемы - обратитесь в соотвествующий форум - по яваскрипту или html. PHP тут не при чём.
2. Сравниваете с тем, что получено из PHP
3. Вносите исправления в PHP скрипт, чтобы текст, отдаваемый им, не отличался от написанного руками.

<select name="name" onChange="location.href=this.options[selectedIndex].value">
<option value="index.php?id=1">1</option>
<option value="index.php?id=2">2</option>
<option value="index.php?id=3">3</option>
</select>

И посмотри, что у тебя
<select name=name location.href=this.options[selectedIndex].value size=1>
7. VladisOK - 12 Июня, 2007 - 13:26:48 - перейти к сообщению
evgenijj пишет:
VladisOK пишет:

Может у меня каких-то кавычек не хватает

Очень даже может быть.
Третий раз сегодня даю эту ссылку: http://phpfaq[dot]ru/na_tanke
Цитата:

PHP формирует HTML код! И этот код ЗНАЧИТЕЛЬНО отличается от того изображения, которое вы видите на экране. Если у вас что-то не получается, то надо всегда смотреть именно ИСХОДНЫЙ код страницы, а не то, как вам ее рисует браузер. В браузере Internet Explorer исходный код можно посмотреть, выбрав в меню Вид - Просмотр HTML-кода.
Если у вас не работает яваскрипт, сформированный PHP скриптом, или html показывает не то, что вы хотите, то исправить эту проблему очень просто.
1. Сначала пишете нужный яваскрипт или html руками. Если у вас с этим проблемы - обратитесь в соотвествующий форум - по яваскрипту или html. PHP тут не при чём.
2. Сравниваете с тем, что получено из PHP
3. Вносите исправления в PHP скрипт, чтобы текст, отдаваемый им, не отличался от написанного руками.

<select name="name" onChange="location.href=this.options[selectedIndex].value">
<option value="index.php?id=1">1</option>
<option value="index.php?id=2">2</option>
<option value="index.php?id=3">3</option>
</select>

И посмотри, что у тебя
<select name=name location.href=this.options[selectedIndex].value size=1>


Ты прав братишка пиво ( хоть и жарко ) надо меньше пить Улыбка
Да работает, но не доконца - в адресной строке пишент так:

index.php?lang=ru&p=4&id_type=1&id_subtype=213&id_firm=Ariston

а надо:

index.php?lang=ru&p=4&id_type=1&id_subtype=213&id_firm=27
8. evgenijj - 12 Июня, 2007 - 13:29:38 - перейти к сообщению
Издеваешься?

<select name="name" onChange="location.href=this.options[selectedIndex].value">
9. VladisOK - 12 Июня, 2007 - 13:41:36 - перейти к сообщению
evgenijj пишет:
Издеваешься?

<select name="name" onChange="location.href=this.options[selectedIndex].value">


Нее всё нормально - работает, но не до конца не переводит name в id

index.php?lang=ru&p=4&id_type=1&id_subtype=213&id_firm=Ariston
а надо index.php?lang=ru&p=4&id_type=1&id_subtype=213&id_firm=27

в таблице FIRM, поле NAME - Ariston а id - 27
10. evgenijj - 12 Июня, 2007 - 13:49:08 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT id, name FROM firm ";
  3. if($res = mysql_query($query))
  4. {
  5.   while($firm=mysql_fetch_array($res))
  6.   {
  7.     echo "<option value='index.php?id_firm=" . $firm["id"] . "'>" . $firm["name"] . "</option>";
  8.   }
  9. }
  10. else puterror("error");
  11.  
11. Стас - 12 Июня, 2007 - 14:14:44 - перейти к сообщению
evgenijj пишет:
firm

$firm вроде....
12. evgenijj - 12 Июня, 2007 - 14:18:30 - перейти к сообщению
Стас пишет:
evgenijj пишет:
firm

$firm вроде....

Да, исправил.
13. VladisOK - 12 Июня, 2007 - 14:28:51 - перейти к сообщению
evgenijj пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT id, name FROM firm ";
  3. if($res = mysql_query($query))
  4. {
  5.   while($firm=mysql_fetch_array($res))
  6.   {
  7.     echo "<option value='index.php?id_firm=" . $firm["id"] . "'>" . $firm["name"] . "</option>";
  8.   }
  9. }
  10. else puterror("error");
  11.  


неа вобще стопор - мне кажется надо в WHERE что-то замутить типо WHERE id='$name' - но так не работает
14. evgenijj - 12 Июня, 2007 - 14:41:05 - перейти к сообщению
Тяжело с тобой. Это не тот код, который надо скопировать и вставить. Это код, который объясняет, КАК надо делать. Чтобы ты внимательно изучил, а потом сделал по аналогии.
В таблице firm у нас есть поля
id - уникальный идентификатор фирмы
name - ее название
PHP:
скопировать код в буфер обмена
  1.  
  2. 1 | ООО "Рога и копыта"
  3. 2 | ЗОО "Геркулес"
  4.  

Чтобы получить все фирмы, делаем запрос
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT id, name FROM firm WHERE 1 ORDER BY name";
  3. if ($res = mysql_query( $query ) )
  4. {
  5.   // Выводим содержимое тега <select>
  6.    while($firm=mysql_fetch_array($res))
  7.    {
  8.      echo "<option value='index.php?id_firm=" . $firm["id"] . "'>" . $firm["name"] . "</option>";
  9.    }
  10. }
  11.  

Переменная $firm["id"] содержит уникальный идентификатор текущей фирмы
Переменная $firm["name"] - название текущей фирмы

Если тебе нужны дополнительные данные о фирме, изменяем запрос
$query = "SELECT id, name, director FROM firm WHERE 1 ORDER BY name";
Соответственно, фамилия директора текущей фирмы будет доступна внутри цикла как значение переменной $firm["director"]
15. VladisOK - 12 Июня, 2007 - 15:19:21 - перейти к сообщению
Спасибо за примеры. Но в данном случае всё работает, кроме "превращения" name в id.
Я понимаю, что сейчас уже проблема только в запросе где надо сформулировать, что поле NAME должно быть равно полю ID. Пробую - пока не получается

 

Powered by ExBB FM 1.0 RC1