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

Форум MySQL

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

 

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

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

тема: Редактирование Новостей
 
 автор: maDMo3r   (10.12.2004 в 22:25)   письмо автору
 
 

У меня такая просьба не могли бы вы помочь и обьяснить! Как можно вытащить из базы данных сообщение которое я Добавил ? Например чтобы было видно сколько сообщений у меня всего есть и например нажать и оно помещается в поле ввода и на кнопку редактировать нажать и оно редактируется :) Если не трудно то помогите :)

Это КОд admin.php


<?php
$dblocation 
"10.15.239.243";
$dbname "news";
$dbuser "root";
$dbpasswd "";
if (isset(
$HTTP_POST_VARS['name']))
{
    
$name $HTTP_POST_VARS['name'];
    
$db_connect mysql_connect($dblocation,$dbuser,$dbpasswd);
    
mysql_select_db('news',$db_connect);
    
$query "INSERT INTO news VALUES(NULL,'$name', NOW())";
    
$result mysql_query($query,$db_connect);
    if (!
$result)
    {
    
$HTTP_SESSION_VARS['valid_user'] = $name;
    }
}
?> 
<html>
<head>
</head>
<body>
<form method="post" action="admin.php">
<textarea name="name" cols="50" rows="8"></textarea>
<input name="submit" type="submit" value="Добавить">
</form>
<?
if (isset($HTTP_SESSION_VARS['valid_user']))
{
    echo 
' Запись добавлена ';
}
else
{
    if(isset(
$name))
    {
        echo(
"ЗАпись не добавлена :(");
        }
    
?>  
  <?
}
?>
</body>
</html>


А это если на всякий случай база данных :)

create database news;
create table news (
id)news int(6) not null auto_increment,
name text,
time datetime default null,
primary key (id_news)
) TYPE=MyISAM;


Вроде все )

   
 
 автор: cheops   (10.12.2004 в 23:34)   письмо автору
 
   для: maDMo3r   (10.12.2004 в 22:25)
 

1) Для того, чтобы выяснить число новостей в базе таблице новостей следует выполнить следующий скрипт:
<?php 
$dblocation 
"10.15.239.243"
$dbname "news"
$dbuser "root"
$dbpasswd ""
$db_connect mysql_connect($dblocation,$dbuser,$dbpasswd); 
mysql_select_db('news',$db_connect); 
$query "SELECT COUNT(*) FROM news"
$result mysql_query($query,$db_connect); 
if (!
$result

  echo 
mysql_result($result,0);

?>

   
 
 автор: maDMo3r   (11.12.2004 в 00:02)   письмо автору
 
   для: cheops   (10.12.2004 в 23:34)
 

А редактирование ? :%) и Где можно найти Команды к Базе данных? ато в книжке их почти и нету :(

   
 
 автор: cheops   (11.12.2004 в 00:03)   письмо автору
 
   для: maDMo3r   (10.12.2004 в 22:25)
 

2) Для того чтобы обновлять новости следует вывести их список со ссылками вида
<a href=updateform.php?id_news=45></a>

т.е. ссылка на файл с указанием первичного ключа исправляемой новости, сам файл updateform.php может иметь вид:
<?php 
  
// Извлекаем из строки запроса первичный номер
  // редактируемой новости
  
if(empty($_GET['id_news'])) exit("не указана редактируема новость");
  else 
$id_news $_GET['id_news'];
  
// Соединяемся с базой данных
  
$dblocation "10.15.239.243"
  
$dbname "news"
  
$dbuser "root"
  
$dbpasswd ""
  
$db_connect mysql_connect($dblocation,$dbuser,$dbpasswd); 
  
mysql_select_db('news',$db_connect);
  
// Выясняем содержимое новости с первичным ключом
  // id_news 
  
$query "SELECT name FROM news WHERE id_news=$id_news"
  
$result mysql_query($query,$db_connect);
  if(!
result) exit(mysql_error()); 
  
$name mysql_result($result,0);
?>
<html> 
<head> 
</head> 
<body> 
<form method="post" action="update.php"> 
<textarea name="name" cols="50" rows="8"><?php echo $name?></textarea> 
<input type=hidden name=id_news values=<?php echo $id_news?>>
<input name="submit" type="submit" value="Добавить"> 
</form> 
</body> 
</html>

Эта форма отправляет данные обработчику update.php, который может иметь вид
<?php
  
// Соединяемся с базой данных
  
$dblocation "10.15.239.243"
  
$dbname "news"
  
$dbuser "root"
  
$dbpasswd ""
  
$db_connect mysql_connect($dblocation,$dbuser,$dbpasswd); 
  
mysql_select_db('news',$db_connect);
  
// Формируем SQL-оператор UPDATE
  
$query "UPDATE news SET name = '".$_POST['name']."' WHERE id_news=".$_POST['id_news']; 
  
// Выполняем SQL-запрос
  
if(mysql_query($query))
  {
    
// Осуществляем автоматический переход на главную страницу
    
echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
          </HEAD></HTML>"
;
  }
?>

   
 
 автор: maDMo3r   (11.12.2004 в 11:47)   письмо автору
 
   для: cheops   (11.12.2004 в 00:03)
 

Чето я не дорубил куда вставлять вот это !


<a href=updateform.php?id_news=45></a>

Или что с ним делать ? :(


Notice: Use of undefined constant result - assumed 'result' in d:\Apach\www\updateform.php on line 17
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 3 in d:\Apach\www\updateform.php on line 18

Вот что еще пишет если захожу туда по ссылке - http://10.15.239.243/updateform.php?id_news=1

   
 
 автор: cheops   (11.12.2004 в 12:39)   письмо автору
 
   для: maDMo3r   (11.12.2004 в 11:47)
 

1)Эти ссылке следует сформировать, выбрав все записи в базе данных.
2)Это замечание (по коду), для его подавления в конфигурационном файле php.ini следует понизить уровень вывода ошибок как это описано в

http://www.softtime.ru/info/articlephp.php?id_article=24

   
 
 автор: maDMo3r   (11.12.2004 в 14:57)   письмо автору
 
   для: cheops   (11.12.2004 в 12:39)
 

обьясни плиз поточней о (1) ! :)
Не знаю пытаюсь ничего не получается :(
Пишется постоянно та ошибка у меня все настроено как и должно быть ;) :) Обьясни плиз Куда вставлять ту ссылку :)

Все Работает только вот когда выбираю новость оно вес добавляется и только сверху пишется
Notice: Use of undefined constant result - assumed 'result' in d:\Apach\www\updateform.php on line 17

Редактирую нажимаю Добавить оно заходить на update,php и все :( и ничего не апдэйтит :(

   
 
 автор: glsv (Дизайнер)   (11.12.2004 в 22:17)   письмо автору
 
   для: maDMo3r   (11.12.2004 в 14:57)
 

Notice - это предупреждения. Чтобы отключить их вывод проверьте в php.ini значение директивы error_reporting. Оно должно быть таким:

error_reporting  = E_ALL & ~E_NOTICE 

   
 
 автор: cheops   (11.12.2004 в 22:47)   письмо автору
 
   для: maDMo3r   (11.12.2004 в 14:57)
 

Я здесь имел ввиду следующее: реализовать редактирование как это сделано в разделе администрирования гостевой книге MySQL в разделе downloads, т.е. выводить новости, а под каждой из новостей управляющую ссылку "Исправить", на следующий манер:
<?php 
$dblocation 
"10.15.239.243"
$dbname "news"
$dbuser "root"
$dbpasswd ""
$db_connect mysql_connect($dblocation,$dbuser,$dbpasswd); 
mysql_select_db('news',$db_connect); 
$query "SELECT * FROM news"
$result mysql_query($query,$db_connect); 
if (!
$result

  while(
$news mysql_fetch_array($result))
  {
     
// Выводим саму новость
     
echo $news['name']."<br>";
     
// Выводим управляющую ссылку
     
echo "<a href=updateform.php?id_news=".$news['id_news']."></a><br>";
  }

?>

   
 
 автор: maDMo3r   (12.12.2004 в 01:57)   письмо автору
 
   для: cheops   (11.12.2004 в 22:47)
 

Не знаю твоим способом почему то не выводится наверное я намудрил чегото :(

у меня выводится таким скриптом !

 <?
            $ath 
mysql_query("select * from news;");
            if(
$ath)
            {
                while(
$row mysql_fetch_row($ath))
                 {
                    echo 
"<table bgcolor=#000000>";
                    echo 
"<td> ".$row[1];
                    echo 
"</td>";
                    echo 
"</table>";
                    echo 
"<table bgcolor=#0033FF  background=background/4.gif>";
                    echo 
"<td>".$row[2];
                    echo 
"</td>";
                    echo 
"</table>";
                    echo 
"<hr>";

                    }
        
                }
            else
                {
                    echo 
"<p><b>Error: ".mysql_error()."</b></p>";
                    exit();
                }
            
?>

   
 
 автор: maDMo3r   (12.12.2004 в 23:35)   письмо автору
 
   для: maDMo3r   (12.12.2004 в 01:57)
 

Уже забыл про меня :(

   
 
 автор: cheops   (12.12.2004 в 23:40)   письмо автору
 
   для: maDMo3r   (12.12.2004 в 23:35)
 

Нет, просто я подумал что это утверждение и, что моим способом не получилось, а этим получилось :)))

   
 
 автор: maDMo3r   (12.12.2004 в 23:44)   письмо автору
 
   для: cheops   (12.12.2004 в 23:40)
 

НУ меня только этим путем выводит но не редактирует :(

   
 
 автор: cheops   (13.12.2004 в 00:17)   письмо автору
 
   для: maDMo3r   (12.12.2004 в 23:44)
 

Если у нас работает предыдущий вывод, можно его отредактировать для вывода ссылок следующим образом:
<? 
            $ath 
mysql_query("select * from news;"); 
            if(
$ath
            { 
                while(
$row mysql_fetch_row($ath)) 
                 { 
                    echo 
"<table bgcolor=#000000>"
                    echo 
"<td> ".$row[1]; 
                    echo 
"</td>"
                    echo 
"</table>"
                    echo 
"<table bgcolor=#0033FF  background=background/4.gif>"
                    echo 
"<td>".$row[2]; 
                    echo 
"</td>"
                    echo 
"</table>"
                    echo 
"<hr>"
                    
// Выводим ссылку на редактирование
                    
echo "<a href=updateform.php?id_news=".$row[0]."></a><br>"
                    

                } 
            else 
                { 
                    echo 
"<p><b>Error: ".mysql_error()."</b></p>"
                    exit(); 
                } 
            
?> 

   
 
 автор: maDMo3r   (13.12.2004 в 00:28)   письмо автору
 
   для: cheops   (13.12.2004 в 00:17)
 

Отлично работает :)
Н оне редактирует Оно вставляет в форму нажимаю добавить и оно запускает страницу update.php и все никаких движения и не редактирует :(

   
 
 автор: cheops   (13.12.2004 в 00:38)   письмо автору
 
   для: maDMo3r   (13.12.2004 в 00:28)
 

Поправте файл update.php, добавив обработку ошибок:
<?php 
  
// Соединяемся с базой данных 
  
$dblocation "10.15.239.243"
  
$dbname "news"
  
$dbuser "root"
  
$dbpasswd ""
  
$db_connect mysql_connect($dblocation,$dbuser,$dbpasswd); 
  
mysql_select_db('news',$db_connect); 
  
// Формируем SQL-оператор UPDATE 
  
$query "UPDATE news SET name = '".$_POST['name']."' WHERE id_news=".$_POST['id_news']; 
  
// Выполняем SQL-запрос 
  
if(mysql_query($query)) 
  { 
    
// Осуществляем автоматический переход на главную страницу 
    
echo "<HTML><HEAD> 
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'> 
          </HEAD></HTML>"

  }
  else
  {
    echo 
$query."<br>";
    exit(
mysql_error());
  } 
?>

Что-нибудь вываливается в окно браузера?

   
 
 автор: maDMo3r   (13.12.2004 в 00:42)   письмо автору
 
   для: cheops   (13.12.2004 в 00:38)
 

UPDATE news SET name = ' В Мукачевском клубе \"Tr@nsnet\" 11.12.2004 г. прошёл второй кубок \"Fuji\" по Warcraft TFT. В кубке приняли участие 12 игроков: Ужгород - 8, Львов - 2, Мукачево - 2. Результаты игр: 1 место - Ибрагим Аль-Кони (Fudes.Izual) (Львов) - Logitec MX510 2 место - Шелестай Кристиан (TN. Blade) (Мукачево) - Logitec MX300 3 место - Андрей Ломтев (GD.C-Club) (Львов) - Logitec S69 + Logitec keyboard. Финальные игры: GD.C-Club lose TN. Blade Fudes.Izual def TN. Blade (2:1) Вторая игра между Fudes.Izual и TN. Blade: Самая интерестная игра турнира. Играется карта Plunder Isle. Решающим моментом было - Блейд два раза словил Изуала, когда тот качался на Драконах, второй раз был решающим, Изуал теряет все войска, а у Блейда остаётся половина лимита, Изуал выходит. GG Особая благодарность администрации клуба - они предоставили мне компьютер для написания ньюса. И за проведения чемпионата согласно регламента, без нарушений.' WHERE id_news=
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

   
 
 автор: cheops   (13.12.2004 в 00:50)   письмо автору
 
   для: maDMo3r   (13.12.2004 в 00:42)
 

Ага в SQL запросе отсутствует значение первичного ключа id_news - когда появляется форма редактирования - посмотрите исходный код и проверьте имеется ли значение в value-значении скрытого поля id_news?

   
 
 автор: maDMo3r   (13.12.2004 в 00:56)   письмо автору
 
   для: cheops   (13.12.2004 в 00:50)
 

Хм.. :) а как посмотреть ? :) и что такое value ? :) ну я догадываюсь что это но не знаю точно...

   
 
 автор: cheops   (13.12.2004 в 01:30)   письмо автору
 
   для: maDMo3r   (13.12.2004 в 00:56)
 

Смотрится код любой страницы очень просто:
1) Если вы в Internet Explorer - правая кнопка мыши - Просмотр HTML-кода
2) Если в Opera - правая кнопка мыши - Фрейм - Посмотреть исходный текст
Там будет что-то вроде
<html> 
<head> 
</head> 
<body> 
<form method="post" action="update.php"> 
<textarea name="name" cols="50" rows="8">Новость которую правим... блин, там что-то про Warcraft - эх и классная игруха... И лишь там на берегах Калимдора ты сможешь противостоять им... то бишь я о чём :)))</textarea> 
<input type=hidden name=id_news values=123> 
<input name="submit" type="submit" value="Добавить"> 
</form> 
</body> 
</html>

Нас будет интересовать строка <input type=hidden name=id_news values=123> нужно посмотреть какое значение принимает параметр values - там должен быть первичный ключ исправляемой новости...

   
 
 автор: maDMo3r   (13.12.2004 в 01:35)   письмо автору
 
   для: cheops   (13.12.2004 в 01:30)
 

<input type=hidden name=id_news values=65> он есть ;)

   
 
 автор: cheops   (13.12.2004 в 01:38)   письмо автору
 
   для: maDMo3r   (13.12.2004 в 01:35)
 

Уже хорошо :), давайте распечатаем массив $_POST в самом начале update.php
<?php
  print_r
($_POST);
?>

   
 
 автор: maDMo3r   (15.12.2004 в 17:13)   письмо автору
 
   для: cheops   (13.12.2004 в 01:38)
 

Array ( [name] => Здраствуйте посетители сайта ! 111 [id_news] => [submit] => Добавить )

Вот что пишет :)

   
 
 автор: cheops   (15.12.2004 в 18:44)   письмо автору
 
   для: maDMo3r   (15.12.2004 в 17:13)
 

Хм... мистика... т.е. он в форме есть наряду с кнопкой submit и текстовым полем name, а как попадет в обработчик исчезает? А когда мы добирается до обработки посмотрите нет ли в строке запроса параметра www.mysite.ru?id_news=
может мы данные переданные методом POST затираем данными, переданными методом GET?

   
 
 автор: maDMo3r   (15.12.2004 в 23:48)   письмо автору
 
   для: cheops   (15.12.2004 в 18:44)
 

Не совсем понял вопроса :(
Но когда наводишь на ссылку пишется вот что :)

http://10.15.239.243/admin/updateform.php?id_news=99

может это надо ?:)

а когда уже отредактировал и нажимаешь кнопку добавить вверху просто урл
http://10.15.239.243/admin/update.php

   
 
 автор: cheops   (16.12.2004 в 00:26)   письмо автору
 
   для: maDMo3r   (15.12.2004 в 23:48)
 

При этом если посмотреть HTML-код ссылки http://10.15.239.243/admin/updateform.php?id_news=99 - то скрытое поле id_news имеет значение (value) 99?

   
 
 автор: maDMo3r   (16.12.2004 в 00:31)   письмо автору
 
   для: cheops   (16.12.2004 в 00:26)
 

да! :)

   
 
 автор: cheops   (16.12.2004 в 01:41)   письмо автору
 
   для: maDMo3r   (16.12.2004 в 00:31)
 

Хм... а вы не можете в архиве выложить код - чтобы я мог отладить его у себя?

   
 
 автор: maDMo3r   (16.12.2004 в 20:34)   письмо автору
 
   для: cheops   (16.12.2004 в 01:41)
 

Вот :)

   
 
 автор: cheops   (16.12.2004 в 23:04)   письмо автору
 
   для: maDMo3r   (16.12.2004 в 20:34)
 

Ага нашёл две ошибки
1) В updateform.php вместо
<input type=hidden name=id_news values=<?php echo $id_news?>>

следует писать
<input type=hidden name=id_news value=<?php echo $id_news?>>

2) Кроме того, SQL-запрос в update.php c
<?php
  $query 
"UPDATE news SET name = ".$_POST['name'].", WHERE id_news=".$_POST['id_news']; 
?>

следует исправить на
<?php
  $query 
"UPDATE news SET name = '".$_POST['name']."' WHERE id_news=".$_POST['id_news']; 
?>


PS Если появятся новые вопросы - давайте начнём новую тему, эта уже слишком длиная...

   
 
 автор: maDMo3r   (16.12.2004 в 23:07)   письмо автору
 
   для: cheops   (16.12.2004 в 23:04)
 

Работае спасибо! :) огромное :)

   
Rambler's Top100
вверх

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