За последние 24 часа нас посетили 22534 программиста и 1000 роботов. Сейчас ищут 625 программистов ...

Тут есть конфа нубов которая учит php?

Тема в разделе "Беседы", создана пользователем dns24, 10 сен 2016.

  1. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    почему не работает строка <?php setcookie($name,''); ?>


    Код (Text):
    1. <a href="#" onclick="eraseCook();">Удалить куки</a>
    2.         <script type="text/javascript">
    3.         function eraseCook()
    4.         {
    5.        
    6.         <?php setcookie($name,''); ?>
    7.         alert('<?=$name;?>');
    8.         }
    9.         </script>
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Это всё HTTP протокол, cookie относятся к заголовкам, так как в HTTP протоколе условно есть заголовки и данные. Первыми должны идти заголовки, потом данные. У тебя данные идут первыми, потом заголовки (setcookie) так как cookie относятся к заголовкам, потом опять данные.
    Если коротко то ты нарушил структуру HTTP протокола.
    Вызывай setcookie и другие функции устанавливающие заголовки до вывода другой информации.
     
  3. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    так тоже не робит. если я прально понял
    Код (Text):
    1.   <script type="text/javascript">
    2.         function eraseCook()
    3.         {
    4.      
    5.         <?php setcookie($name,''); ?>
    6.         alert('<?=$name;?>');
    7.         }
    8.         </script>
    9. <a href="#" onclick="eraseCook();">Удалить куки</a>
    10.      
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    ты показал тот же код, разве что-то должно было изменится? и почему ты хочешь пустую cookie поставить? почитай документацию по setcookie, возможно тебе придётся задать имя вручную, а содержание которое можно будет получить по этому имени, брать из переменной $name.

    Создай отдельный скрипт, чтобы поэкспериментировать с примерами setcookie из документации.
     
  5. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    пустую поставить чтоб удалить текущее значение, это часть кода тут. отдельно setcookie я поэксперементировал все норм роботает. а вот именно код сверху не получается зафунциклировать.
    даже в отдельном примере не работает и не пойму почему. javu совсем незнаю, щас пока только php копаю. просто казалось бы мелочь а не понятно почему не работает, и короткие справки по яве из яндекса не помогают.
    вот отдельный пример в отдельном файле
    Код (Text):
    1.  
    2. <?php
    3. setcookie(namex,'123');
    4. $name=$_COOKIE['namex'];
    5.  
    6. ?>  
    7. <script type="text/javascript">
    8.         function eraseCook()
    9.         {
    10.        
    11.         <?php setcookie(namex,'',time()-1); ?>
    12.         alert('<?=$name;?>');
    13.         }
    14.         </script>
    15. <a href="#" onclick="eraseCook();">Удалить куки</a>
    16. <?php
    17.  
    18. ?>
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.321
    Адрес:
    Лень
    @noice https://php.ru/manual/function.ob-start.html
    --- Добавлено ---
    функция не удалит куки, можешь исходный код html открыть и убедится в чем причина. PHP и JS две разные вещи
    --- Добавлено ---
    как удалить куки с помощью JS
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    java.gif

    я читаю код и вижу полно ошибок, namex не строка, PHP код внутри javascript, хотя javascript работает на клиента, а PHP на сервере, вот почитай http://phpfaq.ru/newbie/na_tanke
    Надо делать отладку HTTP запросов, смотреть например через fiddler, что там с cookie происходит.

    Напомни, по какой книге изучаешь HTML, PHP, JavaScript?
     
  8. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @noice переходи на книги, вот по PHP свежая http://www.ozon.ru/context/detail/id/137538198/ в уроках обычно мало могут рассказать и показать.

    Разобрался как работает клиентский javascript и в чём разница с серверным PHP?
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Никак, если это cookie, выставленные с флагом httpOnly, о чем, почему-то, Попов забыл рассказать.
     
  11. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    @denis01 там вникать надо детально. я по порядку изучаю чтоб с одного на другое не прыгать и в итоге ничего не понять. щас пока mysqli не закончил потом javascript. хотя мне кажется это все освоить ваще анрил, как вы тут сидящие этому обучились я idk это год минимум надо каждый день в кодах сидеть походу
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Терпение и желание.
    Я вот как-то отпуск взял спецом, 2 недели, чтобы JS выучить с уровня "копипаст-кодинг" до "среднебазовый, которого хватит, чтобы дальше развиваться самостоятельно". Учил запоем, инфу поглощал, как голодающий еду у шведского стола.

    Терпение и желание.
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @noice так зачем cookie и javascript используешь сейчас, если учишь mysql и доступ к нему через PHP mysqli?
     
  14. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    @denis01 до mysql, cookie учил просто захотелось кнопку сделать чтоб их удалять. думал все просто. оказалось не просто.
     
  15. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @noice на сколько я помню, встроенной функции на javascript для удаления cookie по её имени нету.
    Нужно написать самому или взять в интернете готовую.
    Ещё нужно как писали выше, чтобы cookie не была httpOnly.

    В твоём коде перемешан php и javascript с ошибками.
    Надеюсь по ссылке "на танке" что я давал раньше, тебе стало понятно, разница между php и javascript.

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

    Ещё вариант это сделать в PHP коде условие для которого создать ссылку, например ?delete_cookie=test
    а в php уже делать if для этой ссылки и удалять cookie, имя брать из $_GET['delete_cookie']
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Прям с учебника, автор:

    Код (Javascript):
    1. function setCookie(name, value, options) {
    2.   options = options || {};
    3.  
    4.   var expires = options.expires;
    5.  
    6.   if (typeof expires == "number" && expires) {
    7.     var d = new Date();
    8.     d.setTime(d.getTime() + expires * 1000);
    9.     expires = options.expires = d;
    10.   }
    11.   if (expires && expires.toUTCString) {
    12.     options.expires = expires.toUTCString();
    13.   }
    14.  
    15.   value = encodeURIComponent(value);
    16.  
    17.   var updatedCookie = name + "=" + value;
    18.  
    19.   for (var propName in options) {
    20.     updatedCookie += "; " + propName;
    21.     var propValue = options[propName];
    22.     if (propValue !== true) {
    23.       updatedCookie += "=" + propValue;
    24.     }
    25.   }
    26.  
    27.   document.cookie = updatedCookie;
    28. }
    29.  
    30. function deleteCookie(name) {
    31.   setCookie(name, "", {
    32.     expires: -1
    33.   })
    34. }
    --- Добавлено ---
    Потом достаточно обратиться к deleteCookie() и все.
    --- Добавлено ---
    И самое главное - если тебе надо ковырять кукисы через JS, значит ты что-то делаешь не так.
    Может тебе нужно на стороне клиента хранилище ключ-значение удобное? Дык есть для этого webStorage же.
     
  17. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    ок спасибо. все сохранил, как вернусь к кукам и js буду экспеременитировать.
    щас пока вот наткнулся по теме скул:
    два варианта получение результата запроса:
    1
    Код (Text):
    1. $res=mysqli_query($db,$query);
    2
    Код (Text):
    1. $res2=$db->query($query);
    зачем существует в php два варианта?
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    @noice чтобы можно было писать весь код в процедурном или объектно-ориентированном стиле.
     
  19. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    что в $db?
     
  20. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    @denis01
    $db=mysqli_connect("localhost", "root", "","test");

    как обратиться к строке через sql запрос? именно к строке, к примеру есть вариант "UPDATE news SET h1='тест' WHERE id='8'"
    но тут обращение по id, А в php есть массив строк который используется в циклах. Поскольку id порядок хаотичный 1456, в циклах их не получится использовать. Или всетаки надо привязку как то делать по id?
    [​IMG]

    наверно непонятно
    есть таблица куда грузятся данные, хочу сделать запись изменений по клику. Но проблема в том чтобы через php циклы отправлять sql запросы надо как то обратится именно к строкам
    [​IMG]

    конечно врятли кто меня понял, ну авось
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Что мешает хранить айдишник после выборки и использовать его?
     
    denis01 нравится это.
  22. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    @Fell-x27
    как исправить? чтоб по клику новые значения сразу после клика выводились?
    а щас чтоб увидеть изменения надо после кнопки submit, f5 нажать обновить страницу.


    код:

    PHP:
    1. <pre>
    2.     <?php
    3.     $db = mysqli_connect("localhost", "root", "", "test");
    4.     if (mysqli_connect_errno()) {
    5.         echo "no connect\n";
    6.     } else {
    7.         echo "connect\n";
    8.     }
    9.     $query = "select * from news";
    10.     $res = mysqli_query($db, $query);
    11.     $string = array();
    12.     $stroka = 0;
    13.     $zag = 0; #нумерация полей ввода
    14.    $count = $res->num_rows;
    15.     echo "В запросе $query\nстрок: $res->num_rows.\nстольбцов: $res->field_count\n";
    16.  
    17.     for ($ms = 0; $ms < $count; $ms++)
    18.     {
    19.          $string[] = mysqli_fetch_array($res); #сбор массивов строк в массив
    20.         $id[] = $string[$ms]['id']; # парсим id в массив
    21.         updateNew();
    22.        
    23.     }
    24.     table();
    25.         function updateNew()
    26.     {
    27.         global $id;
    28.         global $db;
    29.         static $i2 = 0;
    30.         if (isset($_POST['zag0'])) {
    31.             $zxc = "zag" . $i2;
    32.             $update = "UPDATE NEWS SET h1=\"$_POST[$zxc]\" WHERE id=\"$id[$i2]\"";
    33.             mysqli_query($db, $update) or die(mysql_error());
    34.             $i2++;
    35.         }
    36.     }
    37.  
    38.     function vivodStrok($stroka = "0") {
    39.         global $string;
    40.         global $zag;
    41.         for ($i = 0; $i <= count($string); $i++) {
    42.             if ($i == 1) {
    43.  
    44.                 echo "<td><input name=\"zag{$zag}\" type=\"text\" value=" . ($string[$stroka][$i]) . "></td>";
    45.                 $zag++;
    46.             } else {
    47.                 echo "<td>" . ($string[$stroka][$i]) . "</td>";
    48.             }
    49.         }
    50.     }
    51.  
    52.     function table(){
    53.     global $count;
    54.     global $stroka;
    55.     echo "<form action=\"/sql/index.php\" method=\"POST\"><table style=\"background-color: #199999\" border=\"1\">";
    56.     while ($count > $stroka) {
    57.      
    58.         echo "<tr><td>";
    59.         echo "Строка№$stroka-";
    60.         vivodStrok($stroka);
    61.         $stroka++;
    62.         echo "</tr></td>";
    63.     }
    64.     echo "</table><button type=\"submit\">ok</button></form>";
    65.     }
    66.  
    67.  
    68.     if (isset($_POST['zag0'])) {
    69.         echo "post\n";
    70.         print_r($_POST);
    71.     } else {
    72.         echo "not post\n";
    73.     }
    74.     print_r($_POST['zag0']);
    75.     ?>
     
  23. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Может сначала делать UPDATE, а потом SELECT? Чтобы когда данные будут выбираться из базы, они были обновлены.
     
    Fell-x27 нравится это.
  24. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Заняться отладкой и понять, что у тебя творится в коде, чтобы получить представление о том, что можно поменять.
     
  25. noice

    noice Активный пользователь

    С нами с:
    7 сен 2012
    Сообщения:
    157
    Симпатии:
    0
    алилуя, 10 часов почти танцев с бубном и заработало.
    @denis01 @Fell-x27 да дело было в порядке выполнения но чтоб его выстовить как надо пришлось почти все переписывать. я просто данеялся на какой то легкий путь.