Avatar billede kodak Mester
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&aring;" /></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&oslash;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&oslash;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>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;
                    <a href="#" onclick="if(confirm(\'Er du sikker p&aring;, 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?
Avatar billede majbom Novice
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...
Avatar billede kodak Mester
31. oktober 2010 - 19:43 #2
Hver id har en 'timeup' når den er gået skal den kun flytte det ene id
Avatar billede majbom Novice
31. oktober 2010 - 19:51 #3
hvad har du i din 'timeup'? det virker underligt at det ikke er et timestamp-felt eller lignende...
Avatar billede kodak Mester
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'
Avatar billede kodak Mester
31. oktober 2010 - 21:09 #5
Kunne du hjælpe mig med over flytning?
Avatar billede showsource Seniormester
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
Avatar billede kodak Mester
01. november 2010 - 00:55 #7
i mit script bruger jeg strftime("%A %d. %B %Y",$row['time']) til at læse ud med.
Avatar billede majbom Novice
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)
Avatar billede kodak Mester
01. november 2010 - 10:58 #9
HAr stadig ikke forstået hvad du mener med 'select'
Avatar billede majbom Novice
01. november 2010 - 11:12 #10
select: mysql_query("SELECT * FROM bla bla") or die(mysql_error());
Avatar billede showsource Seniormester
01. november 2010 - 11:17 #11
Prøv at se her:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

Der er en masse tid funktioner med mysql
Avatar billede showsource Seniormester
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.
Avatar billede kodak Mester
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?
Avatar billede majbom Novice
03. januar 2011 - 18:36 #14
så er det jo bare en simpel update-query der skal laves
Avatar billede kodak Mester
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'
Avatar billede majbom Novice
04. januar 2011 - 09:48 #16
det ser ikke helt tosset ud, du kan få fat i unix_timestamp med funktionen time()
Avatar billede kodak Mester
04. januar 2011 - 16:57 #17
Hvordan lever jeg en omregner,
fra: '29.05.10' format
til: '1293971013' format

??
Avatar billede kodak Mester
04. januar 2011 - 17:27 #18
Fandt den
strtotime($date)
Avatar billede kodak Mester
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'] . '');
       
        }
        }
        }
        }

?>
Avatar billede majbom Novice
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? :)
Avatar billede kodak Mester
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?
Avatar billede majbom Novice
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.
Avatar billede kodak Mester
06. januar 2011 - 16:31 #23
hvordan mener du?
Avatar billede majbom Novice
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...
Avatar billede kodak Mester
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.
Avatar billede majbom Novice
06. januar 2011 - 22:41 #26
Så må du have noget andet output før din header-linje...
Avatar billede kodak Mester
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'
Avatar billede majbom Novice
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...
Avatar billede kodak Mester
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
Avatar billede majbom Novice
09. januar 2011 - 19:46 #30
det forstår jeg ikke helt... kan du omformulere dig?
Avatar billede kodak Mester
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?
Avatar billede majbom Novice
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...
Avatar billede kodak Mester
10. januar 2011 - 20:50 #33
Det gør ingen forskel at den er ude for.
Avatar billede kodak Mester
14. januar 2011 - 20:53 #34
Kan du smide et skud på hvordan du ville gøre det?
Avatar billede kodak Mester
28. januar 2011 - 17:19 #35
Er der ikke mere her fra?
Avatar billede kodak Mester
25. februar 2011 - 15:08 #36
LUKKER
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester