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

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

  • AdmBuxonly

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

    Spritz Окт. 24, 2008, 7: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, 7: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, 7:35 п.п., спустя 4 минуты 24 секунды

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

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

    Spritz Окт. 24, 2008, 7:37 п.п., спустя 1 минуту 42 секунды

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

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

    Spritz Окт. 24, 2008, 7: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, 9:46 п.п., спустя 2 часа 7 минут 26 секунд

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


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

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

    Spritz Окт. 25, 2008, 12: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, 2: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, 2: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, 2:51 п.п., спустя 1 минуту 56 секунд

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

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

    Spritz Окт. 25, 2008, 3:34 п.п., спустя 43 минуты 58 секунд

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

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

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

    Spritz Окт. 25, 2008, 3: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, 7:13 п.п., спустя 3 часа 36 минут 25 секунд

    ок, спс…

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