P
P_F
Hey, ich habe ein Newsskript geschrieben:
Hier das Kernstück und danach eine kurze erläuterung in Worten.
Vorerst: es funktioniert alles
So:
- Zu Beginn dieser Funktion wird geschaut, ob schon ein Cookie existiert mit Namen newnewsid.
- Wenn nicht, wird in der Tabelle news eine neue Zeile angelegt und die insert_id als cookie newnewsid gespeichert.
- nun sind alle nachfolgenden aktionen z.b. bildvorschau und weiterführene Links an diese eine ID gebunden.
Nun zu meinem Problem ...
Wenn nun der Newsautor die News nicht zuende schreibt oder abbricht, dann sammeln sich in der tabelle von zeit zu zeit leere zeilen an.
Wie kann ich dies verhindern.
Hier das Kernstück und danach eine kurze erläuterung in Worten.
Vorerst: es funktioniert alles
PHP:
<?
// FUNKTION FÜR NEUE NEWS
function NewNews() {
global $tpl;
// Cookie setzen zum eindeutigen identifizieren DIESER News
if(!empty($_COOKIE['newnewsid'])) {
$query = mysql_query('SELECT ID FROM news WHERE ID = '.$_COOKIE['newnewsid'].' AND tmp = 1');
if(mysql_num_rows($query) != 1) {
mysql_query('INSERT INTO news (active,tmp) VALUES (0,1)');
setcookie('newnewsid',mysql_insert_id());
}
}
else {
mysql_query('INSERT INTO news (active,tmp) VALUES (0,1)');
setcookie('newnewsid',mysql_insert_id());
}
$newnewsid = $_COOKIE['newnewsid'];
$topic = $_POST['newstopic'];
$title = strip_tags($_POST['newstitle']);
$comments = $_POST['comments'];
$newsintro = strip_tags($_POST['newsintro']);
$newstext = strip_tags($_POST['newstext']);
$newsimg = GetNewsImg($newnewsid);
if(!empty($newsimg)) {
$tpl->assign('NewsImgPath', GetModConf('News','NewsImgFolder'));
$tpl->assign('img', 't_'.$newsimg);
}
$tpl->assign('title',$title);
$tpl->assign('newsintro',$newsintro);
$tpl->assign('newstext',$newstext);
// Kommentare
$tpl->assign('comments_1','checked');
if($_POST['comments'] == 1)
$tpl->assign('comments_1','checked');
if($_POST['comments'] == 'x')
$tpl->assign('comments_0','checked');
// News speichern
if($_POST['save_news']) {
// Titel
if(empty($title)) {
$tpl->assign('title_err','Sie müssen einen Newstitel eingeben');
$err = 1;
}
// Aufmachertext
if(empty($newsintro)) {
$tpl->assign('newsintro_err','Sie müssen einen Aufmachertext eingeben');
$err = 1;
}
}
// Bild speichern
if($_POST['add_img']) {
if(!empty($_FILES['file'])) {
DeleteNewsImg($newnewsid);
$uniid = md5(uniqid (rand()));
$img = upload_resize_thumb_image($_FILES['file'],GetModConf('News','NewsImgFolder'),600,100,$uniid.'_'.$newnewsid,'t_'.$uniid.'_'.$newnewsid,GetModConf('News','AllowedImgFormat'),700000);
if(!empty($img['err']))
$tpl->assign('img_err',$img['err']);
else {
$tpl->assign('NewsImgPath', GetModConf('News','NewsImgFolder'));
$tpl->assign('img', 't_'.$uniid.'_'.$newnewsid.'.'.$img['imgext']);
mysql_query('UPDATE news SET newsimg = 1');
mysql_query('UPDATE news SET imgpath = "'.$uniid.'_'.$newnewsid.'.'.$img['imgext'].'" WHERE ID = '.$newnewsid);
}
}
}
// Bild löschen
if($_POST['del_img']) {
DeleteNewsImg($newnewsid);
$tpl->assign('img','');
}
// Morelinks speichern
if($_POST['add_morelink'])
SaveMorelink($newnewsid,$_POST['morelink_text'],$_POST['morelink_url']);
// Morelinks löschen
if($_POST['delete_selected'])
DeleteSelected($newnewsid);
if(!empty($newnewsid))
$tpl->assign('MorelinkList',MorelinkList($newnewsid));
subline('Neue News verfassen');
$tpl->display(TPL.'Admin/NewNews.html');
}
?>
So:
- Zu Beginn dieser Funktion wird geschaut, ob schon ein Cookie existiert mit Namen newnewsid.
- Wenn nicht, wird in der Tabelle news eine neue Zeile angelegt und die insert_id als cookie newnewsid gespeichert.
- nun sind alle nachfolgenden aktionen z.b. bildvorschau und weiterführene Links an diese eine ID gebunden.
Nun zu meinem Problem ...
Wenn nun der Newsautor die News nicht zuende schreibt oder abbricht, dann sammeln sich in der tabelle von zeit zu zeit leere zeilen an.
Wie kann ich dies verhindern.