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

Компьютерный форум 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

 

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

Ветеран


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

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


Coutty, respect !!!
Огромное спасибо, докладно пояснили все.. просто замечательно.
Но вот прописав такое - $menu1[0]="0"; reset($menu1); все равно глюк - первый элемент массива нулу равняется(
$menu1 = new Array(); - воооще не работает.
Но не беда. Я начал цикл со значения 1. И на самом начале прописал первому элемента массива первый элемент того массива из БД )
$menu1[0] = $categ['category'];

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

<? 

include ('config.php');
$result mysql_query("SELECT DISTINCT category , title, link FROM menu"$db);
$categ mysql_fetch_array($result);

$menu1[0]=$categ['category'];;
for (
$i=$sum=$categ mysql_fetch_array($result); $i++ ) {  
    if (isset(
$menu1) && !in_array($categ['category'], $menu1))   
    
$menu1[]=$categ['category']; 
}
    
print_r ($menu1);
    
?>

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


Отправлено: 00:54, 08-03-2008 | #11



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

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


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

Ветеран


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

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


Эх...
Усовершенствовал немного. Сделал ду вайл да и в боевых условиях проверил

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

<?php

include ('config.php');
$result mysql_query("SELECT DISTINCT category FROM menu"$db);
$categ mysql_fetch_array($result);

$i=0;
$menu1[0] = $categ['category'];
do {
printf ("<option value='$i'>%s</option>"$categ['category']);
if (isset(
$menu1) && !in_array($categ['category'], $menu1))   
    
$menu1[]=$categ['category']; 
    
$i++;
}
while (
$categ mysql_fetch_array($result));

print_r($menu1);

?>

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


Последний раз редактировалось Artem-Samsung, 08-03-2008 в 13:17.


Отправлено: 02:05, 08-03-2008 | #12


Аватара для Coutty

Кот Ти


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

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


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

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

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

Это не правильно) Тут две операции внутри блока if, поэтому надо ставить фигурные скобки)

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

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

do { 
printf ("<option value='$i'>%s</option>"$categ['category']); 
if (isset(
$menu1) && !in_array($categ['category'], $menu1))    
    
$menu1[]=$categ['category'];  
    
$i++; 

while (
$categ mysql_fetch_array($result)); 

Это ведь не должно работать, нэ? Смотри, сначала присваиваешь нулевое значение в $menu1, но ведь $categ ещё не "отфетчена_аррэем". Далее идёт исполнение блока, но переменной $categ всё ещё нет. И лишь после этого используется mysql_fetch_array();
Что, если написать вот так:
PHP код: Выделить весь код

$menu1[0] = 0;

while(
$categ mysql_fetch_array($result))  { 
if (isset(
$menu1) && !in_array($categ['category'], $menu1))    
    
$menu1[$i]=$categ['category'];  
printf ("<option value='$i'>%s</option>"$categ['category']); // этот кусок я тоже чуток не понял... Просто не в курсе, что оно делает:)
$i++; 


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

Отправлено: 15:18, 08-03-2008 | #13


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

Ветеран


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

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


Цитата Coutty:
Это не правильно) Тут две операции внутри блока if, поэтому надо ставить фигурные скобки) »
Да там должно в ифе выполняться только первая операция) Потому вроде все ок.
Вообщем с menu1 все просто замечтально))
PHP код: Выделить весь код

$result mysql_query("SELECT DISTINCT `category` FROM `menu`"$db);

$categ mysql_fetch_array($result);
$i 0$menu1[0] = $categ['category']; //категорії
do {
    
printf ("<option value='$i'>%s</option>"$categ['category']);
    if (isset(
$menu1) && !in_array($categ['category'], $menu1)) $menu1[]=$categ['category']; 
    
$i++;
} while (
$categ mysql_fetch_array($result)); 

Если интересно, то вся задумка - это вывод выпадающего меню. А программирую я селекты.
А вот меню2 у меня что-то вооще никак не получается (( Никак не хочет начинаться с нуля

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

$i=0;

$j=0;
$menu2[]=0;
do {
    
$result mysql_query("
    SELECT title, link FROM menu WHERE category = '$menu1[$i]'
    "
$db);
    
$menu mysql_fetch_array($result);
    do {
        
printf ("<option value='%s' class='%s'>%s</option>"$j$i$menu['title']); 
        
$j++;
        if (isset(
$menu2)) 
        
$menu2[$j]=$menu['link']; // пункти меню
    
}
    while (
$menu mysql_fetch_array($result));
    
$i++;



Вывод такой:
Первое меню: Array ( [0] => Література [1] => Кінофільми [2] => Комп.Ігри [3] => UA HPclub [4] => Спілкування [5] => Адміністратору )
Второе меню: Array ( [0] => 0 [1] => rowling [2] => books [3] => bb [4] => fanfics [5] => films [6] => film6 [7] => actors [8] => photo [9] => adventure [10] => quidditch [11] => passing [12] => about [13] => projects [14] => prophet [15] => partners [16] => forum [17] => chat [18] => gallery [19] => blogs [20] => menu [21] => news )

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


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


Аватара для Coutty

Кот Ти


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

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


Ну так очевидно, что с нуля оно и не начнётся. Смотри: сначала вызываешь $j++; а потом уже $menu2[$j]=$menu['link']; Т.е. к моменту присваивания j=1. Переложи в конец блока do{}
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:27, 11-03-2008 | #15


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

Ветеран


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

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


Спасибо большое! )) Аж стыдно) Конечно же счетчик должен включаться перед первым действием в цикле.

Я вот что бы новую тему не создавать таки осмелюсь в этой еще парочку вопросов задать.
К примеру:
После нажатия кнопки в форме у меня программа выполняет определенные действия:

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

<?php     

if (isset($_POST['SelectMenu'])) {
    
$menu $_POST['menu'];
}

// Дальше у меня появляется следующая форма после нажатие кнопки сабмит в предыдущей.
// И мне нужно использовать переменную $menu. Так как и в последующих формах.

if (isset($_POST['PreView'])){
    echo 
$menu;
}
?>



Но почему то данные в переменной не сохраняются.
Почему? Ведь оно присваивалось в определенной функции, которая успешно выполнялась. То есть в этой:
PHP код: Выделить весь код

if (isset($_POST['SelectMenu'])) {

    
$menu $_POST['menu'];


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


Последний раз редактировалось Artem-Samsung, 15-03-2008 в 19:16.


Отправлено: 19:06, 15-03-2008 | #16


Аватара для Coutty

Кот Ти


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

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


В начале скрипта выведи распечатку содержимого print_r($_POST); Посмотрим, может быть переменные по-другому размечены?

Но вообще я не понимаю зачем проверять каждый раз isset().
Может быть просто написать:
PHP код: Выделить весь код

if($_POST['SelectMenu']) { // если переменная содержит ненулевое и непустое значение

  
$menu $_POST['menu'];



Отправлено: 09:38, 16-03-2008 | #17


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

Ветеран


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

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


Я выкрутился применяя сессии ))) Все ок )

Кстати, если интерестно, то вот админка, которую я здесь так долго мучал:
http://uaclub.org/uahpadmin/update/
Можна даже покляцать, там все равно БД пока что левая))

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


Отправлено: 12:04, 16-03-2008 | #18



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

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

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




 
Переход