Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > не пойму в чем ошибка


Автор: Shark 17.6.2011, 06:29
есть такая строка в классе:
Код

        public $tank_usa = array
            (    "Легкие танки" => array("T1 Cunningham", "M2 Light Tank", "M3 Stuart", "M5 Stuart"),


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

                            foreach($Option_admin->tank_usa as $key => $type)
                                {
                                    echo "<ul style='color:#FF0000'>".$key;
                                    foreach($type as $Option_admin->tank_usa)
                                        {    echo "<li><a href=?tank=".$Option_admin->tank_usa.">".$Option_admin->tank_usa."</a></li>";    }
                                    echo "</ul>";
                                }


но линк получается такой localhost/wot/admin/index.php?tank=T1

как сделать так чтоб линк был localhost/wot/admin/index.php?tank=T1%20Cunningham, чтоб через ГЕТ можно было передать название

Добавлено через 1 минуту и 38 секунд
или придется создавать БД где будут храниться записи танков их ИД, и к какому классу принадлежат (легкие, средние, тяжелые и т.д)?

Автор: Shark 17.6.2011, 07:02
сделал так:
1. в классе все пробелы заменил на %20 (делает символ пробела)
2. на выводе пропустил через str_replace

так правильно, или все же есть более лучший способ?

Автор: skyboy 17.6.2011, 07:25
Цитата(Shark @  17.6.2011,  05:29 Найти цитируемый пост)
foreach($Option_admin->tank_usa
...
foreach($type as $Option_admin->tank_usa)

Это ты так зачем?
По вопросу: посмотри сформированный HTML, а не просто открой его в браузере(знаешь, как смотреть "Исходный код страницы"?) - там увидишь, что " Cunningham" никуда не делось.

Автор: Shark 17.6.2011, 13:02
Цитата(skyboy @  17.6.2011,  07:25 Найти цитируемый пост)
foreach($Option_admin->tank_usa...foreach($type as $Option_admin->tank_usa)

Это длдя такого вывода:
Легкие танки
* ...
* ...
и т.д.

если захочешь посмотреть, скрин вечером могу сделать smile

по вопросу, посмотреть могу... но смысл смотреть если там все как надо ?

Автор: baldina 17.6.2011, 13:45
http://www.php.net/manual/ru/function.urlencode.php

Автор: solenko 17.6.2011, 14:27
Код

echo "<li><a href='?tank=".$Option_admin->tank_usa."'>".$Option_admin->tank_usa."</a></li>";

Достаточно взять в кавычки -- остальное сделает за вас браузер

Автор: Shark 17.6.2011, 21:36
solenko, если бы все было бы так просто, я бы не спрашивал smile... я же перед тем как спросить, проверю все smile

Автор: solenko 17.6.2011, 23:52
Код

<a href="http://www.google.ru/#q=а может таки проверить еще раз?">test</a>

Автор: skyboy 18.6.2011, 00:18
Цитата(Shark @  17.6.2011,  20:36 Найти цитируемый пост)
я же перед тем как спросить, проверю все

Цитата(Shark @  17.6.2011,  05:29 Найти цитируемый пост)
 echo "<li><a href=?tank=".$Option_admin->tank_usa.">".$Opti

ну, и где кавычки вокруг значения аттрибута?
<a href=localhost/wot/admin/index.php?tank=T1 Cunningham>
браузером понимается так: аттрибут href со значением localhost/wot/admin/index.php?tank=T1 и аттрибут Cunningham без значения.
Цитата(Shark @  17.6.2011,  12:02 Найти цитируемый пост)
Это длдя такого вывода:

та ладно! 
Код

foreach($Option_admin->tank_usa as $type => $tanks)
{
 echo $key.":<ul>";
 foreach($tanks as $tankName)
 {    
   echo "<li>".$tankName."</li>";
 }
 echo '</ul>';
}

не вывело бы список? мой вопрос следует понимать так: нафиг во вложенном переборе запихивать данные в переменную, которую мы и перебираем?
то, что оно работало, а не сбоило "внезапно", никакой заслуги нет. и стремиться к подобному не стоит.
и ещё. твой код из первого поста, кроме проблемы со ссылками, формирует некорректную верстку: внутри UL должны быть только LI. а у тебя - просто текст("легкие танки"). 

Автор: Shark 18.6.2011, 11:13
вот коды посмотри:
config.php
Код

<?php
class Option 
    {
        public $tank_usa = array
            (    "Легкие танки" => array("T1 Cunningham", "M2 Light Tank", "M3 Stuart", "M5 Stuart"),
                "Средние танки" => array("T2 Medium Tank", "M2 Medium Tank", "M3 Lee", "M4 Sherman", "M7", "M4A3E8 Sherman", "T20", "T23", "M26 Pershing"),
                "Тяжелые танки" => array("T1 Heavy Tank", "M6", "T29", "T32", "T34", "T30"),
                "Арт САУ" => array("T57", "M37", "M7 Priest", "M41", "M12", "M40/M43", "T92"),
            );
        public $content_menu = "";
        public $content = "";
    }

$Option = new Option();
?>

index.php
Код

<script type=\"text/javascript\" src=\"js/jquery.js\"></script>
<?php
        foreach($Option->tank_usa as $key => $type)
            {
                echo "<ul>".$key;
                foreach($type as $Option->tank_usa)
                    {
                        echo "<li><a href=?tank='".$Option->tank_usa."'>".$Option->tank_usa."</a></li>";
                    }
                echo "</ul>";
            }
?>

ob_start.php
Код

<?php
//Линейки танков
ob_start();
include_once ('template/line_tanks.tpl.php');
$line_tanks=$Option->content_menu = ob_get_contents();
ob_end_clean();
?>


line_tanks.tpl.php
Код

<?php
if (!defined('_INDEX'))die ();
?>
<script type="text/javascript" >
//Меню сайта
$(document).ready
    (
        function()
            {
                $('.sovet').hide()
                $('.sovetline').click
                    (    
                        function()
                            {
                                $('.sovet').fadeIn("slow");   
                                $('.germany').hide("slow")
                                $('.usa').hide("slow")

                            }
                    )
            }
    );
$(document).ready    
(
    function()
        {
            $('.germany').hide()
            $('.germanyline').click
                (
                    function()
                        {
                            $('.germany').fadeIn("slow");
                            $('.sovet').hide("slow")
                            $('.usa').hide("slow")
                        }
                )
        }                
);
$(document).ready    
(
    function()
        {
            $('.usa').hide()
            $('.usaline').click
                (
                    function()
                        {
                            $('.usa').fadeIn("slow");
                            $('.germany').hide("slow")
                            $('.sovet').hide("slow")
                        }
                )
        }                
);

</script>
    <a href=# class="sovetline">Советская линейка</a></br />
    <a href=# class="germanyline">Немецкая линейка</a></br />
    <a href=# class="usaline">Американская линейка</a></br />
    <a href=# >Шкурки</a></br />
    <a href=# >Прицелы</a></br />
    <a href=# >Иконки</a><br />
    <a href=# >Моды</a>


Автор: MoLeX 18.6.2011, 12:02
прежде чем программировать, а тем более с использованием ООП, может стоит HTML подучить?
Вам же уже сказали что делать

Код

<script type=\"text/javascript\" src=\"js/jquery.js\"></script>
<?php
        foreach($Option->tank_usa as $key => $type)
            {
                echo "<ul>".$key;
                foreach($type as $Option->tank_usa)
                    {
                        echo "<li><a href=\"?tank=".$Option->tank_usa."\">".$Option->tank_usa."</a></li>";
                    }
                echo "</ul>";
            }
?>

Автор: Shark 18.6.2011, 13:11
блин.... пропустил... не внимательно глянул на пост smile Solenko

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)