Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » ASP, Perl, PHP и MySQL

скрипт редактирования заметок

Обсуждение темы скрипт редактирования заметок в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Я начинающий программист, и сейчас разрабатываю скрипт для редактирования заметок. А сложность в том, что я хочу сделать его на одном файле, хотя ...


Закрытая тема
 
Опции темы
Старый 23.01.2011, 18:23   #1
Я начинающий программист, и сейчас разрабатываю скрипт для редактирования заметок. А сложность в том, что я хочу сделать его на одном файле, хотя он должен обрабатывать как минимум четыре формы.
1Ф - выбор действия (добавление, редактирование или удаление)
2Ф, 3Ф и 4Ф - формы соответствующие действию.
Вот мой скрипт:
PHP код:
<?php 
       
$thisfile 
"comments2.php";
// Это пока две формы 1Ф и 2Ф
$form_choice = <<< YURCH1
<p><b>Выберите желаемое действие</b></p>
<form method="post"     action="
$thisfile">
<input type="radio" name="act"  value="add" checked>
To add a text.<br/ >
<input type="radio" name="act"  value="edit">
To edit a text.<br/ ><br/ > 
<input type="submit" name="choice"  value="Choice">
</form>
YURCH1;

$form_add = <<< YURADD
<p><b>Введите название</b></p>
<form method="post" action="
$thisfile">
<input type="text" size=50 name="comment_header" value="
$comment_header"><br/ >
<p><b>Введите текст</b></p>
<textarea name = "comment" rows = 10 cols = 50>
$comment</textarea>
<br /><br />
<input type = "submit" name = "submit1" value = "submit1">
</form>
YURADD;

//Вывод 1Ф - выбор действия
   
if (!isset($_POST['choice']) && !isset($_POST['submit1'])&& !isset($_POST['submit2'])&& !isset($_POST['submit3']))  
  {
    
$message $form_choice;
  } 
//Вывод 2Ф - добавление
   
elseif (isset($_POST['choice']) && $_POST['choice'] == 'Choice' && 
           isset(
$_POST['act'])) {$act $_POST['act'];} 
   
    if (
$act "add")  {$message $form_add;}
     
   if (isset(
$_POST['act'])) {$act $_POST['edit'];
   
//  $message = $form_edit;}
   //if (isset($_POST['act'])) {$act = $_POST['del'];
   //  $message = $form_del;}
                 
    
if (!isset($_POST['comment_header']) || $_POST['comment_header'] =='' || 
                                      
strlen($_POST['$comment_header']) > 50 || 
                                     !isset(
$_POST['$comment'])  ||
                                      
$_POST['comment'] =='')    {
       
$message '<p><b>There is a problem. Did you enter header and text.</b></p>';
       
$message .= $form_add;
       } 
       
     
/*   else {
      
       // Отформатировать данные
   $comment_header = $_POST['comment_header'];
   $as_comment_header = addslashes($comment_header);
   $comment = $_POST['comment'];
   $as_comment = addslashes($comment);
   
   // Записать данные в БД
   include("phpbook_vars.inc");
 mysql_connect($hostname, $username, $password)
       or die("Could not connect to database");
       mysql_select_db('phpbook');
   
   $query = "INSERT INTO comments
             (comment_header, comment)
             VALUES ('$as_comment_header',
              '$as_comment')";
             
        $result = mysql_query($query)
                or die("Could not insert the data to database");
        
        if (mysql_affected_rows() ==1 ) {
          $message = '<p>Your text has been insert.</p>';
        } else {
        error_log(mysql_error());
          $message = '<p>Something went wrong.</p>';
      }
      } */
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>comments</title>
</head>

<body>
<?php echo $message;?>
</body>
</html>
Вопросы: 1. Замучили сообщения о необъявленных переменных
2. Скрипт по частям работает, а в целом - нет
3. Если отключаю проверку заполнения формы 2Ф, верхняя часть скрипта работает корректно, а при подключении проверки сразу "улетает" на вывод ошибки при незаполненной форме.
4. Когда ввожу данные в форму, они как бы не существуют и остаются сообщения о неопределённых переменных $comment_header и $comment, хотя кнопка была нажата. Соответственно в БД тоже ни чего не пишется.
Спасибо за помощь, если таковая будет.
 
Старый 23.01.2011, 18:23
Ссылки
Старый 23.01.2011, 22:45   #2
Как начинающему могу посоветовать - пишите каждую функцию отдельно, потом можете include файл с той функцией. Это грамотный подход как с точки зрения программирования в целом (на любом языке), так и с точки зрения написания на php, поскольку рано или поздно ваши скрипты вырастут до небывалых размеров, и все лепить в одном месте - запутаетесь. Вдобавок, я не очень разбирался в вашем коде, но могу заметить, что ошибочно введенные данные сначала могут пройти как ф2, а потом об этом понять в ф3 и напечатать что-то лишнее, оттуда наверное и проблемы
 
Старый 24.01.2011, 09:35   #3
ivanych, изучите средства ООП языка php и используйте в своих проектах MVC. Все Ваши вопросы сразу же отпадут, а код станет более читабельным..
 
Старый 02.02.2011, 01:16   #4
Сделать это в одном файле сложно, и решение будет далеко не элегантным. Да и к тому же использование 4х форм - явный перебор.

Просто и удобно можно сделать следующим образом: нужно 4 файла.
1: add.php к примеру. Там у нас есть форма добавления и сразу обработчик. В начале файла проверяется условие, была ли нажата кнопка сабмит. Если да - в дело вступает обработчик, если нет - выводится сама форма.

2: edit.php. В него методом GET по ссылке будет передаваться идентификатор заметки. Будет состоять из 3х частей. Опять же, в самом начале проверяем, была ли нажата кнопка сабмит в форме. Если нет - вытаскиваем из базы эту заметку и вставляем значения в поля формы. По нажатию на кнопку сабмит запускается обработчик, который записывает обновленные поля формы в базу под этим же идентификатором.

3: del.php. Ему форма не нужна. Сюда опять же через ссылку будет передаваться идентификатор заметки, а в самом файле будет только обработчик - удаление из базы заметки по полученному идентификатору.

4: файл вроде меню, где будут в цикле выводится заголовки всех заметок из базы, и рядом с каждой будут строиться две ссылки "редактировать/удалить", которые формируются с идентификатором из базы на файлы соответственно edit.php?id=% и del.php?id=%.
И в этом файле так же будет ссылка на add.php с якорем "добавить заметку"



Это решение самое простое, под силу начинающему программисту, без заморочек с ООП. Главное не забыть про безопасность при передаче параметров по ссылке.
И не сочтите за грубость, но заставить работать ваш скрипт заставит чудо. И уж не хотел бы я быть тем человеком, которому придется его впоследствии сопровождать.
 
Старый 02.02.2011, 01:16
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Страница редактирования файла .css Sven ASP, Perl, PHP и MySQL 1 07.10.2010 00:42
jQuery: блокировка редактирования страницы + всплывающее окно Anthony HTML, CSS, JavaScript 3 24.12.2008 20:56
Скрипт Rss Земцов Поисковые системы 8 01.06.2006 13:39
Ищу скрипт GLUK ASP, Perl, PHP и MySQL 17 17.02.2006 01:17
Увеличение файла (рисунка) после редактирования tim Зал дебютантов 10 17.04.2004 18:37


Текущее время: 06:02. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум