2013-07-28 75 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关于它。希望这可以帮助。