За последние 24 часа нас посетили 62114 программистов и 1791 робот. Сейчас ищут 919 программистов ...

Как сделать On duplikate update ?

Тема в разделе "PHP для новичков", создана пользователем kiril901, 12 ноя 2017.

  1. kiril901

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

    С нами с:
    23 дек 2015
    Сообщения:
    124
    Симпатии:
    0
    officedw.beget.tech обычный бегетовский хостинг
    --- Добавлено ---
    заапись пошла, точку запятую пропустил, 1 запись идет все ок. но нет перезаписи
     
  2. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Бегет - это хостинг. Я думал Вы на локальном компьютере тестируете. Есть ли у Вас доступ к логам веб-сервера на хостинге? Или добавьте в начало php-скрипта вот эти строки:
    PHP:
    1. ini_set("display_errors", "1");
    И покажите, что за запрос у Вас получился?
     
  3. kiril901

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

    С нами с:
    23 дек 2015
    Сообщения:
    124
    Симпатии:
    0
    просто обновления не идет, а логи пустые
     
  4. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @kiril901, тут самый простой путь - открыть phpmyadmin и в нем обкатать запрос с добавлением дублирующей записи.
    Запрос то покажете окончательный?
     
  5. kiril901

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

    С нами с:
    23 дек 2015
    Сообщения:
    124
    Симпатии:
    0
    ну вот

    Код (Text):
    1.  
    2. require 'connect.php';
    3. if(isset($_POST['text'])){
    4.      $nazv=$_POST['nazv'];
    5.      $text=$_POST['text'];
    6.      $id=$_POST['id'];
    7.  
    8.  
    9. $insert_sql = "INSERT INTO main (nazv,text, user_id)". "VALUES ('{$nazv}','{$text}', '{$_SESSION['id']}')";
    10. "ON DUPLICATE KEY UPDATE  nazv = VALUES('{$nazv}'), text= VALUES ('{$text}');
    11. ";
    12. mysql_query($insert_sql);
    13. {echo 'ок';}
    14. }
     
  6. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    У Вас в 9й строке в конце должна быть не точка с запятой, а просто точка.
     
  7. kiril901

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

    С нами с:
    23 дек 2015
    Сообщения:
    124
    Симпатии:
    0
    тогда даже запись не идет не то что обновление
     
  8. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    А так?
    Код (Text):
    1. ON DUPLICATE KEY UPDATE  nazv = VALUES(nazv), text= VALUES (text)
    Но правильнее так:
    Код (Text):
    1. ON DUPLICATE KEY UPDATE  nazv = '{$nazv}', text= '{$text}'
     
    #33 Maputo, 12 ноя 2017
    Последнее редактирование: 12 ноя 2017
  9. kiril901

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

    С нами с:
    23 дек 2015
    Сообщения:
    124
    Симпатии:
    0
    Код (Text):
    1. ON DUPLICATE KEY UPDATE  nazv = VALUES(nazv), text= VALUES (text)
    спасибо огромное при огромное
     
  10. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Видео про ON DUPLICATE KEY лекция интересная, первые 20 минут Вам посмотреть просто необходимо.
     
  11. kiril901

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

    С нами с:
    23 дек 2015
    Сообщения:
    124
    Симпатии:
    0
    у меня вопрос к вам:

    Моя задача выводить из БД значения, ввожу я в своем аккаунте, а вывести надо чтобы видели все люди Я вывожу данные из БД и при условии вставки <code lang="php">
    session_start();
    </code> выводит толко если в свой аккаунт войду, а мне надо чтобы вывод был виден всем, вот код вывода
    <code lang="php">
    <?

    session_start();

    require 'connect.php';

    $sql_select = "SELECT * FROM main WHERE user_id = {$_SESSION['id']}";
    $result = mysql_query($sql_select);
    $row = mysql_fetch_array($result);



    do
    {
    printf(" " .$row['nazv'] . "<br>" .$row['text'] . "

    ");



    }




    while($row = mysql_fetch_array($result));


    ?>
    </code>

    как сделать?
     
  12. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Немного поясните. Вы хотите выводить тот текст, что сохранен для Вашего пользователя всем или вывести какой-то отдельный текст для гостей?
     
  13. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Надо таблицу смотреть, тут не совсем внятно сказано, в запросе вы выводите
    PHP:
    1. $sql_select = "SELECT * FROM main WHERE user_id = {$_SESSION['id']}";
    выбрать все, из таблицы main, где id-пользователя равно id-пользователя из сессии.
    Пытаюсь догадаться, что человек хочет сделать админку, куда он входит и добавляет текст, а потом уже этот текст будет видет пользователям пришедшим к нему на сайт.
    Для этого необходимо сделать таблицу с пользователями, и дать им поле, которое определит их статус, например, неавторизованный, авторизованный, модератор, администратор. На самой странице сделать вывод тех или иных данных, например, проверить если
    PHP:
    1.  if($_SESSION['admin'] == 'admin' OR $_SESSION['admin'] == 'moder'){ выведем форму для добавления новости }
    2. , а потом уже запрос который выводит новости для всех
    3. $sql_select = "SELECT * FROM main;
    Получится, что форма добавления текста будет видна только разрешенным в условии if пользователям, а выводиться они будут для всех.
    Спасибо за внимание ))
    Главное не торопиться, если посмотреть на программу как на программу, и пройти по шагам, что она делает (а делает она только то что мы ей говорим) то все сразу становится понятно, не торопитесь.