2013-07-28 73 views
-3

我知道的事實是,爲標題(位置)工作,沒有輸出必須發送之前。問題是我已經檢查了我的代碼很多次,但無法找到實際發送的內容,從而阻止了我的頭文件(位置)的工作。標題(位置)不工作

任何人都可以發現錯誤?

<div id="content"> 
     <h2>Lägg till</h2> 
     <p>Fyll i fälten och klicka på Lägg till för att skapa en ny kontakt i listan.</p> 
     <?php 
      $editid = $_GET['contact_id']; 
      $query = "SELECT *, Persons.p_id FROM Persons INNER JOIN Pictures ON (Pictures.p_id = Persons.p_id) WHERE Persons.p_id = " . $editid; 
      $result = mysql_query($query); 

      while ($row = mysql_fetch_array($result)) { 
       $name = $row['name']; 
       $address = $row['address']; 
       $birthday = $row['birthday']; 
       $picture = $row['source']; 
       $p_id = $row['p_id']; 

      } 
     ?> 

     <form action="" id="addressForm" method="post"> 
      <ul> 
       <li><label for="name"><strong>Namn</strong></label><input type="text" name="name" id="name"/></li> 
       <li><label for="address"><strong>Adress</strong></label><input type="text" name="address" id="address"/></li> 

       <li><label for="year"><strong>Födelsedag</strong></label> 
       <select id="year" name="year"> 
        <option value="2013">2013</option> 
        <option value="2012">2012</option> 
        <option value="2011">2011</option> 
        <option value="2010">2010</option> 
        <option value="2009">2009</option> 
        <option value="2008">2008</option> 
        <option value="2007">2007</option> 
        <option value="2006">2006</option> 
        <option value="2005">2005</option> 
        <option value="2004">2004</option> 
        <option value="2003">2003</option> 
        <option value="2002">2002</option> 
        <option value="2001">2001</option> 
        <option value="2000">2000</option> 
        <option value="1999">1999</option> 
        <option value="1998">1998</option> 
        <option value="1997">1997</option> 
        <option value="1996">1996</option> 
        <option value="1995">1995</option> 
        <option value="1994">1994</option> 
        <option value="1993">1993</option> 
        <option value="1992">1992</option> 
        <option value="1991">1991</option> 
        <option value="1990">1990</option> 
       </select> 
       <select name="month"> 
        <option value='1'>1</option> 
        <option value='2'>2</option> 
        <option value='3'>3</option> 
        <option value='4'>4</option> 
        <option value='5'>5</option> 
        <option value='6'>6</option> 
        <option value='7'>7</option> 
        <option value='8'>8</option> 
        <option value='9'>9</option> 
        <option value='10'>10</option> 
        <option value='11'>11</option> 
        <option value='12'>12</option> 
       </select> 
       <select name="day"> 
        <option value='1'>1</option> 
        <option value='2'>2</option> 
        <option value='3'>3</option> 
        <option value='4'>4</option> 
        <option value='5'>5</option> 
        <option value='6'>6</option> 
        <option value='7'>7</option> 
        <option value='8'>8</option> 
        <option value='9'>9</option> 
        <option value='10'>10</option> 
        <option value='11'>11</option> 
        <option value='12'>12</option> 
        <option value='13'>13</option> 
        <option value='14'>14</option> 
        <option value='15'>15</option> 
        <option value='16'>16</option> 
        <option value='17'>17</option> 
        <option value='18'>18</option> 
        <option value='19'>19</option> 
        <option value='20'>20</option> 
        <option value='21'>21</option> 
        <option value='22'>22</option> 
        <option value='23'>23</option> 
        <option value='24'>24</option> 
        <option value='25'>25</option> 
        <option value='26'>26</option> 
        <option value='27'>27</option> 
        <option value='28'>28</option> 
        <option value='29'>29</option> 
        <option value='30'>30</option> 
        <option value='31'>31</option> 
       </select> 
       </li> 
       <li><label for="picture"><strong>Bild (URL)</strong></label><input type="text" name="picture" id="picture"/></li> 
       <li><input type="submit" id="submit" name="submit" value="Lägg till"/></li> 
      </ul> 
     </form> 
     <?php 
      if(isset ($_POST['submit'])) 
      { 
       $editname = mysql_real_escape_string(htmlspecialchars($_POST['name'])); 
       $editaddress = mysql_real_escape_string(htmlspecialchars($_POST['address'])); 
       $editpicture = mysql_real_escape_string(htmlspecialchars($_POST['picture'])); 

       $year = $_POST['year']; 
       $month = $_POST['month']; 
       $day = $_POST['day']; 

       if ($month < 10) 
       { 
        $month = "0$month"; 
       } 
       if ($day < 10) 
       { 
        $day = "0$day"; 
       } 
       $editbirthday = $year . "-" . $month . "-" . $day; 

       if (!empty($name) && !empty($address)){ 
        $update = "UPDATE Persons SET name = '$editname', address = '$editaddress', birthday = '$editbirthday' WHERE p_id = '$editid'"; 
        $result = mysql_query($update); 

        $query = "SELECT * FROM Persons WHERE p_id = '$editid' LIMIT 1"; 
        $result = mysql_query($query); 
        while ($row = mysql_fetch_array($result)) { 
         $p_id = $row['p_id']; 

         $update = "UPDATE Pictures SET source = '$editpicture' WHERE p_id = '$editid'"; 
         $result = mysql_query($update); 
         header('Location: index.php'); 
        } 
       } 
      } 
     ?> 
    </div> 
+1

嘛,HTML堆之前發送,或者是不是? – mario

+0

「請記住,在發送任何實際輸出之前,必須調用header(),或者通過普通的HTML標籤,文件中的空行或PHP來發送。使用include或require函數來讀取代碼是一個非常常見的錯誤,或其他文件訪問函數,並且在調用header()之前輸出空格或空行,使用單個PHP/HTML文件時也存在同樣的問題。「 手冊 – UnknownError1337

+0

@mario過去有這樣的形式,我沒有遇到任何麻煩。或者你是什麼意思? – Erik

回答

0

您必須將標頭ABOVE任何HTML輸出。在這種情況下,您可以將其放在文檔的頂部。所以把所有的PHP放在最前面。

將下面的整個if語句放到PHP文件的頂部。我不認爲這會造成任何問題。

if(isset ($_POST['submit'])) 

我希望這有助於

+0

謝謝,我正在考慮類似這樣的事情,但似乎<?php代碼無法識別$ _POST字段,然後 – Erik

+0

這不是真的,因爲$ _POST是在請求頁面時設置的。你可以用'print_r'($ _ POST);'在頂部 –

+0

好吧,但是如果我嘗試'print_r($ _ POST)',我只輸出Array(),它是空的,對嗎? – Erik

2

記住,輸出可能是:

  • 空白之前<?php或之後?>
  • UTF-8字節順序標記
  • 錯誤消息或通知
  • printecho
  • <html>區域<?php之前的代碼。

所以你打這個名單的最後一點...

+0

但如果我把<?php代碼上面的HTML,對於一些因爲它不會找到$ _POST []字段。 – Erik

0

你已經有輸出。在發送任何輸出之前,必須設置標題。

「請記住,必須在發送任何實際輸出之前調用header(),或者使用普通的HTML標記,文件中的空行或PHP。」

請參閱documentation關於它。希望這可以幫助。