PDA

Просмотр полной версии : Добавление инфы


InfernoNet
05.04.2008, 13:54
Нужно скрипт в котором будет три файла: назовем их add.php, info.php и base.txt.
add.php должен добавлять информацию в base.txt, а info.php должен считывать инфу из base.txt и выводить её в виде таблицы.
В add.php должно быть 4 поля:
Картинка:
Название статьи:
Информация:
Ссылка откуда взято:

А в info.php должно это отображаться в таблице:
Картинка | Название статьи | Информация | Ссылка

И нужно, чтоб при клике на заголовок "Название статьи" эти все статьи выстраивались в алфавитном порядке.

Пример на картинках:

add.php:
http://up.li.ru/files/2008/04/05/346861.jpg;add.jpg

info.php:
http://up.li.ru/files/2008/04/05/346862.jpg;info.jpg

NOmeR1
05.04.2008, 14:20
add.php
<?php
$file = 'base.txt';
$a = $_POST['picture'];
$b = $_POST['article'];
$c = $_POST['info'];
$d = $_POST['link'];
if(!$a || !$b || !$c || !$d) {
echo('<style>
input[type="text"]
{
width: 300px;
}
</style>
<title>Добавление статей</title>
<form method="POST">
<table>
<tr><td><b>Картинка</b></td><td><input type="text" name="picture"></td></tr>
<tr><td><b>Название статьи</b></td><td><input type="text" name="article"></td></tr>
<tr><td><b>Информация</b></td><td><input type="text" name="info"></td></tr>
<tr><td><b>Ссылка</b></td><td><input type="text" name="link"></td></tr>
</table>
<input type="submit" value="Создать">
</form>');
} else {
$fopen = fopen($file, 'a');
$boolean = fwrite($fopen, base64_encode($a).' | '.base64_encode($b).' | '.base64_encode($c).' | '.base64_encode($d));
fclose($fopen);
if((bool)$boolean == true) {
echo('<title>Статья успешно добавлена</title><b>Статья успешно добавлена</b>');
} else {
echo('<title>Статья не добавлена</title><b>Статья не добавлена</b>');
}
}
?>
info.php
<?php
$file = file_get_contents('base.txt');
if($file) {
echo('<title>Статейки</title><table><tr><td>Картинка</td><td>Название статьи</td><td>Информация</td><td>Ссылка</td></tr>');
foreach(explode("\n", $file) as $article) {
list($a, $b, $c, $d) = explode(" | ", $article);
$a = base64_decode($a);
$b = base64_decode($b);
$c = base64_decode($c);
$d = base64_decode($d);
echo('<tr><td><img src="'.$a.'"></td><td>'.$b.'</td><td>'.$c.'</td><td>'.$d.'</td></tr>');
}
echo('</table>');
} else {
echo('<title>Статей нет</title><b>Статей нет</b>');
}
?>
Вроди всё. Я не проверял и фильтров никаких не делал. Надо будет - сделаешь.

InfernoNet
05.04.2008, 14:28
add.php выдаёт:
Parse error: syntax error, unexpected T_VARIABLE in www/csmaps/add.php on line 3

Kaimi
05.04.2008, 14:52
Попробуй это (все одним файлом):

<?

if(isset($_GET['add']))
{
print '
<form method="post">
<table border="1">
<tr>
<td>Картинка</td>
<td><input type="text" name="pic"></td>
</tr>
<tr>
<td>Название статьи</td>
<td><input type="text" name="sname"></td>
</tr>
<tr>
<td>Информация</td>
<td><input type="text" name="info"></td>
</tr>
<tr>
<td>Cсылка</td>
<td><input type="text" name="link"></td>
</tr>
</table>
<input type="submit" value="Создать">
</form>
';
}

if(isset($_POST['pic']) && isset($_POST['sname']) && isset($_POST['info']) && isset($_POST['link']))
{
$pic = $_POST['pic'];
$sname = $_POST['sname'];
$info = $_POST['info'];
$link = $_POST['link'];

$fh = fopen('base.txt', 'a') or die("Can't open file");
fwrite($fh,$pic.";;".$sname.";;".$info.";;".$link."\n");
fclose($fh);
}

if(isset($_GET['show']))
{
print '
<table border="1">
<tr>
<th>Картинка</th>
<th>Название статьи</th>
<th>Информация</th>
<th>Ссылка</th>
</tr>
';
$data = file('base.txt');
foreach($data as $line)
{
list ($pic, $sname, $info, $link) = explode(";;",$line);
echo '<tr><td><img src="'.$pic.'"></td><td>'.$sname.'</td><td>'.$info.'</td><td><a href="'.$link.'">'.$link.'</a></td></tr>';
}
echo '</table>';

}
?>


Соответственно для добавления пишешь script.php?add, а для отображения ?show

InfernoNet
05.04.2008, 14:57
Kaimi, спасибо. Самое оно.
Не хватает только, чтоб при клике на заголовок "Название статьи" эти все статьи выстраивались в алфавитном порядке.
И если не затруднит, то запаролить как-нибудь index.php?add.

Kaimi
05.04.2008, 15:03
С паролем будет так:

<?

$name='21232f297a57a5a743894a0e4a801fc3'; // admin
$pass='21232f297a57a5a743894a0e4a801fc3'; // admin

if(isset($_GET['add']))
{
if (!isset($_SERVER['PHP_AUTH_USER']) || md5($_SERVER['PHP_AUTH_USER'])!=$name || md5($_SERVER['PHP_AUTH_PW'])!=$pass)
{
header("WWW-Authenticate: Basic realm=\"Google\"");
header("HTTP/1.0 401 Unauthorized");
exit("<b><a href=http://google.com>Google</a> : Access Denied</b>");
}
print '
<form method="post">
<table border="1">
<tr>
<td>Картинка</td>
<td><input type="text" name="pic"></td>
</tr>
<tr>
<td>Название статьи</td>
<td><input type="text" name="sname"></td>
</tr>
<tr>
<td>Информация</td>
<td><input type="text" name="info"></td>
</tr>
<tr>
<td>Cсылка</td>
<td><input type="text" name="link"></td>
</tr>
</table>
<input type="submit" value="Создать">
</form>
';
}

if(isset($_POST['pic']) && isset($_POST['sname']) && isset($_POST['info']) && isset($_POST['link']))
{
$pic = $_POST['pic'];
$sname = $_POST['sname'];
$info = $_POST['info'];
$link = $_POST['link'];

$fh = fopen('base.txt', 'a') or die("Can't open file");
fwrite($fh,$pic.";;".$sname.";;".$info.";;".$link."\n");
fclose($fh);
}

if(isset($_GET['show']))
{
echo '
<table border="1">
<tr>
<th>Картинка</th>
<th>Название статьи</th>
<th>Информация</th>
<th>Ссылка</th>
</tr>
';
$data = file('base.txt');
foreach($data as $line)
{
list ($pic, $sname, $info, $link) = explode(";;",$line);
echo '<tr><td><img src="'.$pic.'"></td><td>'.$sname.'</td><td>'.$info.'</td><td><a href="'.$link.'">'.$link.'</a></td></tr>';
}
echo '</table>';

}
?>

InfernoNet
05.04.2008, 15:14
Всё прекрасно, но опять же не хватает только, чтоб при клике на заголовок "Название статьи" эти все статьи выстраивались в алфавитном порядке.
Жду абдейта)))

Kaimi
05.04.2008, 15:47
<?

$name='21232f297a57a5a743894a0e4a801fc3'; // admin
$pass='21232f297a57a5a743894a0e4a801fc3'; // admin

if(isset($_GET['add']))
{
if (!isset($_SERVER['PHP_AUTH_USER']) || md5($_SERVER['PHP_AUTH_USER'])!=$name || md5($_SERVER['PHP_AUTH_PW'])!=$pass)
{
header("WWW-Authenticate: Basic realm=\"Google\"");
header("HTTP/1.0 401 Unauthorized");
exit("<b><a href=http://google.com>Google</a> : Access Denied</b>");
}
print '
<form method="post">
<table border="1">
<tr>
<td>Картинка</td>
<td><input type="text" name="pic"></td>
</tr>
<tr>
<td>Название статьи</td>
<td><input type="text" name="sname"></td>
</tr>
<tr>
<td>Информация</td>
<td><input type="text" name="info"></td>
</tr>
<tr>
<td>Cсылка</td>
<td><input type="text" name="link"></td>
</tr>
</table>
<input type="submit" value="Создать">
</form>
';
}

if(isset($_POST['pic']) && isset($_POST['sname']) && isset($_POST['info']) && isset($_POST['link']))
{
$pic = $_POST['pic'];
$sname = $_POST['sname'];
$info = $_POST['info'];
$link = $_POST['link'];

$fh = fopen('base.txt', 'a') or die("Can't open file");
fwrite($fh,$pic.";;".$sname.";;".$info.";;".$link."\n");
fclose($fh);
}

if(isset($_GET['show']))
{
echo '
<table border="1">
<tr>
<th>Картинка</th>
<th><a href="?show&sort">Название статьи</a></th>
<th>Информация</th>
<th>Ссылка</th>
</tr>
';
$data = file('base.txt');

foreach($data as $line)
{
list ($pic, $sname, $info, $link) = explode(";;",$line);
$array[] = array("pic" => $pic, "sname" => $sname, "info" => $info, "link" => $link);
}
if(isset($_GET['sort'])) {$array = msort($array, "sname");}

foreach($array as $key)
{
list ($pic, $sname, $info, $link) = $key;
echo '<tr><td><img src="'.$key[pic].'"></td><td>'.$key[sname].'</td><td>'.$key[info].'</td><td><a href="'.$key[link].'">'.$key[link].'</a></td></tr>';
}
echo '</table>';

}

function msort($array, $id="id") {
$temp_array = array();
while(count($array)>0) {
$lowest_id = 0;
$index=0;
foreach ($array as $item) {
if (isset($item[$id]) && $array[$lowest_id][$id]) {
if ($item[$id]<$array[$lowest_id][$id]) {
$lowest_id = $index;
}
}
$index++;
}
$temp_array[] = $array[$lowest_id];
$array = array_merge(array_slice($array, 0,$lowest_id), array_slice($array, $lowest_id+1));
}
return $temp_array;
}
?>

InfernoNet
06.04.2008, 16:21
А какой код и куда нужно добавить, чтоб статьи отображались в противоположном порядке их добавления?
Т.е. последняя статья которую добавили расположена в самом верху.

И нужно в колонки "ссылка" сделать так, чтоб если ссылка длинее заданного параметра, то её имя сокращалось.
Пример:
<a href="http://ssika.tut/index.php">ssilka.tut/ind...</a>

InfernoNet
11.04.2008, 23:55
А какой код и куда нужно добавить, чтоб статьи отображались в противоположном порядке их добавления?
Т.е. последняя статья которую добавили расположена в самом верху.

И нужно в колонки "ссылка" сделать так, чтоб если ссылка длинее заданного параметра, то её имя сокращалось.
Пример:
<a href="http://ssika.tut/index.php">ssilka.tut/ind...</a>

Не учёл. Теперь ещё нужно, чтоб по 20 новостей было на одной страничке.
Help me.

NOmeR1
12.04.2008, 01:01
Делай как я: собирай все новости в массив, затем юзай функцию array_chunk(), а доступ делай примерно такой: $array_news[$_GET['page']-1].