2014-09-13 101 views
0

編輯: 我解決了我的問題: 感謝大家的評論,它幫助我以不同的方式思考: 我不知道返回...; (我相信它只是發送價值沒有結束功能),所以就像我說的,我剛剛開始,我是一個新手... 我解決了我的問題與多維數組,我認爲它應該像我現在要。我在這篇文章的最後發佈了代碼。PHP:函數()檢查表索引數組

--------------------------------------------- ---------------

我想做一個基本的檢查窗體函數,將用於檢查我未來的網站上的所有窗體。它花了我几几小時(幾天...)來做這個短代碼,因爲我是PHP的新手,我剛剛開始幾天前。 這裏是想法(請注意,表單更大,我只是爲了調試而創建了一個更小的版本)。 PHP庫包含有需要()的HTML頁面:

function check_form() { 
    $n = 0; 
    $indexed = array_values($_POST); 
    // How should I do to make this loop, 
    // to edit the HTML of each input one by one, 
    // without modifying other input that the one corresponding 
    // to the $n position in the table ? 
    if (isset($indexed[$n])) { 
     if (!empty($indexed[$n])) { 
      $value = $indexed[$n]; 
      $icon = define_article_style()[0]; 
      $color = define_article_style()[1]; 
     } else { 
      $value = define_article_style()[4]; 
      $icon = define_article_style()[2]; 
      $color = define_article_style()[3]; 
     } 
     $form_data_input = array($value, $icon, $color); 
     return $form_data_input; 
    } 
} 

HTML表單:

 <form role="form" method="post" action="#checked"> 
      <div class="form-group <?php echo check_form()[1]; ?>"> 
       <label class="sr-only" for="title">Title</label> 
       <input type="text" name="title" class="form-control input-lg" id="title" placeholder="Enter title * (min: 5 characters, max: 30 characters)" value="<?php echo check_form()[0]; ?>"> 
       <?php echo check_form()[2]; ?> 
      </div> 
      <div class="form-group <?php echo check_form()[1]; ?>"> 
       <label class="sr-only" for="another">Title</label> 
       <input type="text" name="another" class="form-control input-lg" id="another" placeholder="Enter title * (min: 5 characters, max: 30 characters)" value="<?php echo check_form()[0]; ?>"> 
       <?php echo check_form()[2]; ?> 
      </div> 
      <button type="submit" class="btn btn-default" name="check_article" value="#checked">Check</button> 
     </form> 

我的問題是,返回的值到輸入端始終的內容「title」,例如如果

$array[0] = $indexed[$index]; 
    $array[1] = define_article_style()[0]; 
    $array[2] = define_article_style()[1]; 

爲「標題」是等於

$array[0] = "blabla"; 
    $array[1] = "myclass1"; 
    $array[2] = "myclass2"; 

每隔一個輸入(在這種情況下,它只是「另一個」)的形式的具有相同的值。 我有點困惑,我不明白一切是如何運作的,但我認爲這與輸入分享$array[n]以獲得它們的價值/風格的事實有關,但我並不真正瞭解如何保留這個概念,並使其工作。 所以,如果你明白什麼不在這裏工作,我會對解釋感興趣(請記住,我是代碼中的新手,還有PHP。) 謝謝。 問候。

-------------------------------------------- ----------------

這是我的工作代碼(我必須驗證,但我認爲它工作正常)。

function check_form() { 
    $n = 0; 
    $index_post = array_values($_POST); 
    while ($n < count($index_post)) { 
     if (isset($index_post[$n])) { 
      if (!empty($index_post[$n])) { 
       $value[$n] = $index_post[$n]; 
       $color[$n] = define_article_style()[0]; 
       $icon[$n] = define_article_style()[1]; 
      } else { 
       $value[$n] = define_article_style()[4]; 
       $color[$n] = define_article_style()[2]; 
       $icon[$n] = define_article_style()[3]; 
      } 
     } 
     $array_all = [$value, $color, $icon]; 
     $n = $n + 1; 
    } 
    return $array_all; 
} 

再次,感謝您的回答,很好看,即使是新手不明白的一半時,他們使用此功能在這個其他功能在這裏得到答案,他們做了什麼。 重拳出擊。 問候。

+1

有太多的困惑在這裏,我不知道從哪裏開始array_values回報0基於數字索引的數組,所以你的if語句是沒有意義的。接下來,return語句將退出函數,所以你永遠不會循環多次 – Steve 2014-09-13 14:36:28

回答

0

你在你的代碼中的許多錯誤:

首先:我supose你有在「submit_form提交表單視圖文件「form.php的」和過程。PHP的」,所以在你的HTML代碼,你需要解決這個問題(action屬性):

<form role="form" method="post" action="submit_form.php"> 

:你有2個輸入標籤的‘標題’和‘其他’,所以$ _POST陣列有2個索引: $ _ POST [「標題」],$ _ POST [「其他」],可以檢查此數組的內容:

var_dump($_POST); // this function print all the data of this array, check it. 
+0

第一個: 其實我現在不想加載其他頁面,我只是想重新加載實際的頁面,看看是否已經加載/應用了正確的樣式/值。 第二個: 是的,我已經使用var_dump來檢查輸入,所有輸入正確註冊。 問題是,即使在$ _POST = $ index中設置的值與我在var_dump()中看到的值正確() 所有輸入都採用應用於HTML中第一個輸入的樣式/值。 它看起來像這樣: http://s7.postimg.org/xk02bmdjf/before.png http://s7.postimg.org/gxii2jkln/after.png – NoFuture 2014-09-13 16:29:48