Проблем със система за новини

Vladislaw

Registered
Здравейте, имам проблем със следната система:
http://web-tourist.net/login/login/view.php?st=2277

Всичко работи, но когато тръгна да редактирам новина и рефрешва страницата (без да я редактира). Правя го така:

Код:
<?php 
//настройки за база данни 
$dbhost = "db host"; 
$dbuser = "db user"; 
$dbpass = "db pass"; 
$dbname = "db name"; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass)or die(mysql_error()); 
mysql_select_db($dbname, $conn)or die(mysql_error()); 

if ($_POST['telefon'] && $_POST['cena']) 
mysql_query("REPLACE INTO mobiles VALUES(".intval ($_GET['tid']).",'".$_POST['model']."','".$_POST['cena']."')"); 

$select = mysql_query("SELECT * FROM mobiles WHERE id=".intval($_GET['tid']))or die(mysql_error()); 
if (mysql_num_rows($select)) $red = mysql_fetch_array($select); 

mysql_close(); 
?> 
<form action="<?php echo($_SERVER['PHP_SELF']."?tid=".$_GET['tid']);?>" method="post"> 
Име на новина: <input type="text" name="model" value="<?php echo($red['model']);?>" /> 
<br /> 
Цялата новина: <input type="text" name="cena" value="<?php echo($red['cena']);?>" /> 
<br /> 
<input type="submit" name="submit" value="Редактирай" /> 
</form>

А, когато си е news, name си работи, но когато го направя на model, cena не работи. Има ги таблиците в базата.
 
Моля те, не ползвай тази "система" :(

Може да пробваш така. Процедурно е и във форума ще помагаме.

Структурата е:
Код:
ROOT/
	- inc/
		- wp_like_functions.php
	- templates/
		- inc/
			- news.php
		- form.php
	- connect.php
	- create_or_udpate.php
	- index.php
	- news.php

connect.php:
PHP:
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'news');

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

create_or_update.php
PHP:
<?php
include 'connect.php';
include 'inc/wp_like_functions.php';
if (isset($_POST['submit'])) {
    $name = validate_input($_POST['name']);
    $news = validate_input($_POST['news']);
    if (isset($_GET['id'])) {
        //Update existing news
        $stmt = mysqli_prepare($link, "UPDATE news SET name = ?, news = ? WHERE id = ?");
        mysqli_stmt_bind_param($stmt, 'ssi', $name, $news, $_GET['id']);
        mysqli_stmt_execute($stmt);
        header('Location: news.php?id=' . $_GET['id']);
    }
    //Create new news
    $stmt = mysqli_prepare($link, "INSERT INTO news (name, news) VALUES(?, ?)");
    mysqli_stmt_bind_param($stmt, 'ss', $name, $news);
    mysqli_stmt_execute($stmt);

    header('Location: news.php?id=' . mysqli_insert_id($link));

} else {
    $url = 'create_or_update.php';
    $news = null;
    if (isset($_GET['id'])) {
        $url = 'create_or_update.php?id=' . $_GET['id'];
        //@TODO: Secure GET values & check whether the resources exists in the database?
        $news = get_post_by_id($link, $_GET['id']);
    }
    include('templates/form.php');
}

index.php
PHP:
<?php
include('connect.php');

$query = mysqli_query($link, "SELECT * FROM news ORDER BY id DESC");


$showFullText = false;
while ($news = mysqli_fetch_object($query)) {
    include('templates/inc/news.php');
}

news.php
PHP:
<?php
include('connect.php');
include('inc/wp_like_functions.php');

if (!isset($_GET['id'])) {
    header('Location: index.php');
}
$news = get_post_by_id($link, $_GET['id']);
$showFullText = true;
include('templates/inc/news.php');

templates/inc/news.php
HTML:
<article>
    <h2><?= $news->name; ?></h2>
    <p>
        <?= $showFullText ? nl2br($news->news) : mb_substr($news->news, 0, 100, 'utf-8') . '...'; ?>
    </p>
</article>

templates/form.php
HTML:
<form action="<?= $url; ?>" method="post">
    <div>
        <label for="name">Name:</label>
        <hr>
        <input id="name" type="text" name="name" value="<?= !is_null($news) ? $news->name : ''; ?>">
    </div>
    <div>
        <label for="news">News:</label>
        <hr>
        <textarea name="news" id="news" cols="30" rows="10"><?= !is_null($news) ? $news->news : ''; ?></textarea>
    </div>
    <button type="submit" name="submit"><?= !is_null($news) ? 'Update' : 'Create'; ?></button>
</form>


inc/wp_like_functions.php
PHP:
<?php

if (!function_exists('get_post_by_id')) {
    function get_post_by_id($link, $id)
    {
        $stmt = mysqli_prepare($link, "SELECT * FROM news WHERE id = ?");
        mysqli_stmt_bind_param($stmt, 'i', $id);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        return mysqli_fetch_object($result);
    }
}

if (!function_exists('validate_input')) {
    function validate_input($value)
    {
        //@TODO: Validate user input.
        return $value;
    }
}

DB схема:
Код:
CREATE TABLE `news` (
  `id` INT(8) NOT NULL auto_increment,
  `name` VARCHAR(255) NOT NULL,
  `news` TEXT NOT NULL,
  PRIMARY KEY(`id`)
)

Тук поне news полето приема повече от 255 символа :wink:


Сваляне на архив с файловете по-горе

Може да си напишеш за ДБ credential-ите и да ръннеш всичко като напишеш:

Код:
php -S localhost:8000

в директорията, където е index.php
 
Vladislaw каза:
Fakeheal каза:
Моля те, не ползвай тази "система" :(

Мен ми трябва за 1 страница, дето само аз и колегата ще имаме достъп до нея.

Здравейте, @Vladislaw,

Не знам дали Ви е дошло, като мисъл, че една наистина работеща и професионална платформа за публикации (във вашия случай - новини), изисква доста време, труд и много, много важни тънкости, без които не може да е успешен един съвременен уебсайт...


Дори да става въпрос за 'custom' проект или пък не - съвет от личен опит..

След доста лутане осъзнах, че функциите, от които се нуждая спешно, и тези, които може да ми потрябват в бъдеще, биха отнели доста време и работа при създаването на 'custom' решение.. И РЕАЛНО Е ТАКА!
Тук допълвам и това, че аз няма да достъпвам и използвам мястото за публикуване, но трябваше да подсигуря на моите колеги, работеща, професионална и съвременна среда, в която да публикуват своите уникални текстове.


Не знам, за какъв мащаб на проекта става въпрос, но препоръчвам използването на CMS. Аз избрах WordPress, защото имам опит с него..
Допълвам, че може да използвате от системата само това, от което имате нужда - в случая използвам само публикациите, към 'custom' проект.

Потърсете в документациите на WP. Там има много полезна информация и бързи решения, с които може да използвате точно това, от което имате нужда..

Ако вземем за пример лице - редактор, който е професионалист, то той винаги ще изисква нормална работна среда, а за Вас ще са важни тънкостите, за успешното развитие на бизнеса.
Това непременно ще Ви улесни много!

Успех! :?:
 

Горе