Avatar billede sabumnim Novice
19. juni 2007 - 23:59 Der er 25 kommentarer og
1 løsning

Timestamp problem

Hejsa

Jeg forsøger at oprette et automatisk TIMESTAMP i min php kodning, men den returnere noget helt hen i vejret.

I phpmyadmin har jeg sat følgende:
-id
-date (timestamp - on update current_timestamp - timestamp)
-overskrift
-tekst

Min kode ser sådan ud: (opretnyhed.php)
<form name="form1" id="form1" method="post" action="">
      <input type="hidden" name="Submit" value="1">
     
   
        <!--<p>Datoen: (eksempel: Mandag den 4. feb. 2006)<br />-->
        <input type="hidden" name="date" class="felt" value="<? echo $row['date'] ;?>" />
        </p>
        <p>overskrift: (eksempel: Kl. 10:30)<br />
        <input type="text" name="overskrift" class="felt" value="<? echo $row['overskrift'] ;?>" />
        </p>
        <p>Tekst:<br />
      <textarea name="tekst" cols="35" rows="6" class="felt2"><? echo $row['tekst'] ;?></textarea>
        </p>
        <p>
          <input type="submit" name="opdater" value="Afsend" class="knap" />
        </p>
      </form>
   
           
            <?
            require_once "../db01.php";
        if(isset($_POST['Submit'])){
        $date = htmlentities ($_POST['date']);
        $overskrift = htmlentities ($_POST['overskrift']);
        $tekst = htmlentities ($_POST['tekst']);
        if(!get_magic_quotes_gpc()){
        $date = addslashes($date);
        $overskrift= addslashes($overskrift);
        $tekst= addslashes($tekst);
        }
        $query="INSERT INTO nyhed (date,overskrift,tekst) VALUES ('$NOW()','$overskrift','$tekst')";
        mysql_query($query);
        echo "Nyheden er nu lagt i databasen!<br />";
        echo "<a href=\"nyhederne.php\">Tilbage til nyhederne</a>";
        }       
       
        ?>

Men når alt dette returneres kommer der:
30/11-1999
OVERSKRIFT
TEKST

Har I nogle gode råd?

//Carsten
Avatar billede zurekk Nybegynder
20. juni 2007 - 01:14 #1
Hvad er det helt præcist du bruger $date til? Du ligger det jo ikke ind nogle steder?

og '$NOW()' skal være NOW()
Avatar billede sabumnim Novice
20. juni 2007 - 09:18 #2
Hej Zurekk

Det er meningen at DATE skal genereres automatisk og derefter ECHOES ud senere som du ser.
Måske er det ikke den rette tilgang, hvorfor jeg spørger her :0)

Har desuden forsøgt med NOW() istedet for $NOW(), men uden noget brugbart resultat.

Hvis du kan hjælpe mig ville det være skønt.

//Carsten
Avatar billede dkfire Nybegynder
20. juni 2007 - 10:34 #3
Der er intet som hedder $NOW(), det hedder kun NOW()

Prøv at vise lidt mere af din kode, jeg kan f.eks. ikke se hvor du får $row['date'] kommer fra.

Prøv at vise et sql dump af din tabel, så vi kan se hvad den er sat til.
Avatar billede sabumnim Novice
20. juni 2007 - 12:25 #4
Her kommer sql dump af min TABEL NYHED:

-- Table structure for table `nyhed`
--

CREATE TABLE `nyhed` (
  `id` int(11) NOT NULL auto_increment,
  `date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `overskrift` tinytext NOT NULL,
  `tekst` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;

--
-- Dumping data for table `nyhed`
--

INSERT INTO `nyhed` (`id`, `date`, `overskrift`, `tekst`) VALUES
(1, '2007-05-17 00:00:00', 'Vi har fået webside', 'Endelig kom vores nye webside på benene og kan nu benyttes til at indhente information, vi håber naturligvis at siden vil blive brugt flittigt.'),
(2, '2007-05-17 00:00:00', 'Websiden udkommet', 'Nu ligger websiden online og kan herefter benyttes og vi håber den vil vække stor glæde.');
Avatar billede sabumnim Novice
20. juni 2007 - 12:26 #5
Jeg håber nogle/en af jer kan hjælpe

//Carsten
Avatar billede dkfire Nybegynder
20. juni 2007 - 17:12 #6
Hvor er det lige du kan se dette? :
Men når alt dette returneres kommer der:
30/11-1999
OVERSKRIFT
TEKST

Så vidt jeg kan se skal din insert ændre til:
$query="INSERT INTO nyhed (`date`,overskrift,tekst) VALUES ( NOW(),'$overskrift','$tekst')";
Avatar billede dkfire Nybegynder
20. juni 2007 - 17:13 #7
Men der må være noget mere kode på den side, end det du viser.
Avatar billede dkfire Nybegynder
20. juni 2007 - 17:14 #8
Og prøv at ændre:
mysql_query($query);
til:
mysql_query($query) or die(mysql_error());
Avatar billede sabumnim Novice
20. juni 2007 - 20:29 #9
Hej dkfire

Det kan jeg se her på dette link.

Har netop lavet en tester så I kan se hvad der printes ud.

http://graensekvadrillen.hotserv.dk/showNyhed.php

//Carsten
Avatar billede dkfire Nybegynder
20. juni 2007 - 21:25 #10
Jeg bliver nød til at se en del mere kode for at jeg kan hjælpe dig, jeg kan ikke ud fra et kig på din side, se hvad der er galt med din kode.
Avatar billede sabumnim Novice
20. juni 2007 - 21:30 #11
Hej dkfire

Det skal du få så.
Dette er den kode der skal INSERTE indhold i min db:
(Jeg connecter til min dp oppe i min header)



<h3>Tilf&oslash;j indhold i nyhederne</h3>
               
<form name="form1" id="form1" method="post" action="">
<input type="hidden" name="Submit" value="1">
     
   
<p>Datoen: (eksempel: Mandag den 4. feb. 2006)<br />
<input type="hidden" name="date" class="felt" value="<? echo $row['date'] ;?>" />
        </p>
    <p>overskrift: (eksempel: Kl. 10:30)<br />
<input type="text" name="overskrift" class="felt" value="<? echo $row['overskrift'] ;?>" />
        </p>
<p>Tekst:<br />
<textarea name="tekst" cols="35" rows="6" class="felt2"><? echo $row['tekst'] ;?></textarea>
        </p>
        <p>
<input type="submit" name="opdater" value="Afsend" class="knap" />
        </p>
      </form>
   
           
            <?
           
        if(isset($_POST['Submit'])){
        $date = htmlentities ($_POST['date']);
        $overskrift = htmlentities ($_POST['overskrift']);
        $tekst = htmlentities ($_POST['tekst']);
        if(!get_magic_quotes_gpc()){
        $date = addslashes($date);
        $overskrift= addslashes($overskrift);
        $tekst= addslashes($tekst);
        }
        $query="INSERT INTO nyhed (date,overskrift,tekst) VALUES ('$NOW()','$overskrift','$tekst')";
        mysql_query($query);
        echo "Nyheden er nu lagt i databasen!<br />";
        echo "<a href=\"nyhederne.php\">Tilbage til nyhederne</a>";
        }       
       
        ?>
Avatar billede dkfire Nybegynder
20. juni 2007 - 21:43 #12
Der er noget kode før <h3> ?? og hvor kommer $row['date'] fra ??

Hvad med koden til at vise din nyhed ??

Den sql dump du har vist, har ikke den nyhed, med den forkerte dato, i sig som er vist på din side. Hvor kommer den nyhed så fra ??
Avatar billede sabumnim Novice
20. juni 2007 - 21:54 #13
Det er fordi det dump jeg smed på siden blev taget efter jeg havde slettet den del med fejlen i, idet sitet ligger LIVE

/////////// VISNYHED.php /////////////
<?php                               
                $pr_side = 6;                           
                $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM nyhed"),0) or die(mysql_error());                           
                $vis_fra = (isset($_GET["visfra"]) && is_numeric($_GET["visfra"]) && $_GET["visfra"] < $antal) ? $_GET["visfra"] : 0;               
                $dato_array = getdate();
                    $dato = $dato_array['mday'].'/'.$dato_array['mon']. '-'.$dato_array['year'];
                $query = mysql_query ("SELECT * FROM nyhed ORDER BY id DESC limit $vis_fra, $pr_side") or die(mysql_error());           
                while ($data = mysql_fetch_array($query)) {
           
                echo "<span class=\"datestyle\">".date("d/m-Y", strtotime($data['date']))."</span><br />";
                echo "<span class=\"nyhedHeader\">".nl2br($data["overskrift"])."</span><br />";
                echo "<span class=\"calTekst\">".$data['tekst']."</span><br />";
                }           
                if ($vis_fra > 0) {
                $back= $vis_fra - $pr_side;           
                echo "<a href='$_SERVER[PHP_SELF]?visfra=$back' class=\"calLink\">Forrige</a> ";
                }
                $page = 1;           
                for ($start = 0; $antal > $start; $start = $start + $pr_side) {
                if($vis_fra != $page * $pr_side - $pr_side) {
                echo "<a href='$_SERVER[PHP_SELF]?visfra=$start' class=\"calLink\">$page</a> <span class=\"divide\">l</span>&nbsp;";
               
                } else {
                echo $page." "."<span class=\"divide\">l</span>&nbsp;";
                }
                $page++;
                }
               
               
                if ($vis_fra < $antal - $pr_side) {
                $next = $vis_fra + $pr_side;
                echo " <a href='$_SERVER[PHP_SELF]?visfra=$next' class=\"calLink\">N&aelig;ste</a>";
                }
        ?>
//////////// slut VISNYHED.php //////////////

/////////// NY sql dump med forkert output ////////////
-- Struktur-dump for tabellen `nyhed`
--

CREATE TABLE `nyhed` (
  `id` int(11) NOT NULL auto_increment,
  `date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `overskrift` tinytext NOT NULL,
  `tekst` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;

--
-- Data dump for tabellen `nyhed`
--

INSERT INTO `nyhed` (`id`, `date`, `overskrift`, `tekst`) VALUES
(1, '2007-05-17 00:00:00', 'Vi har fået webside', 'Endelig kom vores nye webside på benene og kan nu benyttes til at indhente information, vi håber naturligvis at siden vil blive brugt flittigt.'),
(2, '2007-05-17 00:00:00', 'Websiden udkommet', 'Nu ligger websiden online og kan herefter benyttes og vi håber den vil vække stor glæde.'),
(15, '0000-00-00 00:00:00', 'Tester nyheder', 'Dette er blot en test, for at vise timestamp');


//////////// slut SQL dump ////////////////////////
Avatar billede dkfire Nybegynder
20. juni 2007 - 22:17 #14
Din 0000-00-00 00:00:00 ved id 15 skyldes sikkert at du har prøvet med $NOW(), som den ikke kan finde ud af, og derfor sætter 0000-00-00 00:00:00 ind istedet.
Den der CURRENT_TIMESTAMP har jeg aldrig fået til at virke rigtigt.

Der er to ting du kan ændre så det bliver lettere for dig selv.

Når du henter dine rækker ud kan du med det samme formatere datoen som du gerne vil have den.
Det kan du gøre sådan:
$query = mysql_query ("SELECT date_format(`date`, '%d/%m-%Y') as 'dato' FROM nyhed ORDER BY id DESC limit $vis_fra, $pr_side") or die(mysql_error());
Avatar billede dkfire Nybegynder
20. juni 2007 - 22:19 #15
Hmm kom vist til at trykke send, prøver igen:
Din 0000-00-00 00:00:00 ved id 15 skyldes sikkert at du har prøvet med $NOW(), som den ikke kan finde ud af, og derfor sætter 0000-00-00 00:00:00 ind istedet.
Den der CURRENT_TIMESTAMP har jeg aldrig fået til at virke rigtigt.

Der er to ting du kan ændre så det bliver lettere for dig selv.

Når du henter dine rækker ud kan du med det samme formatere datoen som du gerne vil have den.
Det kan du gøre sådan:
$query = mysql_query ("SELECT date_format(`date`, '%d/%m-%Y') as 'dato', overskrift, tekst FROM nyhed ORDER BY id DESC limit $vis_fra, $pr_side") or die(mysql_error());

Og istedet for:
date("d/m-Y", strtotime($data['date']))
skriver du:
$data['dato']
Avatar billede sabumnim Novice
20. juni 2007 - 22:23 #16
Hej igen

Det vil vel stadig ikke give nogen løsning på mit problem med at INSERTE en dato automatisk i min db?

Jvf.:
$query="INSERT INTO nyhed (date,overskrift,tekst) VALUES ('$NOW()','$overskrift','$tekst')";
        mysql_query($query);
        echo "Nyheden er nu lagt i databasen!<br />";
        echo "<a href=\"nyhederne.php\">Tilbage til nyhederne</a>";
        }       


//Carsten
Avatar billede dkfire Nybegynder
20. juni 2007 - 22:37 #17
Nej men din insert er jo også forkert, det skal stadig være:
$query="INSERT INTO nyhed (`date`,overskrift,tekst) VALUES ( NOW(),'$overskrift','$tekst')";

Du kan evt tilføje lidt kode for lige at tjekke på hvad den har indsat ved:

$TjekSQL = "SELECT * FROM nyhed WHERE id=".mysql_insert_id();
$TjekQuery = mysql_query( $TjekSQL ) or die(mysql_error());
$TjekData = mysql_fetch_assoc( $TjekQuery );

echo " Disse værdier er indsat <br />\n";
echo "Dato: $TjekData['date'] <br />";
echo "Overskrift: $TjekData['overskrift'] <br />";
echo "Tekst: $TjekData['tekst'] <br />";

Det kan du så bruge efter din insert.

Det jeg skrev før var kun noget til at lette din programmering :-)
Avatar billede sabumnim Novice
20. juni 2007 - 22:43 #18
Hej igen

Lyder fornuftigt.

Jeg vil forsøge at se om det virker.

Melder tilbage imorgen med mere info :0)

//Carsten
Avatar billede sabumnim Novice
20. juni 2007 - 23:06 #19
Hej dkfire

Det virker sgu for vildt :0)

Hvordan er det nu lige jeg får tildelt dig pointene....er sgu lang tid siden jeg har gjort det?
Svar venligst så skal du modtage point i et ruf!!

//Carsten
Avatar billede dkfire Nybegynder
21. juni 2007 - 10:28 #20
Det gør ved at acceptere mit svar her.
Det var godt du fik det til at virke.
Avatar billede sabumnim Novice
21. juni 2007 - 10:33 #21
Hejsa

Tusinde tak for hjælpen med dette, for det har godt nok drillet godt og grundigt.

//Carsten
Avatar billede dkfire Nybegynder
04. juli 2007 - 22:54 #22
Husk at acceptere min svar, ellers bliver spørgsmålet ved med at være åben
Avatar billede sabumnim Novice
04. juli 2007 - 23:24 #23
dette er hermed sket
Avatar billede dkfire Nybegynder
05. juli 2007 - 11:08 #24
Nej, du har glemt at acceptere svaret, husk det nu.
Avatar billede sabumnim Novice
05. juli 2007 - 11:32 #25
Hejsa

Jeg klikker på "Accepter" og så skulle der vel gerne ske noget?

Nu forsøger jeg så igen at klikke på accepter....
Avatar billede sabumnim Novice
05. juli 2007 - 11:32 #26
håber at der er sket noget?
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