Массовое удаление статей из базы данных + добавление фото к статьям + вывод количеств

Webage

Новичок
Массовое удаление статей из базы данных + добавление фото к статьям + вывод количеств

Добрый день. У меня к вам есть пара вопросов.
Что мы имеем:
Код
PHP:
<?php

$newstable="ou_publications";
Error_Reporting(E_ALL & ~E_NOTICE);
include ("../config.inc");
include ("../function.inc");
dbconnect();

if  (($act=="add") and ($act2!="update")) {
        $date = date("y-m-d H:i:s");
        $title=str_replace("\"","&quot;",$title);
        $anons=str_replace("\"","&quot;",$anons);
        $content=str_replace("\"","&quot;",$content);
        $url_title=str_replace("\"","&quot;",$url_title);
        $query="INSERT INTO `$newstable` (`date`,`title`,`anons`,`content`,`url_title`) VALUES ('{$date}','{$title}','{$anons}','{$content}','{$url_title}')";
        $result=mysql_query($query) or die ($query);
        $title="";
        $anons="";
        $content="";
        $url_title="";
      
};

if  ($act=="kill") {
        $query="DELETE FROM `$newstable` WHERE `id`='{$id}'";
        $result=mysql_query($query) or die ($query);
};


if  ($act2=="update") {
        $title=str_replace("\"","&quot;",$title);
        $anons=str_replace("\"","&quot;",$anons);
        $content=str_replace("\"","&quot;",$content);
        $url_title=str_replace("\"","&quot;",$url_title);
        $query="UPDATE $newstable SET `title`=\"{$title}\",`anons`=\"{$anons}\",`content`=\"{$content}\" ,`url_title`=\"{$url_title}\" WHERE `id`=$id;";
        $result=mysql_query($query) or die ($query);
        $title="";
        $anons="";
        $content="";
        $url_title="";
};


echo "
<form name=news action=$PHP_SELF method=post>
<input name=id type=hidden value='{$id}'>
<input name=act type=hidden value='add'>";

if ($act=="upgate") {
	echo "<input name=act2 type=hidden value='update'>";
	$query="SELECT * from `{$newstable}` WHERE `id`=$id";
	$result=mysql_query($query) or die ($query);
	$row=mysql_fetch_assoc($result);
	$title=$row['title'];
        $anons=$row['anons'];
        $content=$row['content'];
        $url_title=$row['url_title'];
	$source=strip_tags($expl[1]);
};

echo "<b>Заголовок cтатьи:</b><br>

<input style=\"width:500px\" name=title type=text value=\"{$title}\">
<br>
<b>Анонс cтатьи:</b><br>
<input style=\"width:500px\" name=anons type=text value=\"{$anons}\"><br>
<b>Текст cтатьи:</b><br>
<textarea style=\"width:500px\" class=time name=content rows=20 cols=40 wrap=on>$content</textarea><br>
<b>Источник:</b><br>
<input style=\"width:500px\" name=url_title type=text value=\"{$url_title}\"><br>


<br><input class=time type=submit value='РАЗМЕСТИТЬ'>
</form>";


echo "<hr>";
$query="SELECT * from `{$newstable}` ORDER BY `id` DESC LIMIT 0,30";
$result=mysql_query($query) or die ($query);
echo "<table width=600px border=0>";
while ($row=mysql_fetch_assoc($result)){
	  $dat=substr($row['date'], 8, 2).".".substr($row['date'], 5, 2).".".substr($row['date'], 0, 4);
      $row['text']=str_replace("\n","<br>",$row['text']);
	  echo "<tr><td align=left bgcolor=#F2F9FF><b><font color=red>$dat</font>&nbsp;&nbsp;";
      echo "{$row['title']}</font><br></td><td>&nbsp;</td></tr><tr><td><div align=justify>{$row['anons']}</div></td><td>&nbsp;&nbsp;<a href=$PHP_SELF?act=upgate&id={$row['id']}>редактировать</a><br><br>&nbsp;&nbsp;<a href=$PHP_SELF?act=kill&id={$row['id']}>удалить</a></td></tr>";
};
echo "</table>";


?>
Выводит статьи из базы + форма редактирования их же.
1)Как сделать удаление статей не по одной как сейчас, а просто расставить галочки на против статей которые необходимо удалить и добавить кнопку удалить.
2)Как реализовать загрузку фотографий именно к данной статье.
3)Сейчас по умолчанию выводится только 30 статей, как реализовать вывод всех статей только с разбивкой по страницам.
 

Фанат

oncle terrible
Команда форума
прежде, чем начинать отвечать на эти вопросы, надо сначала узнать, сам ли ты писал этот код? Понимаешь, что делает каждая его строчка?
 

Webage

Новичок
Да конечно сам писал, этот код очень прост (добавить, обновить, удалить из базы - стандартно очень), а вот сделать дальше не выходит.
Просто досталась по наследству система где все нужно было добавлять ручками через базу, вот решил сделать что-то на подобие админки, а знаний не хватает.
 

Фанат

oncle terrible
Команда форума
хорошо.
1) Честно говоря, сам я не люблю массовые удаления.
но если уж так уж хочется, то в начале списка сделать <form>, напротив каждой новости сделать чекбокс с именем del[] и значением id новости в базе.
и соответственно субмит и закрыть форму
в принимающем скрипте сначала визуально проконтролировать массив $_POSR['del'] - все ли в нем нормально, а затем на его основе формировать запрос

2) сложно понять, что ты имеешь в виду, но если отвечтьа, как написано, то
сначала учимся загружать фотографии.
потом просто загружаем их ф каталог, имя которого равно id статьи в базе. вот и все.

3) клкссический вопрос, ответ на который здесь не дают.
Поскольку решить его под силу даже школьнику.
оператор лимит в запросе тебе знаком.
то есть, остается только передавать нужное значение в адресе и формировать стрку ссылок на страницы. неужели так сложно?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Webage

штмл код <?=$var;?> штмл код. Вместо echo "очень много ШТМЛ-кода __переменная пхп__ очень много ШТМЛ-кода"

1)Как сделать удаление статей не по одной как сейчас, а просто расставить галочки на против статей которые необходимо удалить и добавить кнопку удалить.
Массив чекбоксов name=$name[$article_id].

2)Как реализовать загрузку фотографий именно к данной статье.
http://phpclub.ru/detail/article/upload

3)Сейчас по умолчанию выводится только 30 статей, как реализовать вывод всех статей только с разбивкой по страницам.
http://phpclub.ru/detail/article/2000-12-05
 

Фанат

oncle terrible
Команда форума
кстати.
в твой код я не вчитывался, но всегда говорил, что можно обойтись без всяких $act и уж тем более - $act2
вот пример "админки", в которой есть все, кроме удаления.
учитывая, что удаление само по себе вредно, и лучше приучать себя удалять записи не физически, а просто помечая, как не показываемые, получается вполне фукнционально.

Да, кстати. твои $title=str_replace("\"","&quot;",$title); - это чудовищно. Почитай PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.

PHP:
<? 
mysql_connect();
mysql_select_db("new");
$table="test";
if($_SERVER['REQUEST_METHOD']=='POST') { 
  if ($id=intval($_POST['id'])) {
    $query="UPDATE $table SET name='".mysql_real_escape_string($_POST['name'])."' WHERE id=$id";
  } else {
    $query="INSERT INTO $table SET name='".mysql_real_escape_string($_POST['name'])."'";
  }
  mysql_query($query);
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); 
  exit; 
} 
if (!isset($_GET['id'])) { 
  $LIST=array();
  $query="SELECT * FROM $table"; 
  $res=mysql_query($query);
  while($row=mysql_fetch_assoc($res)) $LIST[]=$row;
  include 'list.php';
} else { 
  if ($id=intval($_GET['id'])) {
    $query="SELECT * FROM $table WHERE id=$id"; 
    $res=mysql_query($query);
    $row=mysql_fetch_assoc($res);
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v);
  } else {
    $row['name']='';
    $row['id']=0;
  }
  include 'form.php';
} 
?>

form.php
<form method="POST">
<input type="text" name="name" value="<?=$row['name']?>"><br>
<input type="hidden" name="id" value="<?=$row['id']?>">
<input type="submit"><br>
<a href="?">Return to the list</a>
</form>

list.php
<a href="?id=0">Add item</a>
<? foreach ($LIST as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>
 

Webage

Новичок
***** спасибо за подсказку, я только начал освоение php и по этому возможны такие ошибки, буду исправляться.
 
Сверху