ФорумПрограммированиеPHP для идиотов → Не запоняет форму при редактировании чего-либо

Не запоняет форму при редактировании чего-либо

  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 24 октября 2008 г. 19:20, спустя 8 минут 5 секунд

    Все, код полностью исправил, но столкнулся еще с одной непонятной проблемой: заходя на страницу http://barosha.jino.ru/admin/edit/edit_articles.php обновляю её и выбираю любой понравившийся урок для редактирования, нажимаю на ссылку и открывается форма заполненная, но не так как бы мне этого хотелось выводит что попало и где не недолжно быть этого, к примеру ту же дату.



    Страница edit_articles.php


    <?php
    if(is_numeric($_GET["id"]))
    {
    $id = $_GET["id"];
    }
    if(!isset($id))
    {
    $result = mysql_query("SELECT id,title,meta_d,meta_k,date,description,text,author FROM articles");
    $myrow = mysql_fetch_array($result);

    do
    {
    printf("<p><a href='../edit/edit_articles.php?id=%s'>%s</a></p>",$myrow['id'],$myrow['title']);
    }
    while($myrow = mysql_fetch_array($result));
    }

    else
    {
    $result = mysql_query("SELECT id,title,meta_d,meta_k,date,description,text,author FROM articles WHERE id=$id");
    $myrow = mysql_fetch_array($result);
    print <<<HERE
    <form name="form1" method="post" action="../header/header_articles.php">
         <p>
           <label>Введите название статьи:<br>
             <input value="$myrow[title]" name="title" type="text" id="title" size="40">
             </label>
         </p>
         <p>
           <label>Введите краткое описание статьи:<br>
           <input value="$myrow[meta_d]" name="meta_d" type="text" id="meta_d" size="40">
           </label>
         </p>
         <p>
           <label>Введите ключевые слова:<br>
           <input value="$myrow[meta_k]" name="meta_k" type="text" id="meta_k" size="40">
           </label>
         </p>
         <p>
           <label>Введите дату добавления:<br>
           <input value="$myrow[date]" name="date" type="text" id="date">
           </label>
         </p>
         <p>
           <label>Введите краткое описание статьи с тегами (p, br, i, b, table div и т.д.)
           <textarea value="$myrow[description]" name="description" cols="50" rows="10" id="description">$myrow[description]</textarea>
           </label>
         </p>
         <p>
           <label>Введите html - код с полным описанием статьи включая тэги, ссылки на изображения и т.д.<br>
           <textarea name="text" cols="50" rows="15" id="text">$myrow[text]</textarea>
           </label>
         </p>
         <p>
           <label>Автор статьи (Фамилия Имя):<br>
           <input value="$myrow[author]" name="author" type="text" size="40" id="author">
           </label>
         </p>
     
    <input name="id" type="hidden" value="$myrow[id]">  
     
         <p>
           <label>
           <input type="submit" name="submit" value="Сохранить статью" id="submit">
          </label></p>
         </form>
    HERE;
    }
    ?>


    Так, как сайт в разработке, то вы можете сами убедится в работоспособности админки: добавте любую статью вписав в форму все данные как надо. Зайдите на страницу edit_articles.php и обновите её. Появится только что добавленная статья. Нажмите на неё и увидите, что происходит… что куда подставляется….
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 24 октября 2008 г. 19:31, спустя 10 минут 46 секунд

    Кстати, добавляется тоже некоректно, код вроде правильный: http://barosha.jino.ru/articles.php (обновите)


    Код обработчика формы страницы http://barosha.jino.ru/admin/news/new_articles.php


    <?php include('../../config.php');
    // проверяем переменные на существование
    if(isset($_POST['title']))
    {$title = $_POST['title'];
    if ($title == '')
    {
    unset($title);
    }

    }

    if(isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($title == '') {unset($meta_d);} }
    if(isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($title == '') {unset($meta_k);} }
    if(isset($_POST['date'])) {$date = $_POST['date']; if ($title == '') {unset($date);} }
    if(isset($_POST['description'])) {$description = $_POST['description']; if ($title == '') {unset($description);} }
    if(isset($_POST['text'])) {$text = $_POST['text']; if ($title == '') {unset($text);} }
    if(isset($_POST['author'])) {$author = $_POST['author']; if ($title == '') {unset($author);} }

    ?>


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Административная часть - добавление статьи: обработчик</title>
    <link href="../../style.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    <!–
    .style1 {color: #FFFFFF}
    –>
    </style>
    <link href="../style.css" rel="stylesheet" type="text/css">
    </head>

    <body>
    <table width="750" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bgcolor="#CCCCCC">
    <tr>
    <td scope="col" align="center">Админ-панель - добавление статьи</td>
    </tr>

    <tr>
    <td>

    <table width="100%" border="0">
    <?php include('../include/left_table.php'); ?>
    <td align="left" valign="top" class="main_border">
    <?php

    if (isset($title) && isset($meta_d) && isset($meta_k) && isset($description) && isset($date) && isset($text) && isset($author))
    {
    // вывод
    $result = mysql_query("INSERT INTO articles (title,meta_d,meta_k,date,description,text,author) VALUES ('$title','$meta_d','meta_k','$description','$date','$text','$author')");

    if($result = true){echo "<p>Урок успешно добавлен!</p>";}
    else {echo "Урок не добавлен!";}
    }

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


    ?>



  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 24 октября 2008 г. 19:35, спустя 4 минуты 24 секунды

    Может в БД поле date установить текстовое или варчар? Что-то с добавлением даты не то…
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 24 октября 2008 г. 19:37, спустя 1 минуту 42 секунды

    для дат есть свои типы полей и функции для работы с ними
    http://www.mysql.ru/docs/man/Date_and_time_functions.html
    все умрут, а я изумруд
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 24 октября 2008 г. 19:39, спустя 1 минуту 56 секунд


    – Структура таблицы `articles`


    CREATE TABLE `articles` (
     `id` int(5) NOT NULL auto_increment,
     `title` varchar(255) NOT NULL,
     `meta_d` varchar(255) NOT NULL,
     `meta_k` varchar(255) NOT NULL,
     `date` date NOT NULL,
     `description` text NOT NULL,
     `text` text NOT NULL,
     `form` text NOT NULL,
     `author` varchar(255) NOT NULL,
     PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=17 ;
  • dallone

    Сообщения: 48 Репутация: N Группа: Адекваты

    Spritz 24 октября 2008 г. 21:46, спустя 2 часа 7 минут 26 секунд

    dallone, Алекс звездочка не тормознее))) изза нее потом могу быть траблы если добавяться новые поля а в результатах они не будут нужны


    1. MySQL перед запросом тогда определяет какие поля имеютсо у таблицы. (да согласен копеечные затраты, но все же :)
    2. Ну так если "добавятся новые поля, а в результатах они не будут нужны" => будет выбираться куча всягоко хлама => тормознее (:
    о_О
  • Sephiroth_Lukaw

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 25 октября 2008 г. 0:40, спустя 2 часа 53 минуты 33 секунды

    unofficial&client=firefox-a">http://www.google.ru/search?q=%24meta_d+%3D+%24_POST%5B'meta_d'%5D%3B+if+(%24title+%3D%3D+'')+%7Bunset(%24meta_d)%3B&ie=utf-8&oe=utf-8&aq=t&rls=org.mozillaruunofficial&client=firefox-a
    4 ссылки, коды почти одинаковые, разница в датах, месяц, два. Вы откуда код взяли?
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 25 октября 2008 г. 14:02, спустя 13 часов 22 минуты 1 секунду

    Ура заработало!!! Я нашел ошибку:

    НЕПРАВИЛЬНО!

    if (isset($title) && isset($meta_d) && isset($meta_k) && isset($description) && isset($date) && isset($text) && isset($author))
    {
    // вывод
    $result = mysql_query("INSERT INTO articles (title,meta_d,meta_k,date,description,text,author) VALUES ('$title','$meta_d','meta_k','$description','$date','$text','$author')");


    ПРАВИЛЬНО!


    if (isset($title) && isset($meta_d) && isset($meta_k) && isset($description) && isset($date) && isset($text) && isset($author))
    {
    // вывод
    $result = mysql_query("INSERT INTO articles (title,meta_d,meta_k,date,description,text,author) VALUES ('$title','$meta_d','$meta_k','$date','$description','$text','$author')");



    Все, спасибо! Извеняюсь что тупанул и вас отвлек :)

  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 25 октября 2008 г. 14:49, спустя 46 минут 46 секунд

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

    Я установил значение в базе такое:

    ALTER TABLE `articles` CHANGE `date` `date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' 
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 25 октября 2008 г. 14:51, спустя 1 минуту 56 секунд

    Вот только оно не меняется, а остается таким же 0000-00-00 00:00:00…
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 25 октября 2008 г. 15:34, спустя 43 минуты 58 секунд

    AdmBuxonly, используй для хранения даты TIMESTAMP и присвой параметр по умолчанию CURRENT_TIMESTAMP. И тогда ничего не надо передавать при создании даты, она вставиться текущая.

    Или если необходимо обновить дату, то
    `date` = NOW()
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 25 октября 2008 г. 15:36, спустя 1 минуту 44 секунды

    Короче, для первого варианта, запрос должен выглядить так:

    ALTER TABLE `articles` CHANGE `date` `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • AdmBuxonly

    Сообщения: 370 Репутация: N Группа: Кто попало

    Spritz 25 октября 2008 г. 19:13, спустя 3 часа 36 минут 25 секунд

    ок, спс…

Пожалуйста, авторизуйтесь, чтобы написать комментарий!