За последние 24 часа нас посетили 64078 программистов и 1742 робота. Сейчас ищут 839 программистов ...

Прокоментируйте код, а то есть непонятки

Тема в разделе "PHP для новичков", создана пользователем Andrey5555, 29 мар 2008.

  1. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Обьясните код пожалуйста, а то я не пойму что тут и зачем

    PHP:
    1. <?php
    2. $query = mysql_query ("SELECT id, image FROM gallery WHERE (image = '$image') LIMIT 1");
    3. if  (mysql_num_rows ($query) == 0)
    4. {
    5. mysql_query ("UPDATE gallery SET image = '$image' WHERE id = '$id'");
    6. echo "<b>Изображение успешно изменено !!!</b>";
    7. }
    8. else
    9. {
    10. while ($img = mysql_fetch_array($query))
    11. if($img['image'] != $image)
    12. {
    13. echo "<b>Такое изображение уже существует !!!</b>";  
    14. }
    15. else
    16. {
    17. mysql_query ("UPDATE gallery SET image = '$image' WHERE id = '$id'");
    18. }
    19. }
    20. ?>
    Заранее спасибо[/php]
     
  2. zorba-buddha

    zorba-buddha Активный пользователь

    С нами с:
    28 мар 2008
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Подольск
    запросом вытаскиваются ID и IMAGE поля таблицы GALLERY, где поле IMAGE равно контейнеру $image, возвращается только 1 строка

    если (запрос пуст) {

    апдейтим таблицу GALLERY, устанавливаем в поле IMAGE значение контейнера $image, где поле ID равняется контейнеру $id

    } иначе {

    если (поле IMAGE не равно контейнеру $image) {

    говорим, что такое уже есть

    } иначе {

    апдейтим таблицу GALLERY, устанавливаем в поле IMAGE значение контейнера $image, где поле ID равняется контейнеру $id

    }
    }

    ----
    на самом деле бред написан.
    второй IF никогда не будет TRUE.
    видимо, хотели вот это написать:
    PHP:
    1. <?php
    2. $query = mysql_query ('
    3.     SELECT
    4.         id
    5.     FROM
    6.         gallery
    7.     WHERE
    8.         image = \''.$image.'\'
    9.     LIMIT
    10.         1
    11. ');
    12.  
    13. if (mysql_num_rows($query) == 0) {
    14.     mysql_query ('
    15.         UPDATE
    16.             gallery
    17.         SET
    18.             image = \''.$image.'\'
    19.         WHERE
    20.             id = \''.$id.'\'
    21.     ');
    22.    
    23.     echo '<b>Изображение успешно изменено!</b>';
    24. } else {
    25.     mysql_query ('
    26.         UPDATE
    27.             gallery
    28.         SET
    29.             image = \''.$image.'\'
    30.         WHERE
    31.             id = \''.$id.'\'
    32.     ');
    33. };
    34. ?>
    откуда контейнер $id берётся - непонятно.
     
  3. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Все суть в том, что если при редактировании картинка не меняеться, то ошибки не выдает. Если же изменяеться, то проверяеться есть ли уже такая. Если есть, то ошибка. Если нету, то все ок. Мне надо такая проверка. А id береться из GET
     
  4. zorba-buddha

    zorba-buddha Активный пользователь

    С нами с:
    28 мар 2008
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Подольск
    если
    Код (Text):
    1. $query = mysql_query ("SELECT id, image FROM gallery WHERE (image = '$image') LIMIT 1");
    то либо вернётся пустой ответ (ноль записей, ноль строк), либо
    Код (Text):
    1. $img['image']
    всегда будет раво
    Код (Text):
    1. $image
    потому как пытаетесь проверить равенство поля, где заранее указали, что оно обязательно должно быть равно
     
  5. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    А не могли бы вы написать такой код и прокоментировать каждую строку? просто мне очень важно разобраться в этом.
    Спасибо
     
  6. zorba-buddha

    zorba-buddha Активный пользователь

    С нами с:
    28 мар 2008
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Подольск
    Andrey5555
    код уже написан - и ваш, что изначально давали, да и исправленный вариант я вам написл уже.
    кстати только что заметил, что у меня тоже бред написан, ггг )))) один и тот же запрос продублирован в условии...
    вот:
    PHP:
    1. <?php
    2. $query = mysql_query ('
    3.     SELECT
    4.         id
    5.     FROM
    6.         gallery
    7.     WHERE
    8.         image = \''.$image.'\'
    9.     LIMIT
    10.         1
    11. ');
    12.  
    13. if (mysql_num_rows($query) == 0) {
    14.     mysql_query ('
    15.         UPDATE
    16.             gallery
    17.         SET
    18.             image = \''.$image.'\'
    19.         WHERE
    20.             id = \''.$id.'\'
    21.     ');
    22.    
    23.     if (mysql_error()) {
    24.         echo '<b>Ошибочка вышла!</b><br>('.mysql_errno().') '.mysql_error();
    25.     } else {
    26.         echo '<b>Изображение успешно изменено!</b>';
    27.     };
    28. };
    29. ?>
    что касается разборки кода - советую скачать и просмотреть мануалку, по каждому моменту - это вам поможет более, чем мои комментарии.
     
  7. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Я в сам код понимаю. Я не понимаю сам процес. Как проследить изменились данные или остались прежними, и если они остались прежними то не сравнивать их уже с существующими, а просто оставить как есть? Мой код работает правильно, только я не понимаю. Обьясните пожалуста. Если не трудно то напишите мне в асю 499147889. Буду очень благодарен.
     
  8. zorba-buddha

    zorba-buddha Активный пользователь

    С нами с:
    28 мар 2008
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Подольск
    Andrey5555
    в вашем коде ошибка в логике, а не в построении самого кода.
    судя по всему, у вас просто не очень большой опыт программирования и разбора чужого кода, иначе уже давно подняли бы уровень своего логического мышления.
    отсутствие подобной логики не является плохим, это просто факт - как худощавые, сухожильные, накаченные и толстые.
    в любой момент каждый может стать тем, кем хочет - надо просто определённое количество времени и усилий силы воли.
    изучайте опенсурсные движки открывая код и прослеживая всю логику, на подхвате мануалку - чтобы точно понимать о чём речь.

    сам ваш код и его предназначение мне лично непонятно, нелогично - вы изменяете идентификатор, основной параметр записи (как правило) в зависимости от значения поля IMAGE.
    вы пытаетесь вытащить IMAGE и ID, но они вам оба уже известны - они у вас в контейнерах лежат, вам же только надо понять есть ли запись с соответствующими параметрами.
    ладно, щас стукнусь...