Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите исправить, Запутался в скриптах 
:(
    Опции темы
Гость_Sergey
Дата 1.11.2005, 01:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет!
Я решил переделать скрипт гостевой, в скрипт для добавления и редактирования новостей.
Т.к. в пхп я полный -0-, я запутался и наделал сотню, или больше ошибок.
Если кто может помогите исправить и поубирать лишнее.

Вот файл конфига из гостевой conf.php в нем половина лишнего:
Код

<?php
$_GB_CONFIG['RootPath']                = str_replace("\\", "/", dirname(__FILE__)).'/';
$_GB_CONFIG['EnginePath']            = $_GB_CONFIG['RootPath'].'engine/';
$_GB_CONFIG['ShellPath']            = $_GB_CONFIG['RootPath'].'shell/';
$_GB_CONFIG['DBPath']                = $_GB_CONFIG['RootPath'].'data/';
$_GB_CONFIG['MaxMessagesToPage']    = 4;
$_GB_CONFIG['ShowQuickReplyForm']    = 0;
$_GB_CONFIG['SeparateMessageInDB']    = '^';
$_GB_CONFIG['SeparateLogsInDB']        = '|';
?>


Вот файл index.php
Код

<html><head><title>NEWS</title><link href='includes/main.css' type=text/css rel=stylesheet></head><body scroll='auto'>

<?php
define('_GB_INITIALIZED',        true);

include_once('config.php');

function ReadDB($File, $Reverse = 1) {
    return ($Reverse == 1) ? array_reverse(file($File)) : file($File);
}

function CalculatePages($CurrentPage, $MaxMessagesToPage, $MessagesCount) {
    $PagesCount        = ceil($MessagesCount / $MaxMessagesToPage);
    for($i = 0; $i < $PagesCount; $i++) {
        $Pages[] = ($i == $CurrentPage) ? '['.($i+1).']' : '<a href="?offset='.$i.'">['.($i+1).']</a>';
    }
    return $Pages;
}

function AddUserMessage() {
    global $_POST;
    $fp            = fopen('data/messages.data', 'a+') or die('Невозможно открыть файл. Убедитесь что к файлу имеется доступ.');
    $Message    = array(
        str_replace(" ", "_", microtime()),
        str_replace(array("\r\n", "\r", "\n", "^"), "", stripslashes($_POST['name'])),
        $_POST['email'],
        $_POST['www'],
        $_POST['icq'],
        str_replace(array("\r\n", "\r", "\n", "^"), "", nl2br(stripslashes($_POST['message']))),
        $_SERVER['REMOTE_ADDR'],
        time(),
    );
    fputs($fp, implode("^", $Message)."\r\n") or die('Невозможно произвести запись в файл. Проверьте права доступа на запись.');
    fclose($fp);
}



function DeleteRecord($Messages, $ID) {
    global $_GB_CONFIG;
    for($i = 0; $i < sizeof($Messages); $i++) {
        $ex = explode("^", trim($Messages[$i]));
        if($ex[0] != $ID)
            $Temp[] = implode("^", $ex);
    }
    return $Temp;
}

function EditRecord($Messages, $ID) {
    global $_GB_CONFIG, $_POST;
    for($i = 0; $i < sizeof($Messages); $i++) {
        $ex = explode("^", trim($Messages[$i]));
        if($ex[0] != $ID) {
            $Temp[] = implode("^", $ex);
        } else {
            $Temp[] = implode("^", 
                array(
                    $ID,
                    $_POST['name'],
                    $_POST['title'],
                    str_replace(array("\r\n", "\r", "\n", "^"), "", nl2br($_POST['message'])),
                    $ex[6],
                    $ex[7],
                )
            );
        }
    }
    return $Temp;
}

function ReWriteDB($Messages) {
    global $_GB_CONFIG;
    $fp = fopen('data/messages.data', "w+");
    flock($fp, LOCK_EX);
    if(sizeof($Messages) > 0)
        fputs($fp, implode("\r\n", $Messages)."\r\n");
    flock($fp, LOCK_UN);
    fclose($fp);
}

function GetMessageOnID($Messages, $ID) {
    global $_GB_CONFIG;
    for($i = 0; $i < sizeof($Messages); $i++) {
        $ex = explode("^", trim($Messages[$i]));
        if($ex[0] == $ID) return $ex;
    }
    return false;
}

switch((isset($_GET['action'])) ? $_GET['action'] : 'show') {
        case 'add': {
                if(AddUserMessage());
                        include_once('shell/redirect.php');
                break;
        }
        case 'edit': {
                $Messages = ReadDB('data/messages.data', 1);
                if(!isset($_POST['apply'])) {
                        if($msg = GetMessageOnID($Messages, (isset($_GET['id'])) ? $_GET['id'] : 0)) {
                                include_once('shell/editform.php');
                        } else {
                                echo "<center><p>Сообщений не найдено</p></center>";
                        }
                } else {
                        ReWriteDB(
                                EditRecord($Messages, (isset($_GET['id'])) ? $_GET['id'] : false));
                        $Offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0;
                        header('location: ?action=show&offset='.$Offset);
                }
                break;
        }
        case 'delete': {
                ReWriteDB(
                        DeleteRecord(
                                ReadDB('data/messages.data', 1), (isset($_GET['id'])) ? $_GET['id'] : false) );
                $Offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0;
                header('location: ?action=show&offset='.$Offset);
                break;
        }
        case 'reply': {
                include_once('shell/replyform.php');
                break;
        }

        default: {
                $Messages                = ReadDB('data/messages.data');
                $CurrentPage        = (isset($_GET['offset'])) ? $_GET['offset'] : 0;
                $MessagesCount        = sizeof($Messages);
                $Pages                        = CalculatePages($CurrentPage, 4, $MessagesCount);
                $PagesCount                = ceil($MessagesCount / 4);
                if(($CurrentPage * 4 > 1) && ($CurrentPage * 4 < $MessagesCount)) {
                        $StartShow        = $CurrentPage * 4;
                        if($CurrentPage * 4 + 4 > $MessagesCount) {
                                $EndShow        = $MessagesCount;
                        } else {
                                $EndShow        = $CurrentPage * 4 + 4;
                        }
                } else {
                        $StartShow        = 0;
                        $EndShow        = (4 > $MessagesCount) ? $MessagesCount : 4;
                }
                include_once('shell/showmessages.php');
        }
}
?>
</body></html>



Вот showmessages.php

Код

<?php if(!defined('_GB_INITIALIZED')) exit; ?>
<table border="1" cellspacing="2" width="65%" align="center">
    <tr>
        <th colspan="2">Новости.</th>
    </tr>
<?php
while($StartShow < $EndShow) {
    $msg    = explode($_GB_CONFIG['SeparateMessageInDB'], $Messages[$StartShow]);
?>
    <tr>
<td valign="top"><?php echo date("d.m.Y H:i", $msg[7]); ?>&nbsp;|&nbsp;<b><?php if(!empty($msg[3])) { echo $msg[3].'<br>'; } ?></b>
<?php echo $msg[5].'<br>'; ?>Разместил:&nbsp;<?php echo $msg[1]; ?></td>
        <td align="center">

<a href="?action=edit&id=<?php echo $msg[0] ?>&offset=<?php echo $CurrentPage; ?>"><img src=icon_edit.bmp border=0></a>&nbsp;&nbsp;<a href="?action=delete&id=<?php echo $msg[0] ?>&offset=<?php echo $CurrentPage; ?>"><img src=icon_delete.bmp border=0></a></td>
    </tr>
<?php
    $StartShow++;
}    
?>
</table>
<p align="center">Всего страниц: <?php echo implode(' | ', $Pages); ?></p>
<br>
<form name="replyform" action="?action=add" method="post">
<table border="0" class="quickform" cellspacing="2" width="50%" align="center">
    <tr>
        <th colspan="2">Добавить новость.</th>
    </tr>
    <tr>
        <td width="25%">
        Редактор:
        </td>
        <td align="right">
        <input class="msgtext" type="text" maxlength="30" value="" name="name">
        </td>
    </tr>    <tr>
        <td>
        Заголовок:
        </td>
        <td align="right">
        <input class="msgtext" type="text" maxlength="30" value="" name="title">
        </td>
    </tr><tr>
        <td colspan="2" align="right" valign="top">
        <textarea class="msgtext" id=news_start_text name="message"></textarea>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center"><input name="submit_btn" class="msgbtn" onClick="javascript:this.disabled=1;document.replyform.submit();" type="submit" value="Добавить"> &nbsp; <input class="msgbtn" type="reset" value="Отменить"></td>
    </tr>
</table>
</form>


replyform.php
Код

<?php if(!defined('_GB_INITIALIZED')) exit; ?>
<br>
<form name="replyform" action="?action=add" method="post">
<table border="0" class="quickform" cellspacing="2" width="50%" align="center">
    <tr>
        <th colspan="2">Добавить новость.</th>
    </tr>
    <tr>
        <td width="25%">
        Админ:
        </td>
        <td align="right">
        <input class="msgtext" type="text" maxlength="30" value="" name="name">
        </td>
    </tr>    <tr>
        <td>
        Заголовок:
        </td>
        <td align="right">
        <input class="msgtext" type="text" maxlength="30" value="<?php echo GetCookie('_gb_user_www'); ?>" name="title">
        </td>
    </tr><tr>
        <td colspan="2" align="right" valign="top">
        <textarea class="msgtext" name="message"></textarea>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center"><input name="submit_btn" class="msgbtn" onClick="javascript:this.disabled=1;document.replyform.submit();" type="submit" value="Добавить"> &nbsp; <input class="msgbtn" type="reset" value="Отменить"></td>
    </tr>
</table>
</form>
<script>
/*
    В Opera при возврате на страницу где была заблокирована кнопка она остается заблокированной.
    В IE все работает нормально.
    Netscape не проверял.
*/
if(document.replyform.submit_btn.disabled = 1) {
    document.replyform.submit_btn.disabled = 0;
}
</script>


redirect.php
Код

<?php if(!defined('_GB_INITIALIZED')) exit; ?>
<center><div style="width:65%;" align="left">
Спасибо, Ваше сообщение добавлено.

<script>
document.write('Подождите, сейчас Вас переадресует на страницу просмотра сообщений.');
function GoShowPage() {
    window.location.href="?action=show";
}
window.setTimeout('GoShowPage()', 1000);
</script>
<noscript>Чтобы просмотреть отправленное Вами сообщение, нажмите на
 <a href="?action=show">эту</a> ссылку.</noscript>
</div>
</center>

  Вверх
PARROT
Дата 1.11.2005, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Проще заново написать. smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Bastet
Дата 1.11.2005, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 26.9.2005
Где: Тильзит

Репутация: 3
Всего: 6



А что нам за это будет?
--------------------
"I'm not bad. I'm just drawn that way" © Jessica RabbitСм.также: BB | ЖЖ | DA
PM MAIL WWW ICQ   Вверх
Гость_Sergey
Дата 1.11.2005, 21:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Хотябы дайте ктонить скрипт чтобы можно былобы редактировать и удалять из текстово файла
строки по id типа такого:
Код

0.94276400_1130795091|Заголовок|текст
0.25119500_1130796147|Заголовок|текст

Каааак...smile
  Вверх
PARROT
Дата 2.11.2005, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Гость_Sergey, тут не дают и не пишут, тут помогают писать, исправлять ошибки.
Вам в топик работа.
Удаление строк смотри тут http://www.codenet.ru/webmast/php/delstr.php и в поиске по форуму, потому что было.

Почему текстовый файл, а не база?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Гость_Sergey
Дата 2.11.2005, 17:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо за ссылку вроде немного разобрался! А текстовый потому, что с базой я вообще не дружу, мне хотябы с PHP разобраться.
  Вверх
Гость_Sergey
Дата 2.11.2005, 21:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я опять запутался.
Вот скрипт
Код

<?
if ($id != "") {
    $id--;
    $file=file("file.txt"); 

    for($i=0;$i<sizeof($file);$i++)
        if($i==$id) unset($file[$i]); 

    $fp=fopen("file.txt","w"); 
    fputs($fp,implode("",$file)); 
    fclose($fp);
    }
?>

как его переделать, чтобы строку можно было бы удалять по id, который
находится перед значком "|" , а не по id номеру строки
34545456|текст

Вроде надо всунуть explode("|", $ext); но куда и как дальше я незнаю smile
Помогите пожалуйста кто знает.
  Вверх
PARROT
Дата 2.11.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50





--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Гость_Sergey
Дата 3.11.2005, 01:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вообщето это не совсем то что я хотел, ведь этот же код я написал выше.
Я хотел бы чтобы строка удалялась по id номеру, который находится в строке перед знаком |
Типа этого:

34545456|текст
34544565ст2

Как это можно сделать?
  Вверх
Рейкин
Дата 3.11.2005, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: 1
Всего: 1



Салам.

Сделал бы так:

Код

<?
$open=file("text.txt");
$total=count($open);
for ($n=0; $n<=$total-1; $n++)
    {
    list($a,$b,$c,$d)=split("|",$open[$n]); // где $a - это ваш id сообщения
           if($a == $del) // где $del - указанный id для удаления
               {
     unset($open[$n]); 
    $fp=fopen("text.txt","w"); 
    fputs($fp,implode("",$open)); 
    fclose($fp);
    print "Удалено сообщение с id=$n"; // полезно выводить инфу, чтобы быть уверенным, что всё ок :)
                }
    }
?>


Кажется это то, что Вам нужно.

Это сообщение отредактировал(а) Рейкин - 3.11.2005, 02:58
PM WWW   Вверх
GAV85
Дата 3.11.2005, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.11.2005

Репутация: нет
Всего: нет



Не могу понять почему не пишет в базу. Может кто подскажет, что я не так делаю, контрольная инфа выдается правильно, а в базу не хочет писать. Спасибо!
Код

<?php
function add_news($text)
{
$cut='(hr!)';
$str=explode($cut, $text);

mysql_connect('localhost', 'root', '');

mysql_select_db('news');

$result=mysql_query('select count(id) from news');
$line=mysql_fetch_array($result, MYSQL_ASSOC);
foreach($line as $id)
    { if(count($str)<= 2)
      {
        $id++;
        mysql_select_db('news');
        mysql_query('insert into news values ($id, $str[0], $str[1])'); 
            print $id.'<br>'.$str[0].'<br>'.$str[1]; //Контрольная инфа
      }
    }
mysql_free_result($result);

mysql_close();
}

echo "<form action=\"news.php\" method=\"post\"><textarea cols=\"100\" rows=\"15\" name=\"text\"></textarea><br><input type=\"Submit\" name=\"write_text\"></form>\n";

if (isset($_POST['write_text'])){add_news($_POST['text']);}

?>

PM MAIL   Вверх
PARROT
Дата 3.11.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



GAV85, а какая связь между удалением из файла по id и записью в базу?
Новый вопрос новый топик!
Один вопрос, один ответ. smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
GAV85
Дата 3.11.2005, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.11.2005

Репутация: нет
Всего: нет



Топик называется помогите, запутался в скриптах!!! И что тут непонятного?
Я запутался в своем скрипте, я же не виноват, что мне не нужно удаление по id, а нужно записать в базу!
smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0919 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.