Добавление инфы

Discussion in 'PHP' started by InfernoNet, 5 Apr 2008.

  1. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    Нужно скрипт в котором будет три файла: назовем их add.php, info.php и base.txt.
    add.php должен добавлять информацию в base.txt, а info.php должен считывать инфу из base.txt и выводить её в виде таблицы.
    В add.php должно быть 4 поля:
    Картинка:
    Название статьи:
    Информация:
    Ссылка откуда взято:

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

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

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

    add.php:
    [​IMG]

    info.php:
    [​IMG]
     
    1 person likes this.
  2. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    add.php
    Code:
    <?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
    Code:
    <?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>');
    	}
    ?>
    Вроди всё. Я не проверял и фильтров никаких не делал. Надо будет - сделаешь.
     
    #2 NOmeR1, 5 Apr 2008
    Last edited: 5 Apr 2008
    1 person likes this.
  3. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    add.php выдаёт:
    Parse error: syntax error, unexpected T_VARIABLE in www/csmaps/add.php on line 3
     
  4. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Попробуй это (все одним файлом):
    PHP:
    <?

    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
     
    _________________________
    1 person likes this.
  5. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    Kaimi, спасибо. Самое оно.
    Не хватает только, чтоб при клике на заголовок "Название статьи" эти все статьи выстраивались в алфавитном порядке.
    И если не затруднит, то запаролить как-нибудь index.php?add.
     
  6. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    С паролем будет так:
    PHP:
    <?

    $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>';

        }
    ?>
     
    _________________________
  7. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    Всё прекрасно, но опять же не хватает только, чтоб при клике на заголовок "Название статьи" эти все статьи выстраивались в алфавитном порядке.
    Жду абдейта)))
     
  8. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    PHP:
    <?

    $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($array0,$lowest_id), array_slice($array$lowest_id+1));
            }
            return 
    $temp_array;
        }
    ?>
     
    _________________________
  9. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    А какой код и куда нужно добавить, чтоб статьи отображались в противоположном порядке их добавления?
    Т.е. последняя статья которую добавили расположена в самом верху.

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

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    Не учёл. Теперь ещё нужно, чтоб по 20 новостей было на одной страничке.
    Help me.
     
  11. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Делай как я: собирай все новости в массив, затем юзай функцию array_chunk(), а доступ делай примерно такой: $array_news[$_GET['page']-1].