[решено] $_GET['']

Аватара пользователя
Artem-Samsung

[решено] $_GET['']

Сообщение Artem-Samsung »

Вообщем написал я скрипт для того, что бы картинка менялась для каждого подраздела.

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

у меня там actors, books, films



Система моя меню и подменю такая:

Например для раздела актеров

(В адресной строке)

?hp = actors //главный раздел

?actors=daniel //подраздел



Код: Выделить всё

<?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



$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]'];
Аватара пользователя
Artem-Samsung

Re: [решено] $_GET['']

Сообщение Artem-Samsung »

Coutty, respect !!!

Огромное спасибо, докладно пояснили все.. просто замечательно.

Но вот прописав такое - $menu1[0]="0"; reset($menu1); все равно глюк - первый элемент массива нулу равняется(

$menu1 = new Array(); - воооще не работает.

Но не беда. Я начал цикл со значения 1. И на самом начале прописал первому элемента массива первый элемент того массива из БД )

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



Код: Выделить всё

<? 

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=1 , $sum=0 ; $categ = mysql_fetch_array($result); $i++ ) {  

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

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

}

    print_r ($menu1);

    

?>
Аватара пользователя
Artem-Samsung

Re: [решено] $_GET['']

Сообщение Artem-Samsung »

Чудеса!!!! )) Заработало:



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 
";

                                echo $hp[0];

                        }

                        if($submenupic1){

                                echo '';

                        } 








В моем понимании - разницы между одинарными и двойными нету. Но исползуют разные кавычки для того, что бы они в срединке не пересекались. То есть

printf ("asdasd asdasdads 'asdasdasd' ", sd); Внешние - двойные - внутри одинарные
Аватара пользователя
Vlad Drakula

Re: [решено] $_GET['']

Сообщение Vlad Drakula »

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



в чем разница между одинарными и двойными кавычками в PHP?
Аватара пользователя
DedAlex

Re: [решено] $_GET['']

Сообщение DedAlex »

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

PHP код:

Код: Выделить всё

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






выдаст

PHP код:

Код: Выделить всё

100$i 



Аватара пользователя
Artem-Samsung

Re: [решено] $_GET['']

Сообщение Artem-Samsung »

Спасибо. А не подскажете еще чуть-чуть?

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





PHP код:

Код: Выделить всё

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

$categ = mysql_fetch_array($result);



    for ($i=0 , $sum=0 ; $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 чаво оно не работает. То есть мне нужно что бы значения не повторялись в массиве.
Аватара пользователя
Coutty

Re: [решено] $_GET['']

Сообщение Coutty »

PHP код:

Код: Выделить всё

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

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

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

    } 



Аватара пользователя
Artem-Samsung

Re: [решено] $_GET['']

Сообщение Artem-Samsung »

ухты какая загогулина. Я даже не знаю, как это озвучить О.о

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

Но спасибо, попробую ща
Аватара пользователя
Coutty

Re: [решено] $_GET['']

Сообщение Coutty »

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

Re: [решено] $_GET['']

Сообщение Artem-Samsung »

Artem-Samsung, я не понял, в этом сообщении содержится вопрос или уже нет?)) Вот кроме этого:


Цитата Artem-Samsung:



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




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



но таки выводится на экран ошибка:
[решено] $_GET['']




Там не ошибка, а уведомление и предупреждение)



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:



Я пробовал прописать ей в начале значение ноль, но все равно не получается.
[решено] $_GET['']




Каким образом? $menu1 = 0; ? Так не выйдет) Можно так: $menu1[0]="0"; reset($menu1); (т.е. сбрасываем внутренний указатель в массиве на начало).

Или вот так: $menu1 = new Array(); (беру по аналогии с JavaScript'ом - не знаю, работает ли это в PHP).
Ответить

Вернуться в «Вебмастеру»