Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы с апдейтом mysql таблиц.(не моуг разобраться php или mysql)
 
 автор: Batis   (25.12.2008 в 00:00)   письмо автору
2.5 Кб
 
 



<?php 
if (isset($title) && isset($meta_d) && isset($meta_k) && isset($date) && isset($description) && isset($text) && isset($author))
{
$result mysql_query ("UPDATE lessons SET title='$title', meta_d='$meta_d', meta_k='$meta_k', date='$date', description='$description', text='$text', author='$author' WHERE id='$id'");
if (
$result == 'true') {echo "<p>Ваш урок успешно обновлен!</p>";}
else {echo 
"<p>Ваш урок не обновлен!</p>";}
}         
else 
{
echo 
"<p>Вы ввели не всю информацию, поэтому урок в базе не может быть обновлен.</p>";
}
?>

  Ответить  
 
 автор: Batis   (25.12.2008 в 00:02)   письмо автору
 
   для: Batis   (25.12.2008 в 00:00)
 

Не апдейтица таблица сразу перескакивает в положение

echo "<p>Вы ввели не всю информацию, поэтому урок в базе не может быть обновлен.</p>";

  Ответить  
 
 автор: Batis   (25.12.2008 в 00:02)   письмо автору
 
   для: Batis   (25.12.2008 в 00:00)
 

Не апдейтица таблица сразу перескакивает в положение

echo "<p>Вы ввели не всю информацию, поэтому урок в базе не может быть обновлен.</p>";


в чем может быть проблема?

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 00:41)   письмо автору
 
   для: Batis   (25.12.2008 в 00:02)
 

Ну так ведь написано - Вы ввели не всю информацию. Какая то переменная пуста.

  Ответить  
 
 автор: Trianon   (25.12.2008 в 00:52)   письмо автору
 
   для: Batis   (25.12.2008 в 00:00)
 

где определены все эти переменные, которые Вы проверяете в первой строке?

  Ответить  
 
 автор: Batis   (25.12.2008 в 01:04)   письмо автору
2.8 Кб
 
   для: Trianon   (25.12.2008 в 00:52)
 


<?php 


if(!isset($id))
{
$result=mysql_query("SELECT title,id FROM lessons");
$myrow mysql_fetch_array ($result);
do
{
printf ("<p><a href='edit_lesson.php?id=%s'>%s</a></p>"$myrow["id"],$myrow["title"]);
}
while (
$myrow mysql_fetch_array ($result));
}


else 
{
$result=mysql_query("SELECT * FROM lessons WHERE id=$id");
$myrow mysql_fetch_array ($result);
print <<<HERE
<form name="form1" method="post" action="update_lesson.php">
  <p>
    <label>Введите название урока:
     <br> <input value="
$myrow[title]" type="text" name="title" id="title" />
      </label>
  </p>
    <p>
    <label>Введите краткое описание урока:
     <br> <input value="
$myrow[meta_d]"  type="text" name="meta_d" id="meta_d" />
      </label>
  </p>
      <p>
    <label>Введите ключевыеслова для урока:
     <br> <input value="
$myrow[meta_k]"  type="text" name="meta_k" id="meta_k" />
      </label>
  </p>
        <p>
    <label>Введите дату урока в формате xxxx-xx-xx год-месяц-день:
     <br> <input value="
$myrow[date]"  type="text" name="date" id="date" />
      </label>
  </p>
          <p>
    <label>Введите краткое описание уроков с тэгами абзацев урока:
     <br> <textarea name="text" id="description" cols="40" rows ="5" /> "
$myrow[description]" </textarea>
      </label>
  </p>
          <p>
    <label>Введите полный текст урока с тэгами:
<br> <textarea name="text" id="text" cols="40" rows ="20" /> "
$myrow[text]" </textarea>
      </label>
  </p>
      <p>
    <label>Введите автора урока:
     <br> <input value="
$myrow[author]"  type="text" name="author" id="author" />
      </label>
  </p>
  
  <input name="id" type="hidden" value="
$myrow[id]" />
        <p>
    <label>
      <br> <input name="submite" type="submit" id="submit" value="Изменить." />
   </label>
  </p>
</form>


HERE;
}
?>



переменные все введены...

  Ответить  
 
 автор: Batis   (25.12.2008 в 01:07)   письмо автору
 
   для: Batis   (25.12.2008 в 01:04)
 

кароче говоря что то на подобии редактирования получаеться

вывожу из базданных все переменные редактиру а при апдейте он говорит что типо не всё введено...

  Ответить  
 
 автор: Batis   (25.12.2008 в 01:10)   письмо автору
 
   для: Batis   (25.12.2008 в 01:07)
 

как можно узнать где он прекращает апдейт и выходит из функции?

  Ответить  
 
 автор: Trianon   (25.12.2008 в 01:11)   письмо автору
 
   для: Batis   (25.12.2008 в 01:04)
 

При чем тут это?
Не вижу ни одной.

  Ответить  
 
 автор: Batis   (25.12.2008 в 01:16)   письмо автору
 
   для: Trianon   (25.12.2008 в 01:11)
 

имееться два файла один edit_lesson.php второй update_lesson.php

При редактировании edit_lesson методом пост отправляет переменные в update_lesson
вот...

  Ответить  
 
 автор: Trianon   (25.12.2008 в 01:29)   письмо автору
 
   для: Batis   (25.12.2008 в 01:16)
 

метод POST никуда ничего сам не проставляет. Кроме как в массивы $_POST и $_REQUEST.

  Ответить  
 
 автор: Batis   (25.12.2008 в 01:36)   письмо автору
 
   для: Trianon   (25.12.2008 в 01:29)
 

ошибка получаеться в edit_lesson? а вот где ?

  Ответить  
 
 автор: Trianon   (25.12.2008 в 01:39)   письмо автору
 
   для: Batis   (25.12.2008 в 01:36)
 

if (isset($_POST['title']) ...
дальше сами?

  Ответить  
 
 автор: Batis   (25.12.2008 в 01:46)   письмо автору
 
   для: Batis   (25.12.2008 в 01:36)
 

Ошибка получаеться где то в форме? когда отправляю переменные?

  Ответить  
 
 автор: Trianon   (25.12.2008 в 01:53)   письмо автору
 
   для: Batis   (25.12.2008 в 01:46)
 

Почему в форме? В форме всё нормально вроде.
Если в обработчике написать print_r($_POST); - что-нибудь видно?

  Ответить  
 
 автор: Batis   (25.12.2008 в 02:43)   письмо автору
 
   для: Batis   (25.12.2008 в 01:46)
 

if (isset($_POST['title'])) {$title = $_POST['title'];if ($title == '') {unset($title);}}

получаеться что если есть $_POST то заноситься в обычную переменную если нету то переменная $title удаляеться... так ведь?

  Ответить  
 
 автор: Batis   (25.12.2008 в 02:46)   письмо автору
 
   для: Batis   (25.12.2008 в 02:43)
 

Array ( [title] => Как открыть счет в Rupay [meta_d] => Инструкция по открытию счёта в Rupay [meta_k] => Rupay, счет, открыть [date] => 2008-09-18 [text] => \"

Принт ошибок не даёт но выводиться в аком формате...

  Ответить  
 
 автор: neokortex   (25.12.2008 в 02:56)   письмо автору
 
   для: Batis   (25.12.2008 в 02:46)
 

<?php 
if (isset($title) && isset($meta_d) && isset($meta_k) && isset($date) && isset($description) && isset($text
.... 

замените все переменные такми образом: $title на $_POST['title']

  Ответить  
 
 автор: Batis   (25.12.2008 в 03:20)   письмо автору
 
   для: neokortex   (25.12.2008 в 02:56)
 

if (isset($_POST['title']) && isset($_POST['meta_d']) && isset($_POST['meta_k']) && isset($_POST['date']) && isset($_POST['description']) && isset($_POST['text']) && isset($_POST['author']))


Ругаться не ругаеть вообще но и апдейт неидёт :(

  Ответить  
 
 автор: slo_nik   (25.12.2008 в 06:30)   письмо автору
 
   для: Batis   (25.12.2008 в 03:20)
 

попробуй в конце строк
else {echo "<p>Ваш урок не обновлен!</p>";} 
и
echo "<p>Вы ввели не всю информацию, поэтому урок в базе не может быть обновлен.</p>";

дописать
mysql_error();

может у тебя есть какая то ошибка, это поможет её поймать.
проверь в БД типы полей, у меня такая фигня была, ругаться не ругалось, но и не обновляло.
оказалось дело в типе поля таблицы БД, поменял tinytext на text и всё заработало:)

  Ответить  
 
 автор: Trianon   (25.12.2008 в 08:58)   письмо автору
 
   для: Batis   (25.12.2008 в 03:20)
 

потому что ниже ( в операторе UPDATE) у Вас остались неопределенные переменные.

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 09:08)   письмо автору
 
   для: Trianon   (25.12.2008 в 08:58)
 

Там до запроса дело вообще не доходит. Код написан в таком кривом стиле, что не сразу и поймёшь... А разве помешал бы null при апдейте? По моему просто записалась бы пустота....

  Ответить  
 
 автор: Trianon   (25.12.2008 в 13:15)   письмо автору
 
   для: Николай2357   (25.12.2008 в 09:08)
 

Вы пытаетесь рассматривать не тот скрипт , на который жалуется автор.

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 14:29)   письмо автору
 
   для: Trianon   (25.12.2008 в 13:15)
 

Всё я правильно рассматриваю. Переменная $description у автора не определена, по причине ошибки в именах элементов. А по сему блок с запросом на UPDATE вообще не включается. А если бы он включался, то просто в поле description прописался бы null... Разве не так?

  Ответить  
 
 автор: Trianon   (25.12.2008 в 14:33)   письмо автору
 
   для: Николай2357   (25.12.2008 в 14:29)
 

нет, если Вам хочеться решить конкретно эту проблему автора - ради бога..
Медвежью услугу Вы ему в этом окажете, совершенно однозначно.

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 16:16)   письмо автору
 
   для: Trianon   (25.12.2008 в 14:33)
 

Если бы мне оказывали такие медвежьи услуги почаще, я бы давно вырос из чайников ))). Вопрос в том, как автор распорядится полученными знаниями.

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 07:54)   письмо автору
 
   для: Batis   (25.12.2008 в 01:04)
 

Вот тут у Вас дырка. Имена элементов одинаковые, а значит одного из них нет.

<label>Введите краткое описание уроков с тэгами абзацев урока: 
     <br> <textarea name="text" id="description" cols="40" rows ="5" /> "$myrow[description]" </textarea> 
      </label> 
  </p> 
          <p> 
    <label>Введите полный текст урока с тэгами: 
<br> <textarea name="text" id="text" cols="40" rows ="20" /> "$myrow[text]" </textarea> 
      </label>

  Ответить  
 
 автор: Batis   (25.12.2008 в 15:10)   письмо автору
 
   для: Николай2357   (25.12.2008 в 07:54)
 

Спасибо огромное!!! Вы действительно обладаете знаниями :)))


Ещё вопрос что означает кривой стиль? имеются ли какие нибудь стили кода? вернее стили написания кода?
я правильно понял?

  Ответить  
 
 автор: neokortex   (25.12.2008 в 16:14)   письмо автору
 
   для: Batis   (25.12.2008 в 15:10)
 

например для меня криво вот это

&&

я обычно использую and
или например
if ($result == 'true')
а надо скорее $result == true
а еще проще if($result)
и (для перфекционистов-шизофреников :) вместо
UPDATE lessons SET title='$title'

я пишу
UPDATE `lessons` SET `title`='$title'
...

  Ответить  
 
 автор: Николай2357   (25.12.2008 в 16:28)   письмо автору
 
   для: Batis   (25.12.2008 в 15:10)
 

Дело в том, что писать код нужно так, что бы было понятно не только Вам, но и всем остальным. Стиль - вещь интимная, есть несколько стандартов стилей, и Вы вправе выбрать любой или использовать свой собственный. Но несколько общих правил, особенно на этом форуме, желательно соблюдать. Основоные:
1.Фигурные скобки нужно распологать ниже выражения. Вот так:
<?
//if ($result == 'true') {echo "<p>Ваш урок успешно обновлен!</p>";} 
//else {echo "<p>Ваш урок не обновлен!</p>";}
if ($result == 'true'
{
echo 
"<p>Ваш урок успешно обновлен!</p>";

else 
{
echo 
"<p>Ваш урок не обновлен!</p>";
}
а в данном случае лучше обойтись совсем без них:
<?
if ($result == 'true')
echo 
"<p>Ваш урок успешно обновлен!</p>";
else
echo 
"<p>Ваш урок не обновлен!</p>";


2. Выражение, находящееся внутри другого нужно смещать вправо табулятором. Вот так:
<?
if (isset($title) && isset($meta_d) && isset($meta_k) && isset($date
&& isset(
$description) && isset($text) && isset($author)) 

$result mysql_query ("UPDATE lessons SET title='$title', meta_d='$meta_d', 
meta_k='
$meta_k', date='$date', description='$description', text='$text',
author='
$author' WHERE id='$id'"); 
    if (
$result == 'true')
    echo 
"<p>Ваш урок успешно обновлен!</p>"
    else 
    echo 
"<p>Ваш урок не обновлен!</p>";
}
а закрывающую фигурную скобку ставить точно под открывающей.
3. Не писать длинных строк, использовать переносы.
Вот и всё впринципе.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования