За последние 24 часа нас посетили 16566 программистов и 1680 роботов. Сейчас ищут 955 программистов ...

Прошу помочь разобраться. Не апдейтится база. В чём прикол?

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

  1. oleg67

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

    С нами с:
    14 май 2008
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Харьков
    Итак.
    Есть две php- странички (привожу код ниже). На первой из них печатается список статей (ссылок с описаниями ресурсов - не важно) из базы для того, чтоб можно было выбрать определённую для редактирования.
    На второй - производится собственно update базы по выбранному на предыдушей страничке id. Вроде бы всё правильно сделано. Но почему то результат функции mysql_query возвращает ложь и соответственно в базу никаких изменений не производится. Помогите разобраться в чём тут дело? Уж голову сломал.

    Итак:

    1-я страничка вывода списка статей:

    PHP:
    1.  
    2.  
    3.  
    4. <?
    5. $result = mysql_query ("SELECT id, lnk FROM links");
    6. $myrow = mysql_fetch_array ($result);
    7.  
    8. if (!isset($id))
    9.  {
    10. do
    11.  {
    12.  printf ("<p class = 'main_txt'><a href = 'edit_links.php?id=%s'>%s</a></p>", $myrow['id'], $myrow['lnk'] );
    13.  }
    14.  while ($myrow = mysql_fetch_array ($result));
    15.  }
    16.  else
    17.  {
    18. $result = mysql_query ("SELECT * FROM links WHERE id=$id");
    19. $myrow = mysql_fetch_array ($result);
    20.  
    21. print <<<HERE
    22. <form name="form1" method="post" action="update_links.php">
    23.         <label>
    24.         <p><span class="main_txt">Введите ссылку: (без тэгов): </span><br>
    25.             <input value="$myrow[lnk]" name="lnk" type="text" id="lnk" size="95" maxlength="255">
    26.           </p>
    27.         <p>
    28.           <label><span class="main_txt">Введите краткое описание ссылки:<br>
    29.           <textarea name="description" cols="95" id="description">$myrow[description]</textarea>
    30.           </span>          
    31.           </label>
    32.         </p>
    33.         <p>
    34.           <label><span class="main_txt">Введите рейтинг ресурса (число от 1 до 10):<br>
    35.           </span>
    36.           <textarea name="rating" cols="95" id="rating">$myrow[rating]</textarea>
    37.           </label>
    38.         </p>
    39.              
    40.             <input name="id" type="hidden" value="$myrow[id]">
    41.         <p>
    42.           <input type="submit" name="button" id="button" value="Сохранить изменения">
    43.         </p>
    44.       </form>
    45. HERE;
    46. }
    47. ?>    
    48.  
    -------------------------------------------

    Вторая страничка - обработчк update_links.php

    PHP:
    1.  
    2. <?php
    3. include ("lock.php");
    4. include ("bloks/bd.php");
    5. if (isset($_POST['id']))           {$id = $_POST['id']; if ($id == '') {unset($id);}}
    6. if (isset($_POST['lnk']))        {$lnk = $_POST['lnk']; if ($lnk == '') {unset($lnk);} }
    7. if (isset($_POST['description']))  {$description = $_POST['description']; if ($description == '') {unset($description);}}
    8. if (isset($_POST['rating']))         {$rating = $_POST['rating']; if ($rating == '') {unset($rating);}}
    9. ?>
    10.  
    11. .
    12. .
    13. .
    14. .
    15.   <?php  
    16.        if (isset ($lnk) && isset($description) && isset($rating))
    17.        {
    18.        /*Здесь заноисм инфо в базу*/
    19.  
    20.   echo $id, $lnk, $description, $rating; /* это вставил для отладки. Чтоб видеть что попадает в переменные. */
    21.  
    22. $result = mysql_query ("UPDATE 1inks SET lnk = '$lnk', description = '$description', rating = '$rating' WHERE id='$id'");
    23.        if ($result == 'true') {echo "<p class = 'abzac'> Ссылка успешно обновлена! </p>";}
    24.        else { echo "<p class = 'abzac'> Ошибка базы данных. Ссылка не обновлена! </p>";}      
    25.        }
    26.         else
    27.        {
    28.        echo "<p class = 'abzac'> Вы ввели не всю информайию о ссылке. Ссылка не может быть добавлена в базу!</p>";
    29.        }
    30.            
    31.        ?>  
    32.  
     
  2. oleg67

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

    С нами с:
    14 май 2008
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Харьков
    прикол в том, что $result почему то всё время получается = 'false' Хотя проверяю все переменные печатая в echo
    всё правильно. Все как и должны быть. Не работает только функция апдейта базы. В чём может быть прикол?
     
  3. Anonymous

    Anonymous Guest

    а коннект к базе то есть?
     
  4. oleg67

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

    С нами с:
    14 май 2008
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Харьков
    По идее должён быть. А как бы проверить?
    В incleude подключается файл с коннектом.
    Но проверить бы реально не мешало. А как?
     
  5. oleg67

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

    С нами с:
    14 май 2008
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Харьков
    $db = mysql_connect ("localhost","oleg67","cfkj98");
    if ($db == 'false') {}
    Что=то типа такого? ПРоверку устроить?
    Но по идее всё в порядке. Так как в других таблицах похожий кусок кода работает нормально. :(
     
  6. Anonymous

    Anonymous Guest

    PHP:
    1. <? $db = mysql_connect("localhost","oleg67","cfkj98") or die("Ни шмагла я: " . mysql_error());
    После коннекта база выбирается?
     
  7. oleg67

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

    С нами с:
    14 май 2008
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Харьков
    Ну да, после коннекта. Коннект прописан в самом начале файов страниц в include
     
  8. oleg67

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

    С нами с:
    14 май 2008
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Харьков
    Кстати, очень на то похоже, что его то и нет.. Коннекта.
     
  9. oleg67

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

    С нами с:
    14 май 2008
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Харьков
    По=моему что-то надыбал..
    Вот..
    В обеих файлах стоит коннект к базе в самом начале файлов.

    include ("bloks/bd.php")

    Не может быть так, что он в первом файле читает список полей из базы, выводит всю инфу из них в форму. Потом я её редактирую в этом же файле, а когда жму кнопку ОБНОВИТЬ на этой форме, то ...
    Попадая в обработчик (который тоже начинается коннектом к базе) все переменные теряются. ТО есть происходит переподсоединение?
    Может так?
     
  10. oleg67

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

    С нами с:
    14 май 2008
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Харьков
    Точно!!!!
    Таак и есть...
     
  11. oleg67

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

    С нами с:
    14 май 2008
    Сообщения:
    37
    Симпатии:
    0
    Адрес:
    Харьков
    Уууррааа ЗАРАБОТАЛООО! :-D