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

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] $_GET['']

Ответить
Настройки темы
[решено] $_GET['']

Аватара для Artem-Samsung

Ветеран


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

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


Вообщем написал я скрипт для того, что бы картинка менялась для каждого подраздела.
Но написать красиво я не смог, написал таким образом, что этот код нужно раз двадцать дублировать для разных разделов
у меня там actors, books, films

Система моя меню и подменю такая:
Например для раздела актеров
(В адресной строке)
?hp = actors //главный раздел
?actors=daniel //подраздел

PHP код: Выделить весь код

<?php


                        
if (isset($_GET['actors'])){
                                
$submenupic1 $_GET['actors'];
                        }else if(isset(        
$_GET['hp']) && $_GET['hp']=="actors") {
                                
$submenupic1 $_GET['hp'];
                        }else{
                                
$submenupic1 false;
                        }
                        if(
$submenupic1){
                                echo 
'<img src="';
                                echo 
"images/design/submenupics/".$submenupic1.".jpg";
                                echo 
'    " alt="" width="300" height="100" />';
                        }
?>

Хотелось бы сделать это все более универсальным, то есть значение actors в коде заменить на переменную, которая будет то book то films и так далее.
Сделаю переменную:$hp
$hp = array_keys($_GET);
Которую пропишу везде вместо акторс

PHP код: Выделить весь код

<?php


$hp 
array_keys($_GET);

                        if (isset(
$_GET['$hp[0]'])){
                                
$submenupic1 $_GET['$hp[0]'];
                        }else if(isset(        
$_GET['hp']) && $_GET['hp']=="$hp[0]") {
                                
$submenupic1 $_GET['hp'];
                        }else{
                                
$submenupic1 false;
                                echo 
"error <br>";
                                echo 
$hp[0];
                        }
                        if(
$submenupic1){
                                echo 
'<img src="';
                                echo 
"images/design/submenupics/".$submenupic1.".jpg";
                                echo 
'    " alt="" width="300" height="100" />';
                        }
?>

Выводит же на экран:
error
actors

То есть переменная помещает в себя правильну инфу, но возможно ошибка в участке кода типа:
$submenupic1 = $_GET['$hp[0]'];

-------
Мой блог Web Development


Отправлено: 23:46, 05-03-2008

 

Ночной странник


Contributor


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

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


$submenupic1 = $_GET[$hp[0]]; - пробовал?

в чем разница между одинарными и двойными кавычками в PHP?

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:50, 05-03-2008 | #2



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

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


Аватара для Artem-Samsung

Ветеран


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

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


Чудеса!!!! )) Заработало:
PHP код: Выделить весь код

$hp array_keys($_GET);


                        if (isset(
$_GET[$hp[0]])){
                                
$submenupic1 $_GET[$hp[0]];
                        }else if(isset(        
$_GET['hp']) && $_GET['hp']==$hp[0]) {
                                
$submenupic1 $_GET['hp'];
                        }else{
                                
$submenupic1 false;
                                echo 
"error <br>";
                                echo 
$hp[0];
                        }
                        if(
$submenupic1){
                                echo 
'<img src="';
                                echo 
"images/design/submenupics/".$submenupic1.".jpg";
                                echo 
'    " alt="" width="300" height="100" />';
                        } 


В моем понимании - разницы между одинарными и двойными нету. Но исползуют разные кавычки для того, что бы они в срединке не пересекались. То есть
printf ("asdasd asdasdads 'asdasdasd' ", sd); Внешние - двойные - внутри одинарные

-------
Мой блог Web Development


Отправлено: 23:54, 05-03-2008 | #3


Вредитель


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

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


Artem-Samsung, в двойных кавычках переменные парсятся а в одинарных нет. Например код
PHP код: Выделить весь код

$i=100;
echo 
"$i";
echo 
'$i'

выдаст
PHP код: Выделить весь код

100$i 


-------
Все сказаное является только моим личным мнением.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 06-03-2008 | #4


Аватара для Artem-Samsung

Ветеран


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

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


Спасибо. А не подскажете еще чуть-чуть?
Вообщем мне нужно заполнить одномерный массив значениями $menu1:

PHP код: Выделить весь код

$result mysql_query("SELECT DISTINCT title, link, category FROM menu"$db);

$categ mysql_fetch_array($result);

    for (
$i=$sum=$categ mysql_fetch_array($result); $i++ ) {
        
$menu1[]=$categ['category'];
    }
    
    
print_r ($menu1); 

Вроде бы все правильно, но получается фигня:
Array ( [0] => Література [1] => Література [2] => Література [3] => Кінофільми [4] => Кінофільми [5] => Кінофільми [6] => Азиев [7] => Кінофільми [8] => Комп.Ігри [9] => Комп.Ігри [10] => Комп.Ігри [11] => UA HPclub [12] => UA HPclub [13] => UA HPclub [14] => UA HPclub [15] => Спілкування [16] => Спілкування [17] => Спілкування [18] => Спілкування )

Как бы у меня там в БД много раз повторяется как Литература так и Кинофильмы, но я же написал DISTINCT чаво оно не работает. То есть мне нужно что бы значения не повторялись в массиве.

-------
Мой блог Web Development


Отправлено: 18:23, 06-03-2008 | #5


Аватара для Coutty

Кот Ти


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

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


PHP код: Выделить весь код

for ($i=$sum=$categ mysql_fetch_array($result); $i++ ) { 

        if (!
in_array($categ['category'], $menu1))
           
$menu1[]=$categ['category']; 
    } 

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:48, 06-03-2008 | #6


Аватара для Artem-Samsung

Ветеран


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

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


ухты какая загогулина. Я даже не знаю, как это озвучить О.о
if (!in_array($categ['category'], $menu1))
Но спасибо, попробую ща

-------
Мой блог Web Development


Отправлено: 21:47, 06-03-2008 | #7


Аватара для Coutty

Кот Ти


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

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


Да всё просто. Проверка: если значения $categ['category'] в массиве $menu1 ещё нет, значит записываем его туда. Иначе побоку.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:05, 06-03-2008 | #8


Аватара для Artem-Samsung

Ветеран


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

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


Большое спасибо, со своей задачей скрипт справляется, но таки выводится на экран ошибка:

Notice: Undefined variable: menu1 in z:\home\localhost\www\uahpclubphp\test.php on line 9
[Денвер: показать возможную причину ошибки]
Warning: in_array(): Wrong datatype for second argument in z:\home\localhost\www\uahpclubphp\test.php on line 9
Array ( [0] => Література [1] => Кінофільми [2] => фывфыв [3] => Комп.Ігри [4] => UA HPclub [5] => Спілкування )

В строке
PHP код: Выделить весь код

if (!in_array($categ['category'], $menu1)) 


То есть как бы не существует еще эта переменная, а мы ее проверяем.
Я пробовал прописать ей в начале значение ноль, но все равно не получается.
Единственным выходом является добисать еще одно условие:
PHP код: Выделить весь код

if (isset($menu1)) {

           if (!
in_array($categ['category'], $menu1)) 
           
$menu1[]=$categ['category']; 


Хотя нет, та штука не получается так как меню1 изначально и не должно было быть... эх.. запутался

А, и ее вопрос. Вы так как то интересно записали условие if без кавычек фигурных, нигде не втречал такого. Когда можна эти кавычки не ставить, я то уверен, что не во всех случаях без кавычек сработает

Ухтышка, нашел способ еще один:
сделать выборку таким вот образом:
$result = mysql_query("SELECT DISTINCT category , title, link FROM menu GROUP BY category", $db);
И все получается, без дополнительно условия. Но все же вариант с усовием мне тоже интересен.

Просто прописав таким образом выбока оно как-то перемешалось:
Точнее упорядочилось по алфавиту

Array ( [0] => Комп.Ігри [1] => Кінофільми [2] => Література [3] => Спілкування )

Да и UA HPclub ячейка пропала

-------
Мой блог Web Development


Отправлено: 13:27, 07-03-2008 | #9


Аватара для Coutty

Кот Ти


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

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


Artem-Samsung, я не понял, в этом сообщении содержится вопрос или уже нет?)) Вот кроме этого:
Цитата Artem-Samsung:
Вы так как то интересно записали условие if без кавычек фигурных, нигде не втречал такого. Когда можна эти кавычки не ставить, я то уверен, что не во всех случаях без кавычек сработает »
После if, else, for и подобных исполняется один блок кода. Блок кода в данном случае - это либо одна команда, либо набор команд, заключённый в фигурные скобки. Т.е. для одной строчки можно не ставить скобки)
Цитата Artem-Samsung:
но таки выводится на экран ошибка: »
Там не ошибка, а уведомление и предупреждение)

if (isset($menu1)) {
if (!in_array($categ['category'], $menu1))
$menu1[]=$categ['category'];
}

это можно покомпактнее записать:
PHP код: Выделить весь код

if (isset($menu1) && !in_array($categ['category'], $menu1))  

    
$menu1[]=$categ['category']; 

Цитата Artem-Samsung:
Я пробовал прописать ей в начале значение ноль, но все равно не получается. »
Каким образом? $menu1 = 0; ? Так не выйдет) Можно так: $menu1[0]="0"; reset($menu1); (т.е. сбрасываем внутренний указатель в массиве на начало).
Или вот так: $menu1 = new Array(); (беру по аналогии с JavaScript'ом - не знаю, работает ли это в PHP).

Отправлено: 14:59, 07-03-2008 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] $_GET['']

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как сделать обработку $_GET и сборку html-документа екзешником, как multitran.ru? borg92 Вебмастеру 1 13-08-2009 10:23
массив $_GET как его обработать darksmoke Вебмастеру 11 29-03-2008 00:53




 
Переход