2015-07-19 32 views
2

我已經在html中創建了一個窗體,其中多個按鈕的命名方式與(sub1,2,3..so on)不同,但是將相同的值賦予所有窗體(value =「Update」)。我有一個問題,當任何按鈕被點擊時,它可以控制我所有的輸入框,所以我尋找解決這個問題的方法,並遇到了if..elseif語句的php腳本,但是當我試圖運行它時,只有前兩個if和elseif條件被編譯並且其餘條件被忽略。 下面是我的PHP代碼,所以請大家幫我弄清楚這個問題。我敢肯定,我的問題會幫助許多人太:)如果... elseif在超過2個條件下無法工作?

<?php 
if($_POST['header']){ 
    if(isset($_POST['header']) && trim($_POST['header']) != ""){ 
$fp = fopen("assets/config_header.php", 'w'); 
fwrite($fp, '<?php'); 
fwrite($fp, ' '); 
fwrite($fp, '$header = "'.trim($_POST['header']).'";'); 
fwrite($fp, ' '); 
fwrite($fp, '?>'); 
fclose($fp); 
} 
} 
elseif($_POST['color']) { 
    if(isset($_POST['color']) && trim($_POST['color']) != ""){ 
$fp = fopen("assets/config_header5.php", 'w'); 
fwrite($fp, '<?php'); 
fwrite($fp, ' '); 
fwrite($fp, '$color= "'.trim($_POST['color']).'";'); 
fwrite($fp, ' '); 
fwrite($fp, '?>'); 
fclose($fp); 

} 
} 
elseif($_POST['headline']) { 
if(isset($_POST['headline']) && trim($_POST['headline']) != ""){ 
$fp = fopen("assets/config_header1.php", 'w'); 
fwrite($fp, '<?php'); 
fwrite($fp, ' '); 
fwrite($fp, '$headline = "'.trim($_POST['headline']).'";'); 
fwrite($fp, ' '); 
fwrite($fp, '?>'); 
fclose($fp); 
} 
} 
elseif($_POST['color1']) { 
if(isset($_POST['color1']) && trim($_POST['color1']) != ""){ 
$fp = fopen("assets/config_header6.php", 'w'); 
fwrite($fp, '<?php'); 
fwrite($fp, ' '); 
fwrite($fp, '$color1= "'.trim($_POST['color1']).'";'); 
fwrite($fp, ' '); 
fwrite($fp, '?>'); 
fclose($fp); 
} 
} 
elseif($_POST['subhead']) { 
if(isset($_POST['subhead']) && trim($_POST['subhead']) != ""){ 
$fp = fopen("assets/config_header2.php", 'w'); 
fwrite($fp, '<?php'); 
fwrite($fp, ' '); 
fwrite($fp, '$subhead = "'.trim($_POST['subhead']).'";'); 
fwrite($fp, ' '); 
fwrite($fp, '?>'); 
fclose($fp); 
} 
} 
elseif($_POST['color2']) { 
if(isset($_POST['color2']) && trim($_POST['color2']) != ""){ 
$fp = fopen("assets/config_header7.php", 'w'); 
fwrite($fp, '<?php'); 
fwrite($fp, ' '); 
fwrite($fp, '$color2= "'.trim($_POST['color2']).'";'); 
fwrite($fp, ' '); 
fwrite($fp, '?>'); 
fclose($fp); 

} 
} 
elseif($_POST['prodname']) { 
if(isset($_POST['prodname']) && trim($_POST['prodname']) != ""){ 
$fp = fopen("assets/config_header3.php", 'w'); 
fwrite($fp, '<?php'); 
fwrite($fp, ' '); 
fwrite($fp, '$prodname= "'.trim($_POST['prodname']).'";'); 
fwrite($fp, ' '); 
fwrite($fp, '?>'); 
fclose($fp); 

} 
} 
elseif($_POST['vidid']) { 
if(isset($_POST['vidid']) && trim($_POST['vidid']) != ""){ 
$fp = fopen("assets/config_header4.php", 'w'); 
fwrite($fp, '<?php'); 
fwrite($fp, ' '); 
fwrite($fp, '$vidid= "'.trim($_POST['vidid']).'";'); 
fwrite($fp, ' '); 
fwrite($fp, '?>'); 
fclose($fp); 

} 

} 

?> 

感謝提前:),是的,如果有執行該任務的任何較短的方式,那麼請不要讓我知道:)

+0

你不需要'else if'當你關閉if時 –

+0

你想檢查裏面的條件嗎? – Drudge

+0

@Drudge不,我不希望它被嵌套,但要在其他如果梯子 – Codeweb24

回答

0

嘗試這個。

<?php 
$options = array(
    "header" => "assets/config_header.php", 
    "color" => "assets/config_header5.php", 
    "headline" => "assets/config_header1.php", 
    "color1" => "assets/config_header6.php", 
    "subhead" => "assets/config_header2.php", 
    "color2" => "assets/config_header7.php", 
    "prodname" => "assets/config_header3.php", 
    "vivid" => "assets/config_header3.php" 
); 

foreach ($options as $key => $file) { 
    if($_POST[$key]) { 
     if(isset($_POST[$key]) && trim($_POST[$key]) != ""){ 
      $fp = fopen($file, 'w'); 
      fwrite($fp, '<?php'); 
      fwrite($fp, ' '); 
      fwrite($fp, '$' . $key . ' = "'.trim($_POST[$key]).'";'); 
      fwrite($fp, ' '); 
      fwrite($fp, '?>'); 
      fclose($fp); 
      break; 
     } 
    } 
} 
+0

這是更好的方法 - 如果你不使用關閉php標籤。 – koredalin

1

你的代碼是這樣的

<?php 
if($_POST['header']){ 
    if(isset($_POST['header']) && trim($_POST['header']) != "") 
    { 
     //some code 
    } 
} 

: 
: 
: 
: 
elseif($_POST['vidid']) 
{ 
    if(isset($_POST['vidid']) && trim($_POST['vidid']) != "") 
    { 
     //some code 
    } 
} 

?> 

但如果ELSEIF必須是這樣的

if{ 
} 
elseif{ 
} 
else{ 
} 

,但你的代碼不包含其他人加入你如果裏面如果不然,如果。你在post方法中首先在上面檢查頭如果然後使用isset。如果你使用isset你不需要單獨檢查null isset會檢查你。你可以直接檢查空字符串爲什麼使用trim。

因此您的代碼應和這樣

<?php 
if((isset($_POST['header']) && $_POST['header']!= "") 
    { 
     //some code 
    } 

: 
: 
: 
: 
if(isset($_POST['vidid']) && $_POST['vidid'] != "") 
    { 
     //some code 
    } 

?> 

如果仍無法正常工作,這意味着在$ _ POST與實際不匹配或者他們真的是空參數名稱。