2012-02-13 2 views
1

У меня такие ошибки (я проверил вокруг строки 5 и не могу найти ни одну белую строку, а строку sql on. Я проверял написание и синтаксис, они в порядке .)Ошибка в изменении информации заголовка HTTP

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/reachea2/public_html/orderpplac.php on line 53 

Warning: Cannot modify header information - headers already sent by (output started at /home/reachea2/public_html/orderpplac.php:53) in /home/reachea2/public_html/include/functions.php on line 5 

Код:

<?php 
require_once("include/session.php"); 
require_once("include/dataconnect.php"); 
require_once("include/functions.php"); 
if (isset($_POST['submit1'])) { 
    if(array_key_exists('item', $_POST)){ 
     // $items = $_POST['item']; 
     //foreach($_POST['item'] as $item){ 
      //echo $item['Pquantity'] . ", "; 
      //echo $item['Pidno'] . ", "; 
     // } 
     //Loop through $_POST items, updating the database for each item 
     foreach ($_POST['item'] as $item) { 
      $Pquantity = intval($item['Pquantity']); 
      $Pidno = ($item['Pidno']); 
      //echo $Pquantity . ", "; 
      //echo $Pidno . ", "; 
      $queryreg = mysql_query(" 
       UPDATE repplac 
       SET Pquantity = {$Pquantity} 
       WHERE Pidno = '{$Pidno}' 
       AND Uname = '{$_SESSION['username']}' 
      ") or die(mysql_error()); 
     } 
    } 
} 
else if (isset($_POST['submit2'])) { 
    //Get Email Address 
    $emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '{$_SESSION['username']}'")or die(mysql_error()); 
    //$emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '".$_SESSION['username']."'")or die(mysql_error()); 
    $results = (mysql_fetch_assoc($emails)) or die(mysql_error()); 
    $email= $results['email']; 
    //echo "$email"; 
    //die(); 
    if(mysql_num_rows($emails) == 0){ 
     exit("No email addresses found for user '{$_SESSION['username']}'"); 
    } 
    $email = mysql_result($emails, 0); 

    //Get list to email user 
    $body = "<html><body><table border='1'> 
    <tr> 
     <th>Shop Name</th> 
     <th>Product Name</th> 
     <th>Size</th> 
     <th>Color Name</th> 
     <th>Quantity</th> 
    </tr>"; 
    $pplresult = mysql_query("SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}')"); 
    while($row = mysql_fetch_assoc($pplresult)){ 
     $body .= "<tr> 
       <td>" . $row['Sname'] ."</td> 
       <td>" . $row['Pname'] ."</td> 
       <td>" . $row['Psize'] ."</td> 
       <td>" . $row['Pcolour'] ."</td> 
       <td>" . $row['Pquantity'] ."</td> 
      </tr>"; 
    } 

    $body .="</table></body></html>"; 
    //Send email 
    $to = $email; 
    $subject = "YOUR ORDER LIST FROM REACHEASY"; 
    $headers = "From: [email protected]\r\n"; 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    mail($to,$subject,$body,$headers); 
    //Transfer records to wishlist 
    $transfer = mysql_query("INSERT INTO wishlist (SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}')")or die(mysql_error()); 
    // Delete temporary records if the above query was successful: 
    if($transfer !== false){ 
     $deletetable = mysql_query("DELETE FROM repplac WHERE Uname = '{$_SESSION['username']}'"); 
    } 
} 
redirect_to('youraccount.php'); 
?> body 
+0

Отключить отчет об ошибках (запишите их вместо этого), тогда предупреждение исчезнет (и вы больше не отправляете вывод, поскольку выход является первым предупреждением). См. Http://php.net/manual/en/book.errorfunc.php. Обратите внимание, что вам все равно необходимо просмотреть журнал ошибок и исправить ваше приложение. – hakre

+0

@hakre: Я понимаю отключение уведомлений, но предупреждения слишком важны, чтобы отключить их. Его всегда лучше решить проблему, чем скрыть ее. –

+0

@TomaszBanasiak: Где я написал, чтобы отключить их? И где я написал, что уведомления и строгие ошибки не важны? – hakre

ответ

3

Второе предупреждение, потому что первое предупреждение показано на рисунке. Когда отображается первое предупреждение, он создает вывод в браузер, который заставляет сервер создавать заголовки, а затем вы больше не можете изменять сеанс сеанса.

Исправьте первое предупреждение mysql в строке 53 в orderpplac.php, а остальное будет исправлено.

0

Убедитесь, что файлы:

"include/session.php" 
"include/dataconnect.php" 
"include/functions.php" 

не имеют замыкающие пробельные.

Перед отправкой заголовков не должно быть выхода.

Ищите пробелы или новые линии после закрытия ?>, или, еще лучше, не закрывайте теги <?php в этих файлах.

0

Здесь много подобных вопросов.

Если вы отправляете что-то в браузер, например. используя команды эха или печати (также, если отображается какое-либо уведомление или предупреждение), вы не можете изменить информацию заголовка.

Попробуйте отключить сообщения об ошибках (добавить error_reporting (0) в верхней части файла) или попробовать с буферизацией вывода, узнать больше о ob_start, ob_end_clean и т.д.

0

Существует нет session_start(), она должна быть первой после <?php

Если у вас есть session_start() внутри session.php, что вы в том числе попытаться удалить ?> с конца каждого включенного файла

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