• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Newsscript für arme

Status
Für weitere Antworten geschlossen.

KillaH

Neues Mitglied
also ich hab mir das so vorgestellt ich bräuchte ein code für so etwas wie ein newsscript denn
mein vater braucht eine homepage für seine firma und wil sowas wie eine todolist auf die nur die 7 besitzer zugreifen können alles mit login und so hab ich schon geklärt aber ich würde gern son script haben (am besten php wegen dem login) ich male jezz mal grob nen bild dazuUnbenannt.JPG

da fehlt natürlich jetzt der sende button
 
Zuletzt bearbeitet:
ähhh ich bin wie gesagt php ultra anfänger und datenbank is so ziemlich
null :roll: deswegen frag ich ja euch ich könte natürlich auch ne php datei machen die ich dann immer neu schreibe aber es is ja für mein vater der kann das ja nicht
 
Ich hatte grad lange Weile

news.php
Hier sollten noch einige Sachen vervollständigt werden. Zum Beispiel muss der DOCTYPE noch gesetzt werden.
PHP:
<?php
	include_once('newssystem.class.php');
	$newssystem = new Newssystem();
	# Das Formular wurde gesendet
	if(strtolower($_SERVER['REQUEST_METHOD'])=='post') {
		# speichere den Beitrag wenn das Formular abgeschikt wurde
		if(isset($_POST['save'])) {
			$newsitem = new Newsitem();
			$newsitem->setAuthor($_POST['author']);
			$newsitem->setSubject($_POST['subject']);
			$newsitem->setMessage($_POST['message']);
			$newssystem->insertEntry($newsitem);
		}
		# Redirect
		header('Location: "/news.php"');
		exit();
	}
	$entries = $newssystem->getEntries();
?>
<DOCTYPE...
<html>
<head>
	<title>Newssystem</title>
</head>
<body>
<?php	foreach($entries as $entry) { ?>
	<div><?php echo $entry->getAuthor(); ?></div>
	<div><?php echo $entry->getSubject(); ?></div>
	<div><?php echo nl2br($entry->getMessage()); ?></div>
<?php	} ?>
	<form method="post" action="news.php">
		<div>
			<input type="text" name="author" />
			<input type="text" name="subject" />
		</div>
		<textarea name="message" rows="5" cols="40"></textarea>
		<br />
		<input type="submit" name="save" value="Speichern" />
	</form>
</body>
</html>

newssystem.class.php
Diese Klasse benötigt die Daten in der config.ini.php um eine Verbindung zur Datenbank herzustellen. Die Funktionen der Klasse sind sehr rudimentär und auf keinen Fall sicher. Sie kann ja dahingehend angepasst werden.
PHP:
<?php
/**
 * Newssystem Klasse zum Auslesen und Einfügen von Beiträgen
 */
class Newssystem {
	/**
	 * @var resource
	 */
	private $link;
	/**
	 * Konstruktor der Klasse
	 */
	public function __construct() {
		# Auslesen der Konfigurationsdatei
		if(file_exists('config.ini.php')) {
			$config = parse_ini_file('config.ini.php', true);
			$this->link = mysql_connect($config['database']['db_host'], $config['database']['db_user'], $config['database']['db_pwd']);
			mysql_select_db('news_db', $this->link);
		}
	}
	/**
	 * Gibt ein Array mit den Newseinträgen zurück
	 *
	 * @return array
	 */
	public function getEntries() {
		$sql = 'SELECT * FROM news ORDER BY UNIX_TIMESTAMP(date_created) DESC';
		if(!$res=$this->query($sql)) {
			return false;
		}
		$entries = array();
		while($data = mysql_fetch_assoc($res)) {
			$entries[] = new Newsitem($data);
		}
		return $entries;
	}
	/**
	 * Fügt einen neuen Beitrag in die Datenbank ein
	 *
	 * @param Newsitem $newsitem
	 * @return Newsitem | false
	 */
	public function insertEntry($newsitem) {
		$sql = sprintf(
			'INSERT INTO news SET author=%s, subject=%s, message=%s, date_created=NOW()',
			$newsitem->getAuthor(),
			$newsitem->getSubject(),
			$newsitem->getMessage()
		);
		if(!$res=$this->query($sql)) {
			return false;
		}
		$newsitem->setId(mysql_insert_id());
		return $newsitem;
	}
	/**
	 * Führt den übergebenen SQL-Anweisung in der Datenbank aus
	 *
	 * @param string $sql
	 * @return resource
	 */
	private function query($sql) {
		/**
		 * @todo: Hier sollte auf jeden Fall noch eine Überprüfung der Daten statt finden um SQL-Injections vorzubeugen.
		 */
		return mysql_query($sql, $this->link);
	}
}
/**
 * Newsitem Klasse. Dies stellt das Objekt eines Beitrages dar
 */
class Newsitem {
	/**
	 * @var string
	 */
	protected $author;
	/**
	 * @var string
	 */
	protected $subject;
	/**
	 * @var string
	 */
	protected $message;
	/**
	 * Konstruktor der Klasse
	 */
	public function __construct($data=null) {
		# wenn daten übergeben wurden, setze die Objektparameter
		if($data!=null) {
			foreach($data as $key => $val) {
				$this->$key = $val;
			}
		}
	}
	/**
	 * @return string
	 */
	public function getAuthor() {
		return $this->author;
	}
	/**
	 * @param string $author
	 */
	public function setAuthor($author) {
		$this->author = $author;
	}
	/**
	 * @return string
	 */
	public function getSubject() {
		return $this->subject;
	}
	/**
	 * @param string $subject
	 */
	public function setSubject($subject) {
		$this->subject = $subject;
	}
	/**
	 * @return string
	 */
	public function getMessage() {
		return $this->message;
	}
	/**
	 * @param string $message
	 */
	public function setMessage($message) {
		$this->message = $message;
	}
}
?>

config.ini.php
Hier sind die Zugangsdaten zur Datenbank abgelegt. Diese müssen individuell angepasst werden.
PHP:
; <?php die('access denied!'); ?>

[database]
; Folgende Daten müssen individuell angepasst werden
db_host = "localhost"
db_user = "root"
db_pwd = "****"
db_database = "news_system"


Folgende Struktur sollte die Datenbanktabelle 'news' in der Datenbank 'news_system' haben:
Code:
author : varchar(50)
subject : varchar(50)
message : text
date_created : date

Alle Dateien (news.php, newssystem.class.php, config.ini.php) sollten im selben Verzeichnis liegen.

EDIT:Ich hab vergessen zu erwähnen, das alles ungetestet ist und Fehler sicher auftreten werden. Ich stehe aber gerne für Rückfragen bereit.
 
Zuletzt bearbeitet:
schön gemacht ;)

Ich wollte noch ergänzend sagen, das dieses Script, so wie es da steht nur unter php5 läuft. php4 unterstützt keine zugriffsmodifyer aka protected,public,private

Gruss Sven
 
öhm, vielen dank ^^ nur ein problem
meine datenbank kenntnisse sind so schlecht xD
bei mir funzt es nicht wahrscheinlich wegen der datenbank :( könnt ich vielleicht ne genauere erklärung? bin halt noob ^^
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben