31. oktober 2010 - 19:19
Der er
35 kommentarer og 1 løsning
php mysql Flytning
Jeg har 2 nyhedsarkiver
Jeg vil gerne have at når dato er opnået på en nyhed skal den flytte nyheden fra det ene arkiv til det andet hvordan gør jeg det?
Her er mit opretter/redigerings script på det første nyhedsarkiv:
<? include('config.php'); @session_start(); //Tjekker om brugeren er logget ind if(!$_SESSION['news_module']) { echo'<form method="post" action="scripts.php?return=' . rawurlencode($_SERVER['REQUEST_URI']) . '"> <table> <tr> <td><p>Brugernavn</p></td> <td><input type="text" name="username" /></td> </tr> <tr> <td><p>Kodeord</p></td> <td><input type="password" name="password" /></td> </tr> <tr> <td colspan="2" style="text-align:center;"><input type="submit" value="Log på" /></td> </tr> </table> </form>'; //Beugeren er logget ind } else { //Skaber forbindelse til MySQL mysql_connect($mysql['host'],$mysql['user'],$mysql['password']) or die (mysql_error()); mysql_select_db($mysql['db']) or die (mysql_error()); $result = mysql_query("SELECT * FROM `news_module` ORDER BY `time` DESC"); if(mysql_errno() == 1146) { mysql_query("CREATE TABLE IF NOT EXISTS `news_module` ( `id` int(11) NOT NULL auto_increment, `title` varchar(255) NOT NULL default '', `url` varchar(255) NOT NULL default '', `time` int(11) NOT NULL default '0', `timeup` int(11) NOT NULL default '0', `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM;") or die (mysql_error()); echo'The MySQL tabels er now created!<br/>Please <a href="' . $_SERVER['REQUEST_URI'] . '">refresh</a> the page.'; exit; } else { //Formel til at oprette nyhed include("navigation.php"); echo'<div style="display:none;" id="addNews"> <form method="post" action="scripts.php?action=add&return=' . rawurlencode($_SERVER['REQUEST_URI']) . '"> <table> <tr> <td><p>overskrift<br><input type="text" name="title" style="width:540px;"/></p></td> </tr> <tr> <td><p>url<br><input type="text" name="url" style="width:540px;"/></p></td> </tr> <tr> <td><p>Overførings dato<br><input type="text" name="timeup" style="width:540px;"/></p></td> </tr> <tr> <td><p>brødtekst<br> <textarea name="content" style="width:540px; height:75px;"></textarea> </p></td> </tr> <tr> <td style="text-align:right;"><input type="submit" value="Gem Nyhed" /></td> </tr> </table> <br><br> </form> </div>'; //Formel til at redigere nyhed if($_REQUEST['edit']) { $edit_news = mysql_query("SELECT * FROM `news_module` WHERE `id`=" . $_REQUEST['edit']) or die (mysql_error() . ' in select from `news_module` in edit mode'); $edit_news = mysql_fetch_array($edit_news); echo'<form method="post" action="scripts.php?action=edit&id=' . $edit_news['id'] . '&return=' . rawurlencode($_SERVER['SCRIPT_NAME']) . '?s=news_editor&edit=' . '"> <table> <tr> <td><p>overkrift<br><input type="text" name="title" style="width:540px;" value="' . $edit_news['title'] . '" /></p></td> </tr> <tr> <td><p>url<br><input type="text" name="url" style="width:540px;" value="' . $edit_news['url'] . '" /></p></td> </tr> <tr> <td><p>Overførings dato<br><input type="text" name="timeup" style="width:540px;" value="' . $edit_news['timeup'] . '" /></p></td> </tr> <tr> <td><p>brødtekst<br><textarea name="content" style="width:540px; height:75px;">' . $edit_news['content'] . '</textarea></p></td> </tr> <tr> <td colspan="2" style="text-align:right;"><input type="submit" value="Gem Nyhed" /></td> </tr> </table> <br><br> </form>'; } //Viser eksisterendene nyheder echo'<table cellspacing="5" width="540" bgcolor="#4f4f4f"> <tr> <td width="110px"><p><strong>Rediger</strong></p></td> <td width="280px"><p><strong>Kontakt Overskrift</strong></p></td> <td width="140px"><p><strong>Dato</strong></p></td> </tr>'; while($row = mysql_fetch_array($result)) { echo'<tr> <td style="background-color:#6a6a6a;"><p> <a href="' . $_SERVER['SCRIPT_NAME'] . '?s=news_editor&edit=' . $row['id'] . '">Rediger</a> | <a href="#" onclick="if(confirm(\'Er du sikker på, at du vil slette?\')) {document.location.href=\'news_scripts.php?delete=' . $row['id'] . '&return=' . rawurlencode($_SERVER['REQUEST_URI']) . '\';}">Slet</a> </p></td> <td style="background-color:#6a6a6a;"><p> ' . $row['title'] . ' </p></td> <td style="background-color:#6a6a6a;"><p> ' . strftime("%A %d. %B %Y",$row['time']) . ' </p></td> </tr>'; } echo'</table>'; } } ?>i min database skal den rykke fra 'news-module' til 'arkiv-module'
Er der nogen der kan hjælpe med et sådan script?
Annonceindlæg fra Computerworld it-jobbank
Mød 3.500+ it-talenter på IT-DAY 2026
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
31. oktober 2010 - 19:34
#1
du skal vel bare vælge alle nyheder der skal flyttes med en simpel SELECT * FROM news-module WHERE timeup > NOW() og når du løber dem igennem, skal de oprettes i den anden tabel og slettes i den 'gamle' ? du kan evt. få cronjob.de til at køre scriptet en gang om dagen, så det bliver gjort dagligt, selvom der ikke lige er nogen der besøger siden...
31. oktober 2010 - 19:43
#2
Hver id har en 'timeup' når den er gået skal den kun flytte det ene id
31. oktober 2010 - 19:51
#3
hvad har du i din 'timeup'? det virker underligt at det ikke er et timestamp-felt eller lignende...
31. oktober 2010 - 20:09
#4
Jeg er ikke prof men den skal smide følgendene format på databasen '1288552987' som åbenbart står for '31 Okt. 2010 20:06'
31. oktober 2010 - 21:09
#5
Kunne du hjælpe mig med over flytning?
31. oktober 2010 - 23:55
#6
'1288552987' som åbenbart står for '31 Okt. 2010 20:06' Det er jo så tid i sekunder siden 1-1-1970 Og som splazz akriver, så er det jo at vælge ud fra en værdi, i forhold til hvad der står i db. NOW() i mysql returnerer så godt nok f.eks. 2010-10-31 20:06:00 men UNIX_TIMESTAMP() er netop sekunder siden 1970
01. november 2010 - 00:55
#7
i mit script bruger jeg strftime("%A %d. %B %Y",$row['time']) til at læse ud med.
01. november 2010 - 09:41
#8
ja, og når nu du har arkiveret dit tidspunkt på den måde, skal du som showsource skriver, benytte UNIX_TIMESTAMP() i din select (i stedet for NOW() som jeg skrev tidligere)
01. november 2010 - 10:58
#9
HAr stadig ikke forstået hvad du mener med 'select'
01. november 2010 - 11:12
#10
select: mysql_query("SELECT * FROM bla bla") or die(mysql_error());
01. november 2010 - 11:17
#11
01. november 2010 - 11:19
#12
Og oftest er det nemmest at bruge standard format (datetime) som f.eks. 2010-11-01 11:19:30 i stedet for sekunder.
02. januar 2011 - 14:36
#13
okay har ændret det lidt. Når tiden ('1293971013') er opnået skal den ændre 'news_module' / 'arkiv' fra: 'A0' til 'A1' Hvordan får jeg den til det?
03. januar 2011 - 18:36
#14
så er det jo bare en simpel update-query der skal laves
03. januar 2011 - 22:06
#15
Ja men det er tids delen jeg er i tvivl om. d.v.s. er if ($input[time] == '$date') { ... if ($input[time] >= '$date') { ... } Er det ikke noget i den stil men hvordan viser jeg $date i format '1293971013'
04. januar 2011 - 09:48
#16
det ser ikke helt tosset ud, du kan få fat i unix_timestamp med funktionen time()
04. januar 2011 - 16:57
#17
Hvordan lever jeg en omregner, fra: '29.05.10' format til: '1293971013' format ??
04. januar 2011 - 17:27
#18
Fandt den strtotime($date)
04. januar 2011 - 21:27
#19
Hvorfor vil denne ikke virke: Har på fornemmelsen at det har noget med location at gøre Den skriver at siden ikke eksistere. <? include('3/config.php'); @session_start(); if ($_REQUEST['id']) { if ($_REQUEST['title']) { mysql_query("UPDATE `news_module` SET `title`='" . $_REQUEST['title'] . "', `arkiv`='" . $_POST['arkiv'] . "', `place`='" . $_POST['place'] . "', `startdato`='" . $_POST['startdato'] . "', `stopdato`='" . $_POST['stopdato'] . "', `pic`='" . $_POST['pic'] . "', `fpic`='" . $_POST['fpic'] . "', `url`='" . $_POST['url'] . "', `time`='" . time() . "', `content`='" . $_POST['content'] . "' WHERE `id`=" . $_REQUEST['id']) or die (mysql_error()); } } else { //A connection to MySQL is created mysql_connect($mysql['host'],$mysql['user'],$mysql['password']) or die (mysql_error()); mysql_select_db($mysql['db']) or die (mysql_error()); $result = mysql_query("SELECT * FROM `news_module` ORDER BY `time` DESC"); //Prints existing news while($row = mysql_fetch_array($result)) { $time = strtotime($row['stopdato']); $nowtime = time(); if ($row['arkiv'] == 'A0') { if ($time == $nowtime) { header ('Location: chechmowe.php?title=' . $row['title'] . '&arkiv=' . $row['arkiv'] . '&place=' . $row['place'] . '&startdato=' . $row['startdato'] . '&stopdato=' . $row['stopdato'] . '&pic=' . $row['pic'] . '&fpic=' . $row['fpic'] . '&url=' . $row['url'] . '&time=' . $row['time'] . '&content=' . $row['content'] . ''); } if ($time <= $nowtime) { header ('Location: chechmowe.php?title=' . $row['title'] . '&arkiv=' . $row['arkiv'] . '&place=' . $row['place'] . '&startdato=' . $row['startdato'] . '&stopdato=' . $row['stopdato'] . '&pic=' . $row['pic'] . '&fpic=' . $row['fpic'] . '&url=' . $row['url'] . '&time=' . $row['time'] . '&content=' . $row['content'] . ''); } } } } ?>
05. januar 2011 - 21:39
#20
og du har en side der hedder 'chechmowe'? det skal ikke være checkmove, eller moget andet der umiddelbart giver mere mening? :)
05. januar 2011 - 22:48
#21
Den den hedder checkmove men jeg skrev forkert i mit indlæg her. Men jeg tror det er noget med at der er formange post i url. Hvordan fårjeg den til at starte siden om igen med de ændrede post? Eller er der en mulighed for kun at ændre 1 uden at skrive dem alle ind til en igen? Eksempelvis hvis jeg undlader at sende den til mysql beholder den så den gamle verdi eller ændre den verdien til blank?
06. januar 2011 - 09:14
#22
det er næppe fordi du har for mange parametre med i url'en, men du kan jo prøve at sammensætte url'en i en variabel og udskrive den i stedet for at kalde header, for at se om url'en ser korrekt ud.
06. januar 2011 - 16:31
#23
hvordan mener du?
06. januar 2011 - 18:56
#24
i stedet for:
if ($time <= $nowtime) { header ('Location: chechmowe.php?title=' . $row['title'] . '&arkiv=' . $row['arkiv'] . '&place=' . $row['place'] . '&startdato=' . $row['startdato'] . '&stopdato=' . $row['stopdato'] . '&pic=' . $row['pic'] . '&fpic=' . $row['fpic'] . '&url=' . $row['url'] . '&time=' . $row['time'] . '&content=' . $row['content'] . ''); } så prøv med:
if ($time <= $nowtime) { $url = 'chechmowe.php?title=' . $row['title'] . '&arkiv=' . $row['arkiv'] . '&place=' . $row['place'] . '&startdato=' . $row['startdato'] . '&stopdato=' . $row['stopdato'] . '&pic=' . $row['pic'] . '&fpic=' . $row['fpic'] . '&url=' . $row['url'] . '&time=' . $row['time'] . '&content=' . $row['content']; echo 'URL: ' . $url; //header ('Location: '.$url); } desuden giver det ingen mening med .'' efter den sidste variabel i strengen...
06. januar 2011 - 20:47
#25
Den skriver: Warning: Cannot modify header information - headers already sent by (output started at /volume1/web/DAnsk metal/clean/index1.php:27) in /volume1/web/DAnsk metal/clean/checkmove.php on line 29 Og det eneste header der er i 'index1.php' er 'checkmove.php' der bliver includet.
06. januar 2011 - 22:41
#26
Så må du have noget andet output før din header-linje...
07. januar 2011 - 23:46
#27
i checkmove.php filen har du selv set hvad der er. i indexfilen har jeg: <? include('3/config.php'); @session_start(); mysql_connect($mysql['host'],$mysql['user'],$mysql['password']) or die (mysql_error()); mysql_select_db($mysql['db']) or die (mysql_error()); include_once "checkmove.php"; echo'
09. januar 2011 - 00:40
#28
der må være en eller anden form for output - enten er et af dine dokumenter gemt med BOM (Byte Order Mark), eller også er der et linjeskift eller noget i toppen af en af filerne...
09. januar 2011 - 13:35
#29
Hvordan får jeg den til at sende al info til sig selv uden at smide det ind i en url
09. januar 2011 - 19:46
#30
det forstår jeg ikke helt... kan du omformulere dig?
10. januar 2011 - 16:35
#31
i stedet for at locate den på url, så starte siden om igen da den åbenbart ikke vil. Eller er der en mulighed for at jeg kan smide: mysql_query("UPDATE `news_module` SET `title`='" . $_REQUEST['title'] . "', `arkiv`='" . $_POST['arkiv'] . "', `place`='" . $_POST['place'] . "', `startdato`='" . $_POST['startdato'] . "', `stopdato`='" . $_POST['stopdato'] . "', `pic`='" . $_POST['pic'] . "', `fpic`='" . $_POST['fpic'] . "', `url`='" . $_POST['url'] . "', `time`='" . time() . "', `content`='" . $_POST['content'] . "' WHERE `id`=" . $_REQUEST['id']) or die (mysql_error()); Ned i bunden og gøre et eller andet så den ikke, køre den før der er noget til den som den kan smide op?
10. januar 2011 - 16:52
#32
jeg er overhovedet ikke med her... det virker også underligt at du har den header inde i din while-løkke...
10. januar 2011 - 20:50
#33
Det gør ingen forskel at den er ude for.
14. januar 2011 - 20:53
#34
Kan du smide et skud på hvordan du ville gøre det?
28. januar 2011 - 17:19
#35
Er der ikke mere her fra?
25. februar 2011 - 15:08
#36
LUKKER
Vi tilbyder markedets bedste kurser inden for webudvikling