Avatar billede backside Nybegynder
06. oktober 2004 - 00:28 Der er 23 kommentarer og
1 løsning

Create table og date problem

Sidder lige og bøvler med en tabel og noget date halløj.
Jeg har brugt denne til at oprette tabellen:

$sql = "create table $prefix" ."news (" .
"ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " .
"description text, title text, date date)";

Datoen vil jeg gerne ha ændret så der ikke står yyyy-mm-dd,
og der er en lille brist i årstallet.
Eks. her: http://www.backside.dk/e/test.php

Derefter vil jeg gerne ha´den til at sortere omvendt.(desc)

Gi´r det nogen mening det jeg skriver? Ellers må jeg prøve at forklare det anderledes.
Skal også lige siges at jeg er meget "grøn" i mysql. :)
Avatar billede nikolajdu Nybegynder
06. oktober 2004 - 07:14 #1
du må ikke kalde feltet for date - Det er et reserveret ord, prøv dato :))
Avatar billede flim Nybegynder
06. oktober 2004 - 07:16 #2
Mener også at man kan sætte ´ ´ omkring...
Avatar billede nikolajdu Nybegynder
06. oktober 2004 - 07:47 #3
nope :))
Avatar billede fennec Nybegynder
06. oktober 2004 - 08:12 #4
Hvis du vil have et andet format på dine datoer omformatere du dem i PHP eller trækker det ud fra databasen med DATE_FORMAT(date,format) funktionen. Så kan du selv bestemme formatet. Se mere om funktionen her:
http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html

hvilken brist i årstallet snakker du om?? jeg kan ikke se det.

omvendt sortering skriver du bare:
"... order by DinDato desc"
Avatar billede backside Nybegynder
06. oktober 2004 - 08:28 #5
Den med årstallet: 2006-10-04
Ved ikke rigtig hvorfor den skriver 2006

Foreløbig tak for hjælpen.
Jeg vender tilbage.
Avatar billede fennec Nybegynder
06. oktober 2004 - 08:39 #6
Den skriver sikkert 2006 fordi datoen er sat til 2006. Eller også gør du noget i koden. Tjek hvilke data der står i tabellen i databasen, og hvis der står 2004, så tjek PHP koden når du laver udtræk og udskrivningen.
Avatar billede backside Nybegynder
06. oktober 2004 - 09:10 #7
Fik da rettet årstallet.
Rettede
$dt=date("d-m-y");
til
$dt=date("Y-m-d");
Og date feltet er rettet til dato.

Så langt så godt. Men hvor er det helt nøjagtigt jeg sorterer?
Har været på dev.mysql.com, men jeg blev ikke klogere. (lidt måske, men ikke nok)
Avatar billede flim Nybegynder
06. oktober 2004 - 12:12 #8
Du sorterer først når dine data bliver vist.

Fx "SELECT * FROM table ORDER BY dato DESC"
Avatar billede backside Nybegynder
06. oktober 2004 - 14:25 #9
Så kom sorteringen på plads.
Har valgt ORDER BY id da jeg finder det mest velegnet fremfor dato.
Næste problem er dato og tid.
Min ide var at det skulle se omtrent således ud:
06/10-04, 14:10

Er jeg ved siden af hvis jeg mener at det er her det foregår:
$dt=date("Y-m-d"); $query="insert into $prefix"."news set title='$r_title', description='$r_description', dato='$dt' ";
Avatar billede fennec Nybegynder
06. oktober 2004 - 15:00 #10
Vi skal lige have slået en ting fast. Databaser kan kun godtage meget få forskellige formater i indsættelse, og det kan ofte IKKE ændres. I MySQL er formatet "yyyy-mm-dd hh:mm:ss". Alle dine indsættelser skal altså være på dette format (med eller uden timer, min og sek). Hvis brugerne indtaster et andet format (gennem en HTML form) skal det ændres til det format, som databasen bruger.

Hvis du så vil vise et andet format på dine web sider, end det databasen bruger, kan du ændre det i koden ved at "klippe" informationerne ud fra datoen også samle dem igen, inden du udskriver dem. Eller du kan lade MySQL ændre formatet i dine select sætninger.

"select *, DATE_FORMAT(dato,'%d/%m-%y, %H:%i') as formateretDato from DinTable"

også udskrive formateretDato (format 'dd/mm-yy hh:mm') i stedet for dato (format 'yyyy-mm-dd hh:mm:ss').
Avatar billede backside Nybegynder
06. oktober 2004 - 16:37 #11
Aha, ok.
Men der indtastes ikke et tidspunkt, det finder den selv ud af.
Ud fra din udemærket forklaring tror jeg at jeg har fanget den.
Prøver mig lige frem. Vender tilbage senere.
Avatar billede backside Nybegynder
07. oktober 2004 - 11:53 #12
Hmm, kan ikke få det til at køre.
Får en parse error uanset hvad jeg gør.
Avatar billede fennec Nybegynder
07. oktober 2004 - 12:10 #13
Er det når du indsætter data du får fejlen??
Kan du ikke lige smide koden herind.
Hvis det altid er nuværende dato/tidspunkt, der skal indsættes kan du bruge MySQL's funktion. Du kan bruge en af disse to, afhængig af om der skal timer/min/sek med på datoerne.

CURDATE() = "yyyy-mm-dd"
NOW() = "yyyy-mm-dd hh:mm:ss"

Også så jeg lige at din indsættelse syntax "06/10-2004 14:25:26" er forkert.

"insert into DinTabel(title,description,dato) values('$r_title','$r_description',CURDATE())"
Avatar billede backside Nybegynder
07. oktober 2004 - 15:06 #14
Det er denne der viser det som 2004-10-06
Er det den du vil se?

<?php
include 'conection.php';
$result = mysql_query('SELECT title, description, dato FROM news ORDER BY id desc limit 10');
while ( $row = mysql_fetch_array($result) ) { ?>
<table border="0" width="150" cellspacing="5" cellpadding="5" bgcolor='c0b797'>
<tr><td style="font-family: Arial; font-size: 8 pt; border: 1 solid #000000">
<b><?php echo $row['title']; ?></b>:<?php echo $row['dato']; ?><br>
<?php echo $row['description']; ?></td></tr></table><?php
}
?>
Avatar billede backside Nybegynder
07. oktober 2004 - 15:08 #15
Og det er ikke nuværende tidspunkt den skal vise, den skal hente den dato der er skrevet i databasen da rækken er oprettet. (ved ikke om man kalder det rækker)
Håber du forstår.
Avatar billede backside Nybegynder
07. oktober 2004 - 15:13 #16
Tror snart det er blevet til et 60p spørgsmål nu jeg er så fatsvag.  ;)
Hæver lige......
Avatar billede fennec Nybegynder
07. oktober 2004 - 15:15 #17
hvilken linje er nr 4 i test.php
Avatar billede backside Nybegynder
07. oktober 2004 - 15:23 #18
Sorry, den kode jeg postede er en der virker.
den hedder datotest.php

Du får lige den fra test.php, den der ikke virker.
<?php
include 'conection.php';

>>>>>linie 4  $result = mysql_query('SELECT title, description, DATE_FORMAT(dato,'%d/%m-%y, %H:%i') as formateretDato FROM news ORDER BY id desc limit 10');

while ( $row = mysql_fetch_array($result) )
{ ?>
<table border="0" width="150" cellspacing="5" cellpadding="5" bgcolor='c0b797'>
<tr><td style="font-family: Arial; font-size: 8 pt; border: 1 solid #000000"><b><?php echo $row['title']; ?></b>:
<?php echo $row ['formateretDato(format 'dd/mm-yy hh:mm'); ?><br><?php echo $row['description']; ?></td></tr>

</table>
<?php
}
?>
Avatar billede fennec Nybegynder
08. oktober 2004 - 08:26 #19
det er ' der er problemet. Dem skal du lige escape i teksten, ellers kan PHP ikke se hvad der er tekst. Enten med \, dobbelt ' eller ".

$result = mysql_query("SELECT title, description, DATE_FORMAT(dato,'%d/%m-%y, %H:%i') as formateretDato FROM news ORDER BY id desc limit 10");
Avatar billede fennec Nybegynder
08. oktober 2004 - 08:30 #20
... Det var ikke en god forklaring :o)
PHP kan ikke se hvor teksten slutter. Du bruger jo ' til at angive tekst, og da der så er ' i teksten tror PHP teksten slutter her (hvilket den jo ikke gør). Det er en af grundene til at man kan bruge " og ' til tekstangivelse. Men som sagt kan du også escape problemet ved at skrive \' eller ''. Så ved PHP at ' tegnet skal opfattes som tekst i tekststrengen.
Avatar billede backside Nybegynder
08. oktober 2004 - 10:48 #21
Damn hvor er det irriterende når den ikke poster det man lige har skrevet.
Nå prøver igen.

Jeg tror jeg skal læse lidt mere på lektien før jeg går videre.
Siden vises igen, men uden dato.
Du skal ha´ mange tak for din hjælp, noget klogere er jeg da blevet.

Smid lige et svar så du kan få dine velfortjente E$$
Avatar billede fennec Nybegynder
08. oktober 2004 - 11:18 #22
Så lige en fejl i udskrivningen. Det skal bare være:

<?php echo $row['formateretDato']; ?>
Avatar billede fennec Nybegynder
08. oktober 2004 - 11:18 #23
.o) <-- One Eyed Jack
Avatar billede backside Nybegynder
08. oktober 2004 - 11:36 #24
Det hjalp lidt på det. Takker.  :)
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
Computerworld tilbyder specialiserede kurser i database-management

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