Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Объясните пожалуйста почему появляется ошибка Warning: Cannot modify header information...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: НО она появляется не сразу, а по мере наполнения массива товаром
zapatronen
Отправлено: 04 Февраля, 2015 - 11:14:57
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Изучал что значит эта ошибка, пробелов нигде нету, все редактировать в нотепад++ без бом. Вроде заголовки отправляю до основного контента
Ошибки сразу нет, но появляется по мере добавления в массив индексов со значением, когда пытаюсь изменить кол-во товара через форму. Если в корзине 10 товаров, все меняется отлично. Но с 11го товара начинает вылазить ошибка
Warning: Cannot modify header information - headers already sent by (output started at /home/users2/a/adminbul/domains/arduino.bulbattery.com/cart.php:26) in /home/users2/a/adminbul/domains/ arduino.bulbattery.com/cart.php on line 10

Кричит, что ошибка в строке
Цитата:
<IMG style="width:50px;"src="<?=$imagename?>">

убирая эту строку из кода, ошибка перекидывается на позицию ниже.
То есть ошибка бегает по разделу <section> error </section>
Такое ощущение, что просто напросто заканчивается место в массиве или в куки.

Пожалуйста отругайте меня, где я не прав

Спойлер (Отобразить)


connect.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   define('DB_HOST', 'localhost');
  3.   define('DB_USER', 'pasha');
  4.   define('DB_PASSWORD', '111');
  5.   define('DB_NAME', 'pashabase');
  6. $dbc= mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('error DB');
  7. $basket=array();
  8. if(!isset($_COOKIE['basket'])){
  9.       $basket=NULL;
  10.   }else{
  11.   $basket=unserialize(base64_decode($_COOKIE['basket']));}
  12.   $result=count($basket);
  13. ?>


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once('connect.php');
  3. require_once('header.php');
  4. require_once('function/functions.php');
  5. foreach($basket as $tovar=>$value){
  6.           if( isset($_POST[$tovar])){
  7.           $value=$_POST[$tovar];
  8.           $basket[$tovar]=$value;
  9.           $basket2=base64_encode(serialize($basket));
  10.           setcookie('basket', $basket2, 0x7FFFFFFF);
  11. }
  12.       $query="SELECT * FROM beta WHERE article='".$tovar."'";
  13.       $data = mysqli_query($dbc, $query);
  14.       $row = mysqli_fetch_array($data);
  15.       $image=translit($row['name']);
  16.          $filename="image/$tovar";
  17.          if(file_exists($filename)){
  18.          $imagename="image/$tovar/$image.jpg";
  19.          }
  20. ?>
  21. <section>
  22. <form method="post" action="cart.php">
  23. <IMG style="width:50px;"src="<?=$imagename?>">
  24. <a href="product.php?article=<?=$tovar?>"><?=$row['name']?></a>
  25. <a href="deletefromcart.php?article=<?=$tovar;?>">удалить</a>
  26. <input name="<?=$tovar?>"type="number"min="1"max="100"step="1"value="<?=$value;?>">
  27. <input type="submit" name="submit" value="перерасчитать">
  28. </form>
  29. </section>
  30. <?
  31. }
  32. ?>

(Отредактировано автором: 04 Февраля, 2015 - 11:24:06)

 
 Top
RickMan
Отправлено: 04 Февраля, 2015 - 11:38:00
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Указано же, что:
/home/users2/a/adminbul/domains/ arduino.bulbattery.com/cart.php on line 10

а там у вас setcookie('basket', $basket2, 0x7FFFFFFF);

Следовательно стоило бы посмотреть что творится в

Цитата:
require_once('connect.php');
require_once('header.php');
require_once('function/functions.php');

Возможно в них что-то да и выводится.
 
 Top
LIME
Отправлено: 04 Февраля, 2015 - 14:37:15
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




 
 Top
zapatronen
Отправлено: 04 Февраля, 2015 - 14:38:32
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Так в статья же пишут, что нужно искать причину ошибки которая первая идет, та что в скобках или я не то прочитал.

И почему при данном коде ошибка появляется только после десятого элемента в массиве до 10го все же работает нормально?


PHP:
скопировать код в буфер обмена
  1. в файле require_once('function/functions.php');
  2. <?PHP
  3. function translit($str) {
  4.     $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ');
  5.     $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'Gh', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', 'y', 'e', 'yu', 'ya', '_');
  6.     return str_replace($rus, $lat, $str);
  7.   }
  8. function connect($string){
  9.     global $dbc;
  10.   $query="SELECT * FROM beta WHERE category = '$string'";
  11.   $result=mysqli_query($dbc, $query) or ('ошибка записи');
  12.     while($row=mysqli_fetch_array($result) ){
  13.          $image=translit($row['name']);
  14.          $dir=$row['article'];
  15.          $filename="image/$dir";
  16.          if(file_exists($filename)){
  17.             $imagename="image/$dir/$image.jpg";
  18.             echo  '<li>'.'<a href="product.php?article='. $row['article'] . '">'.'<IMG style="width:250px;" src="'.$imagename.'">'.'<br>'.$row['name'].'</a>'.'</li>';
  19.             echo '<a href="addtocart.php?article='.$row['article'].'">'.'В корзину'.'</a>';
  20.          }
  21.     }
  22. }
  23. ?>


в require_once('header.php');
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require_once('connect.php');
  4. require_once('function/functions.php');
  5. ?>
  6. <head>
  7. <link rel="stylesheet" type="text/css" href="style.css" />
  8. <title>
  9. </title>
  10.   <script>
  11.    document.createElement('aside');
  12.    document.createElement('article');
  13.   </script>
  14. </head>
  15.  <body>
  16.  <header><a class="logo" href="index2.php">LOGOTYPE</a>
  17. <span class="cart"><a href="cart.php">Корзина(<?=$result?>)</a> </header></div>
 
 Top
LIME
Отправлено: 04 Февраля, 2015 - 14:42:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Ха-ха Ха-ха Ха-ха
ну нет слов)) сорь)
(Добавление)
код дэбила)
 
 Top
zapatronen
Отправлено: 04 Февраля, 2015 - 15:01:14
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




))) ну че поделать, учусь
 
 Top
LIME
Отправлено: 04 Февраля, 2015 - 15:06:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Ну вот
Теперь мне стыдно
Тогда совет
В функциях ничего не выводи
Возвращай строку
 
 Top
zapatronen
Отправлено: 04 Февраля, 2015 - 15:06:44
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




а в чем дебильность заключается?
(Добавление)
спасибо))
 
 Top
DelphinPRO
Отправлено: 04 Февраля, 2015 - 18:28:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




в двух темах пишете, а что у вас тут так и не показали

output started at /home/users2/a/adminbul/domains/arduino.bulbattery.com/cart.php:26

вывод начат в файле cart.php в строке 26


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
zapatronen
Отправлено: 05 Февраля, 2015 - 09:15:39
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




дык я сразу тут писал, меня перенаправили в другу тему, я же законопослушный форумчанин Ниндзя

(output started at /home/users2/a/adminbul/domains/arduino.bulbattery.com/cart.php:40) in /home/users2/a/adminbul/domains/ arduino.bulbattery.com/cart.php on line 24

в 40й строке
Цитата:
<input name="<?=$tovar?>"type="number"min="1"max="100"step="1"value="<?=$value;?>">


Периодически ошибка перемещается на строку <IMG style="width:50px;"src="<?=$imagename?>">
и на строку, где просто находится открывающий тег <? перед html тегом </form>

По ходу это из за моей убер мега схемы изменения значения в массиве при помощи формы с последующей перезаписью куки, но какого черта она работает для нескольких ключей, а для большого кол-ва бьет ошибку

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   define('DB_HOST', 'localhost');
  3.   define('DB_USER', '????????');
  4.   define('DB_PASSWORD', '???????');
  5.   define('DB_NAME', '???????');
  6.   function translit($str) {
  7.     $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', ' ');
  8.     $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'Gh', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', 'y', 'e', 'yu', 'ya', '_');
  9.     return str_replace($rus, $lat, $str);
  10.   }
  11. $dbc= mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('error DB');
  12. if(!isset($_COOKIE['basket'])){
  13.       $basket=array();
  14.   }else{
  15.   $basket=unserialize(base64_decode($_COOKIE['basket']));
  16.   }
  17.   $result=count($basket);
  18. foreach($basket as $tovar=>$value){
  19.           if( isset($_POST[$tovar])){
  20.           $value=$_POST[$tovar];
  21.           $basket[$tovar]=$value;
  22.           $basket2=base64_encode(serialize($basket));
  23.  
  24.           setcookie('basket', $basket2, 0x7FFFFFFF);
  25.           header("location:".$_SERVER[HTTP_REFERER]);
  26.          
  27. }
  28.       $query="SELECT * FROM beta WHERE article='".$tovar."'";
  29.       $data = mysqli_query($dbc, $query);
  30.       $row = mysqli_fetch_array($data);
  31.       $image=translit($row['name']);
  32.          $filename="image/$tovar";
  33.          if(file_exists($filename)){
  34.          $imagename="image/$tovar/$image.jpg";
  35.          }
  36. ?>
  37. <IMG style="width:50px;"src="<?=$imagename?>">
  38. <a href="product.php?article=<?=$tovar?>"><?=$row['name']?></a>
  39. <a href="deletefromcart.php?article=<?=$tovar;?>">удалить</a>
  40. <form method="post" action="cart.php">
  41. <input name="<?=$tovar?>"type="number"min="1"max="100"step="1"value="<?=$value;?>">
  42. <input type="submit" name="submit" value="перерасчитать">
  43. </form>
  44. <?
  45. }
  46. ?>

(Добавление)
Даже когда в массиве до 30+ $key=>$value, то первые 10 $value могу поменять с перезаписью куки, а у нихниъ меняется только $value, а куки не перезаписывается и выбивает ошибку про заголовки

(Отредактировано автором: 05 Февраля, 2015 - 09:20:54)

 
 Top
Sail
Отправлено: 05 Февраля, 2015 - 09:24:38
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




zapatronen, в цикле
PHP:
скопировать код в буфер обмена
  1. <?
  2. foreach($basket as $tovar=>$value){
  3.     // ******
  4.     setcookie('basket', $basket2, 0x7FFFFFFF);
  5.           header("location:".$_SERVER[HTTP_REFERER]);
  6.     // ******
  7. ?>
  8. <IMG style="width:50px;"src="<?=$imagename?>">
  9. <?
  10.     // ....
  11. }
  12.  

не должно быть никакого вывода в форму. А он есть.
А почему не на каждый чих ругается - так ведь веб-сервер всё-таки чего-то и сам кэширует.
Следовательно, надо вынести за цикл вывод в формочку. В цикле - только накапливать данные...
(Добавление)
zapatronen пишет:
дык я сразу тут писал, меня перенаправили в другу тему

Перенаправили - чтобы ознакомиться с тем, что там написано Улыбка

(Отредактировано автором: 05 Февраля, 2015 - 09:55:28)

 
 Top
zapatronen
Отправлено: 05 Февраля, 2015 - 09:40:30
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




еще одно, изначально $value в массиве int, а после моих махинаций $value становится string. этж ниче страшного?
(Добавление)
щас попробую переделать все
(Добавление)
А вывод вообще запрещен только в form ? или вообще в любых html типо table и т.д?
 
 Top
Sail
Отправлено: 05 Февраля, 2015 - 10:10:00
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




zapatronen, цитатка из той темы:
Цитата:
После вывода информации в браузар слать заголовки нельзя. Остается только осмыслить, что такое вывод в браузер. Да-да, если вы это читаете, то вы это не осмыслили.
* команды вывода php (echo, print...)
* различные warnigs, notices, которые произошли в результате других операций в скрипте.
* ЛЮБЫЕ СИМВОЛЫ, расположенные до <?php. Это и пробелы, и энтеры, и невидимый символ BOM.
 
 Top
zapatronen
Отправлено: 05 Февраля, 2015 - 10:20:44
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




так ДО это до в ожной строке типа:

table<?php

или вообще глобально ДО ни на какой из строк, чтобы я ни одного символа лишнего не видел или я за себя не отвечаю кричал php Улыбка
 
 Top
DelphinPRO
Отправлено: 05 Февраля, 2015 - 12:46:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




zapatronen пишет:
или вообще глобально ДО ни на какой из строк, чтобы я ни одного символа лишнего не видел или я за себя не отвечаю кричал php

Глобально. вообще.
До вызова функций header или setcokie не должен ни один байтик уйти в браузер.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB