2013-08-13 5 views
2

файл PHP будет получать переменную между 1 и 30 из формы с помощью, что лучший способ, чтобы написать это, не повторяя себя

$style = $_GET['style']; 

я хочу, чтобы затем передать $ стиль, чтобы помочь мне выбрать CSS Stlye пользователь выбрал так, например, если выбор типа 3, то CSS Stlye три будут переданы изображения, как этот

<img style="<?php $choice3?>"; src="xxx.png" /> 

так, что я до сих пор это

<?php 
$style = $_GET['style']; 

function choice1() 
{ 
$choice1 = "display: block;padding:5px; etc, etc etc"; 
     return $choice1;  } 
function choice2() 
{ 
$choice2 = "display: block;padding:10px; etc, etc etc"; 
    return $choice2;  } 
function choice3() 
{ 
$choice3 = "display: block;padding:20px; etc, etc etc"; 
    return $choice3;  } 

if ($style == 1){ 
?> 
<img style="<?php $choice1?>"; src="xxx.png" /> 
<?php 
} 
if ($style == 2){ 
?> 
<img style="<?php $choice2?>"; src="xxx.png" /> 
<?php 
} 
.......and so on till 30   
?>     

Я уверен, что есть более простой способ передать мою логику.

+0

Что другие значения вы устанавливаете? Возможно, мы сможем увидеть образец. Заполнение всегда * 2. –

+0

is src always xxxpng? Можете ли вы связать xxx с $ style? (хороший интеллектуальный вопрос btw) – Cups

+0

ваши вызовы в стиле должны были бы вызвать функцию вместо $ choice2, choice2() – Fredd

ответ

6

Как насчет массива? Не забудьте проверить, что $style находится в правильном диапазоне, прежде чем использовать приведенный ниже код.

<?php 
$style = $_GET['style']; 
$styles = array(
    1=>"display: block;padding:5px; etc, etc etc", 
    2=>"display: block;padding:15px; etc, etc etc", 
    3=>"display: block;padding:35px; etc, etc etc", 
    4=>"display: block;padding:55px; etc, etc etc", 
    // etc. 
); 
?> 

<img style="<?php echo $styles[$style]; ?>"; src="xxx.png" /> 
+1

+1 Я также предложил бы заменить встроенные стили на имена классов CSS – AlexP

+0

+1. Хороший способ использования массива. Переключение-предложение будет путать. Но, возможно, если его попросят показать больше его кода, мы можем упростить его больше, чем это. –

+0

@TobiasKun: Действительно, но его существующий код даже не имеет смысла, поэтому я работал с тем, что у меня было. :) –

0

Кажется, что только Перетяжка Значение меняется, чем, почему вы не пытаетесь это:

$style = $_GET['style']; 

    <img style="display: block;padding:<?php echo $choice3; ?>px;" src="xxx.png" /> 
+0

Поскольку в css нет свойства «etc», я думаю, что есть некоторые другие значения, которые он устанавливает. –

+0

@TobiasKun, да в этом случае темные ответы лучше. –

0

Я хотел бы изменить свою функцию, чтобы обрабатывать все границы вместо того, чтобы множественные так что-то вроде:

function border($style){ 
    switch ($style) { 
    case 0: 
     $border = "display: block;padding:5px; etc, etc etc"; 
     break; 
    case 1: 
     $border = "display: block;padding:5px; etc, etc etc"; 
     break; 
    case 2: 
     $border = "display: block;padding:5px; etc, etc etc"; 
     break; 
    default: 
     $border = "display: block;padding:5px; etc, etc etc"; 
    } 
    return $border; 
    } 
+0

Поскольку существует более 30 возможных значений, массив будет лучшим способом, например, предложенным @DarkFalcon. –

+0

это также хорошо работает – user1951739

0

Я думаю, что ваш код выглядит нормально - но для печати требуется печать/эхо.

<img style="<?php print $choice2; ?>" src="..." /> 

Кроме того, вы можете попробовать использовать оператор switch.

----- ----- редактировать

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

<img class="<?php print $choice2; ?>" src="..." /> 

Тогда вы всегда можете указать CSS в своей таблице стилей вместо встроенного.

0

Я мог бы настроить его так:

$myStyles = new Array(); 
$myStyles[0] = "display: block;padding:5px; etc, etc etc"; 
$myStyles[1] = "display: block;padding:10px; etc, etc etc"; 

и т.д ...

function getStyles($style){ 
     return $myStyles[$style - 1]; 
} 

<img style="<?php echo getStyles($_GET['style']; ?>"; src="xxx.png" /> 

Не тестировался ...

Смежные вопросы