За последние 24 часа нас посетили 78613 программистов и 2752 робота. Сейчас ищут 1196 программистов ...

Помогите пожалуйста!не работает конструкция if-else. Решено

Тема в разделе "PHP для новичков", создана пользователем DaniLweb, 6 сен 2014.

  1. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Не работает данная конструкция. уже раз 20 проверил , а все равно . при чем ошибки в браузере не выдает. в чем может быть проблема?
    Код (Text):
    1.  <?php
    2.  
    3.  if(!isset($id))
    4.  {
    5.  
    6. $result = mysql_query("SELECT title,id FROM lessons");
    7. $myrow = mysql_fetch_array($result);
    8.  
    9.  do
    10.  {
    11.  printf("<p><a href='edit_lesson.php?id=%s'>%s</a></p>", $myrow["id"], $myrow["title"]);
    12.  }
    13.  
    14.  while($myrow = mysql_fetch_array($result));
    15.  }
    16.  
    17.  else
    18.  
    19.  
    20.  {
    21.  $result = mysql_query("SELECT * FROM lessons");
    22. $myrow = mysql_fetch_array($result);
    23. print <<<HERE
    24.  
    25.  <form action="add_lesson.php" method="post">
    26.  <div style="padding:8px 0 10px 8px";>
    27.    <label> Введите название урока:<br>
    28.      <input type="text" name="title" id="title">
    29.      <br>
    30.      <br>
    31.    </label>
    32.    
    33.    <label> Введите краткое описание урока:<br>
    34.      <input type="text" name="meta_d" id="meta_d">
    35.      <br>
    36.      <br>
    37.    </label>
    38.    
    39.    
    40.    <label> Введите ключевые слова урока:<br>
    41.      <input type="text" name="meta_k" id="meta_k">
    42.      <br>
    43.      <br>
    44.    </label>
    45.    
    46.    <label> Введите дату добавления урока:<br>
    47.    <input type="text" name="date"  id="date" value="2014-08-29">
    48.      <br>
    49.      <br>
    50.    </label>
    51.    
    52.    <label> Введите краткое описание урока с тегами абзацев:<br>
    53.    <textarea name="description" cols="40" rows="4"  id="description"></textarea>
    54.      <br>
    55.      <br>
    56.    </label>
    57.    
    58.    <label> Введите полный текст урока с тегами:<br>
    59.    <textarea name="text" cols="50" rows="15"  id="text"></textarea>
    60.      <br>
    61.      <br>
    62.    </label>
    63.    
    64.    <label> Введите автора урока:<br>
    65.    <input name="author" id="author">
    66.      <br>
    67.      <br>
    68.      <input type="submit" name="submit" id="submit" value="Занести информацию в базу">
    69.      <br>
    70.    </label>
    71.  </form>
    72.   </div>
    73. HERE;
    74.  }
    75. ?>
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Для начала поведайте, что именно не работает? Во-вторых, спалить и забыть напрочь уроки Попова, по которым вы "учитесь". В-третьих, в чём принципиальная разница ваших двух запросов? Может вы хотели в одном из них выводить конкретную статью по ID? И откуда должна появиться переменная $id? Может вы планировали её брать из GET-запроса? Тогда, как минимум:
    Код (PHP):
    1. if(!empty($_GET['id'])) $id = (int)$_GET['id'];
    2. // дальше ваш код 
     
  3. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else

    Спасибо огромное!помог код
    Код (Text):
    1. if(!isset($_GET['id']))
    то есть получается если я переведу id в обычный массив то GET можно не писать?
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Re: Помогите пожалуйста!не работает конструкция if-else

    Чаво?

    P.S. Завязывайте с Поповским "сайтостроительством", а то до добра это вас не доведёт.
     
  5. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else

    почему завязывать?у него хоть и есть дыры, но в целом понятно обьясняет

    Добавлено спустя 12 минут 32 секунды:
    Еще раз спасибо)
     
  6. _StivenRain

    _StivenRain Новичок

    С нами с:
    1 фев 2014
    Сообщения:
    5
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else

    Если в GET передается единичное значение, то нет смысла переводить в массив, а присвоить переменной, для того чтобы не писать $_GET
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Помогите пожалуйста!не работает конструкция if-else

    Чтоб туфту вот такую не писать. Если из базы вернётся пустой ответ, php на этот код будет громко ругаться. do-while - это вообще самый редкоиспользуемый цикл во всех C-подобных языках, и не без причины. Во-первых, условие находится далеко от начала цикла. А во-вторых, очень редко возникает реальная необходимость в том, чтоб тело цикла гарантированно выполнялось хоть один раз. А программировать надо, понимая смысл того, что пишите, а не просто подставляя строчки из видеокурса к себе
     
  8. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else

    Я считаю , что while / do while - это одно и тоже . И тут каждый подстраивается под то, что ему удобней.
     
  9. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Помогите пожалуйста!не работает конструкция if-else

    ой как все запущено(((
    Попов тоже так считал теперь каждый считает своим долгом его за это пнуть.
    Перечитай еще раз.
     
  10. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else

    Я читал. Ну обьясни тогда, я вот не понимаю
     
  11. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Помогите пожалуйста!не работает конструкция if-else

    Что будет если sql не вернет данные?
     
  12. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else

    Массив myrow не вытащит информацию, а при чем тут это?
     
  13. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Помогите пожалуйста!не работает конструкция if-else

    do ... while выполнится как минимум 1 раз вне зависимости от того что в while
    Таким образом у тебя будет 1 нерабочая ссылка плюс в лог посыпятся сообщения undefined variable.
     
  14. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else

    а для чего тогда конкретно нужен while в этом цикле?
     
  15. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Помогите пожалуйста!не работает конструкция if-else

    Не внимательно читал значить.
    Отличие while от do while в том что при простом while вначале делается проверка во втором случае выполняется 1 раз цикл потом делается проверка while.
     
  16. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else

    ааа дошло. в while идет проверка сразу , а в do while после того как уже сделан 1 цикл . Спасибо

    Добавлено спустя 1 минуту 6 секунд:
    а цикл for получается действует аналогично простому while
     
  17. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Помогите пожалуйста!не работает конструкция if-else

    Не-а... Цикл for - это совсем особый случай. Вот посмотрите его блоксхему:
    [​IMG]

    А вот описание, как он работает: https://php.net/manual/ru/control-structures.for.php
     
  18. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else

    Как все запутано оказалось, ну ладно буду разбираться ) Всем спасибо
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Помогите пожалуйста!не работает конструкция if-else. Реш

    Зато ты мнение уже имел. :D

    Нужно всегда отличать то что ты знаешь от того что тебе навязано и не проверено.
     
  20. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else. Реш

    согласен)
     
  21. DaniLweb

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

    С нами с:
    6 сен 2014
    Сообщения:
    38
    Симпатии:
    0
    Re: Помогите пожалуйста!не работает конструкция if-else. Реш

    Теперь понял)цикл do while все равно выполнится один раз)
     
  22. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Re: Помогите пожалуйста!не работает конструкция if-else. Реш

    do само за себя говорит, до итерации.
    К тому же, все условия будут проверятся в конце, а не как у while в начале.
    По этому do выполнится в любом случае, даже если нет данных.