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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск значения элемента массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Zuldek
Отправлено: 06 Ноября, 2010 - 20:52:34
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. while(list($id_page,$part)=mysql_fetch_array($pgs, MYSQL_NUM))
  2.           {
  3.             echo "<li><a href=index.php?id_page=$id_page>$part</a></li>";
  4.           }
  5.         } else puterror("Ошибка при обращении к блоку статей");

подскажите одно нужное значение $part, зная $id_page ?

(Отредактировано автором: 06 Ноября, 2010 - 21:06:34)

 
 Top
DlTA
Отправлено: 06 Ноября, 2010 - 22:16:06
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




совсем непонятна суть вопроса.
 
 Top
Zuldek
Отправлено: 06 Ноября, 2010 - 22:35:07
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




DlTA пишет:
совсем непонятна суть вопроса.


CODE (htmlphp):
скопировать код в буфер обмена
  1.       <?php
  2.        // Выводим список разделов
  3.        $query = "SELECT * FROM  ";
  4.        if($pgs = mysql_query($query))
  5.        {
  6.          while(list($id_page,$part)=mysql_fetch_array($pgs, MYSQL_NUM))
  7.          {
  8.            echo "<li><a href=index.php?id_page=$id_page>$part</a></li>";
  9.          }
  10.        } else puterror("Ошибка при обращении к блоку статей");
  11.      ?>


этим выражением записаны в массив два поля id_page и name таблицы artpage

И вот, дальше я и не могу сообразить, - как зная одно значение id_page (полученное из $_GET) найти соответствующее ему значение поля name таблицы artpage. В цикле while (значения поля name записываются в переменную $part).
Без дополнительного SQL-запроса конкретной строки в бд.
 
 Top
Саныч Модератор
Отправлено: 06 Ноября, 2010 - 22:46:10
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




А почем не сделать так?
PHP:
скопировать код в буфер обмена
  1. $query = 'SELECT name FROM таблица WHERE id_page='.$_GET['id'];


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
OrmaJever Модератор
Отправлено: 06 Ноября, 2010 - 23:06:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Саныч пишет:
А почем не сделать так?

PHP:
скопировать код в буфер обмена
  1. $query = 'SELECT name FROM таблица WHERE id_page='.mysql_escape_string($_GET['id']);

Подмигивание


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Zuldek
Отправлено: 06 Ноября, 2010 - 23:35:13
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Саныч пишет:
А почем не сделать так?
PHP:
скопировать код в буфер обмена

1.
$query = 'SELECT name FROM таблица WHERE id_page='.$_GET['id'];

Потому что фактически мы вторично запрашиваем у бд те данные которые уже есть.
Нужное значение name уже есть в массиве mysql_fetch_array($pgs, MYSQL_NUM), его нужно только выбрать както.
 
 Top
vitaliy_mad
Отправлено: 06 Ноября, 2010 - 23:39:58
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.          while($db=mysql_fetch_assoc($pgs))
  2.          {
  3.            echo "<li><a href=index.php?id_page=".$db['id'].">"$db['part']."</a></li>";
  4.          }

NAME будет равно $db['name']
 
 Top
Zuldek
Отправлено: 07 Ноября, 2010 - 11:07:01
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




vitaliy_mad пишет:
PHP:
скопировать код в буфер обмена
  1.          while($db=mysql_fetch_assoc($pgs))
  2.          {
  3.            echo "<li><a href=index.php?id_page=".$db['id'].">"$db['part']."</a></li>";
  4.          }

NAME будет равно $db['name']

Не $db['part'] а $db['name'].
как я писал в таблице 2 поля id и name ($part в моём скрипте просто присваивалось значение поля name)
И это понятно Улыбка, но нужно всего одно значение $db['name'], которое соответствует единственному значению $db['id'] в массиве. и оно будет выведено тут! -
CODE (htmlphp):
скопировать код в буфер обмена
  1. {
  2.            echo "<li><a href=index.php?id_page=".$db['id'].">"$db['part']."</a></li>";
  3.          }[/PHP]

Тут будут выведены вообще все $db['id'] и $db['part'] (читай name), а мне нужно только одно $db['part'] (читай значение поля name), которое соответствует одному значению $db['id'].

То есть в этом скрипте
1. - Я вывожу циклом while все значения двух полей этой таблицы (это список разделов сайта)
2. - У меня в $_GET хранится уникальное значение id этой же таблицы! И мне нужно вывести значение поля name этой таблицы, которое соответствует этому id!
Выше в пункте 1 я вывел уже это name, среди всех прочих в цикле while, а теперь нужно вывести всего одно нужное значение. Вот как это сделать без нового запроса в базу?

(Отредактировано автором: 07 Ноября, 2010 - 11:16:07)

 
 Top
JustUserR
Отправлено: 07 Ноября, 2010 - 12:54:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




OrmaJever пишет:
почем не сделать так?PHP: скопировать код в буфер обмена $query = 'SELECT name FROM таблица WHERE id_page='.mysql_escape_string($_GET['id']);
В случае если целевое интерполируемое значение в SQL-запрос представляет собой численную константу - то для проведения его обработки необходимо использование функции типа intval вместо операций повышения уровня экранирования - дело в том что позиции подстановки указанного элемента не включает в себя контейнерных кавычек и таким образом осуществление escape-экранирования может не обеспечить необходимого результата


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
OrmaJever Модератор
Отправлено: 07 Ноября, 2010 - 13:12:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Zuldek покажите структуру таблицы. Я уверен что то что вам нужно можно зделать в одном запросе


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Zuldek
Отправлено: 07 Ноября, 2010 - 13:37:06
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




OrmaJever пишет:
Zuldek покажите структуру таблицы. Я уверен что то что вам нужно можно зделать в одном запросе

artpage
------------------
id_page | name
------------------

объясните пожалуйста почему нельзя найти нужное значение в mysql_fetch_array($pgs, MYSQL_NUM) ведь оно там точно есть...

(Отредактировано автором: 07 Ноября, 2010 - 13:44:04)

 
 Top
OrmaJever Модератор
Отправлено: 07 Ноября, 2010 - 15:04:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




PHP:
скопировать код в буфер обмена
  1. $query = mysql_query('SELECT * FROM artpage WHERE id_page="'.mysql_escape_string($_GET['id']).'"');


Почему нельзя зделать так?

(Отредактировано автором: 07 Ноября, 2010 - 15:05:03)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Zuldek
Отправлено: 07 Ноября, 2010 - 21:29:22
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




OrmaJever пишет:
PHP:
скопировать код в буфер обмена
  1. $query = mysql_query('SELECT * FROM artpage WHERE id_page="'.mysql_escape_string($_GET['id']).'"');


Почему нельзя зделать так?


Можно, но, как я уже говорил, - это повторный запрос к бд. сам так в итоге и сделал.
 
 Top
JustUserR
Отправлено: 07 Ноября, 2010 - 21:35:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




OrmaJever пишет:
Почему нельзя зделать так?
Для каждого из хранимых в базе данных информационных полей обеспечивается внутренней представление согласно одному из встроенных типов - в случае использования целевого выборочного SQL-запроса осуществляющего получение информационных полей по заданному критерию необходимо указывать элеметные константы в соответсвии в оригинальным типом - в частности при использовании в качестве индексного и ключевого поля численного элемента осуществляющего автоматический инкремент - то операционное значене в сравнеии должно быть представлено также в виде целочисленной величины относительно SQL-запроса


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
OrmaJever Модератор
Отправлено: 07 Ноября, 2010 - 22:09:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Zuldek пишет:
Можно, но, как я уже говорил, - это повторный запрос к бд. сам так в итоге и сделал.

1) А зачем вобще первый запрос?
2) А где написано что к бд можно обращатся только 1 раз? Ну повторный и ладно


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB