Avatar billede dklap3 Nybegynder
12. januar 2005 - 23:25 Der er 17 kommentarer og
1 løsning

Problemer med datovisning

Jeg er ved at lave en lille kalender der smider de næste 5 koncerter ud: Jeg kan ikke få den til at vise datoen som jeg gerne vil have den. Scriptet:

<?PHP
mysql_connect ("xxxx", "xxxx", "xxxx") or die (mysql_error());
mysql_select_db ("xxxx") or die (mysql_error());

$test = mysql_query('SELECT `Dato` , `Band` '
        . ' FROM `kalender` '
        . ' WHERE `Band` != "Lukket" AND `Dato` >= CURDATE() LIMIT 5') or die (mysql_error());
?>
<table border="1">
<?
while ($row = mysql_fetch_array($test)) {?>
<tr>
    <td>Dato</td>
    <td><?=$row["Dato"]?></td>
</tr>
<tr>
    <td>Band</td>
    <td><?=$row["Band"]?></td>
</tr>
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<?
}?>
</table>



Feltet "Dato" er i date format, og jeg skulle meget gerne have den til at udskrive f.eks. "13/1" i steder for "2005-01-13". Jeg har forsøgt at indsætte alle muligt former for thing omkring "=$row["Band"]" men jeg kan ikke få det til at virke. Nogen gode forslag?
Avatar billede iss Novice
12. januar 2005 - 23:30 #1
Ja, kig i MySQL manualen efter DATE_FORMAT() så kan du lave det i din SELECT, f.eks.

DATE_FORMAT(Dato, '%d/%c') AS Dato
Avatar billede dklap3 Nybegynder
12. januar 2005 - 23:48 #2
Jeg har tjekker den og fundet stedet om DATE_FORMET. Jeg modtager dog stadig en fejl når jeg indsætter den i select:

$test = mysql_query('SELECT `Dato` , `Band` '
        . ' FROM `kalender` '
        . ' WHERE `Band` != "Lukket" AND `Dato` >= CURDATE() DATE_FORMAT(Dato, '%d/%c') AS Dato LIMIT 5' ) or die (mysql_error());


Fejlen jeg modtager er: Parse error: parse error, unexpected '%' in test.php on line 15
Avatar billede iss Novice
12. januar 2005 - 23:50 #3
Det skal heller ikke være der....

SELECT DATE_FORMAT(`Dato`, '%d/%c') AS `NyDato` , `Band` FROM `kalender` WHERE `Band` != "Lukket" AND `Dato` >= CURDATE() LIMIT 5
Avatar billede dklap3 Nybegynder
13. januar 2005 - 00:00 #4
Okay, jeg har flyttet den i starten nu. Modtager dog stadig samme fejl, og det er ligemeget om jeg bruger `NyDato` eller `Dato`.

SELECT DATE_FORMAT (`Dato`, '%d/%c') AS `NyDato` , `Band` FROM `kalender` WHERE `Band` != "Lukket" AND `Dato` >= CURDATE() LIMIT 5
Avatar billede iss Novice
13. januar 2005 - 00:01 #5
Prøv lige at smid strukturen og så en eller to records.
Avatar billede dklap3 Nybegynder
13. januar 2005 - 00:06 #6
Struktur:

Feltnavn  Datatype Attributter Nulværdi Standardværdi Ekstra Handling
  koncertID  tinyint(4)  Nej    auto_increment             
  Dato  date  Nej  0000-00-00               
  Band  text  Nej                 
  Support  text  Nej                 
  Pris  text  Nej                 
  Forsalg  text  Nej                 
  Start  text  Nej               


Et par records:

koncertID  Dato  Band  Support  Pris  Forsalg  Start
2  2005-01-14  Rock Disco  DJ Aften  20  Nej  2200
4  2005-01-15  80´er Metal Disco  DJ Aften  20  Nej  2200


Håber det var det du spurgte om.
Avatar billede iss Novice
13. januar 2005 - 00:07 #7
Kan du ikke lave det som SQL export?
Avatar billede dklap3 Nybegynder
13. januar 2005 - 00:10 #8
Jo sorry, her er den:

#
# Struktur dump for tabellen `kalender`
#

CREATE TABLE `kalender` (
  `koncertID` tinyint(4) NOT NULL auto_increment,
  `Dato` date NOT NULL default '0000-00-00',
  `Band` text NOT NULL,
  `Support` text NOT NULL,
  `Pris` text NOT NULL,
  `Forsalg` text NOT NULL,
  `Start` text NOT NULL,
  PRIMARY KEY  (`koncertID`)
) TYPE=MyISAM AUTO_INCREMENT=14 ;

#
# Data dump for tabellen `kalender`
#

INSERT INTO `kalender` VALUES (1, '2005-01-13', 'American Heartbreaks', 'DJ', '50', 'Ja', '2200');
INSERT INTO `kalender` VALUES (2, '2005-01-14', 'Rock Disco', 'DJ Aften', '20', 'Nej', '2200');
INSERT INTO `kalender` VALUES (4, '2005-01-15', '80´er Metal Disco', 'DJ Aften', '20', 'Nej', '2200');
Avatar billede iss Novice
13. januar 2005 - 00:16 #9
Sjovt nok virker det hos mig:
SELECT DATE_FORMAT( `Dato` , '%d/%c' ) AS `NyDato` , `Band`
FROM `kalender`
WHERE `Band` != "Lukket"
AND `Dato` >= CURDATE( )
LIMIT 5

NyDato Band
13/1 American Heartbreaks
14/1 Rock Disco
15/1 80´er Metal Disco
Avatar billede iss Novice
13. januar 2005 - 00:17 #10
Det er vel ikke fordi at din MySQL er oldnordisk?
Avatar billede dklap3 Nybegynder
13. januar 2005 - 00:20 #11
Hmm det tror jeg ikke. Jeg bruger en jeg har til rådighed på et b-one.net hotel. Når jeg laver den som en forespørgsel i MySQL virker det også fint, men ikke i php dokumentet.
Avatar billede iss Novice
13. januar 2005 - 00:21 #12
Husk du skal ikke udskrive Dato men NyDato.
Avatar billede dklap3 Nybegynder
13. januar 2005 - 00:26 #13
Dette er hvad jeg skriver:

$test = mysql_query('SELECT DATE_FORMAT( `Dato` , '%d/%c' ) AS `NyDato` , `Band`
FROM `kalender`
WHERE `Band` != "Lukket"
AND `Dato` >= CURDATE( )
LIMIT 5' ) or die (mysql_error());
?>
<table border="1">
<?
while ($row = mysql_fetch_array($test)) {?>
<tr>
    <td>Dato</td>
    <td><?=$row["NyDato"]?></td>
</tr>
<tr>
    <td>Band</td>
    <td><?=$row["Band"]?></td>
</tr>
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<?
}?>
</table>


Har også prøvet med bare med "Dato" nede i tabellen, men stadig den samme fejl i toppen: Parse error: parse error, unexpected '%' in test.php on line 13
Avatar billede iss Novice
13. januar 2005 - 00:30 #14
Ahhha..... erstat lige start og slut ' med ".
Avatar billede dklap3 Nybegynder
13. januar 2005 - 00:30 #15
Så var den der! Jeg fremstillede koden via phpmyadmin og kom frem til dette:

$test = mysql_query('SELECT DATE_FORMAT( `Dato` , \'%d/%c\' ) AS `NyDato` , `Band` '
        . ' FROM `kalender` '
        . ' WHERE `Band` != "Lukket" AND `Dato` >= CURDATE( ) '
        . ' LIMIT 5' ) or die (mysql_error());
?>
<table border="1">
<?
while ($row = mysql_fetch_array($test)) {?>
<tr>
    <td>Dato</td>
    <td><?=$row["NyDato"]?></td>
</tr>
<tr>
    <td>Band</td>
    <td><?=$row["Band"]?></td>
</tr>
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<?
}?>
</table>

Gad vide hvad der var galt før. Mange tak for hjælpen, gider du smide et svar.
Avatar billede iss Novice
13. januar 2005 - 00:30 #16
"Lukket" skal du nok også lave til 'Lukket'
Avatar billede iss Novice
13. januar 2005 - 00:31 #17
"fejlen" var at ' sluttede strengen... :D
Avatar billede dklap3 Nybegynder
13. januar 2005 - 00:36 #18
Mange tak for hjælpen. Med de sidste tips ser det sådan her ud (og nu virker det):

$test = mysql_query("SELECT DATE_FORMAT( `Dato` , '%d/%c' ) AS `NyDato` , `Band`
FROM `kalender`
WHERE `Band` != 'Lukket'
AND `Dato` >= CURDATE( )
LIMIT 5" ) or die (mysql_error());
?>
<table border="1">
<?
while ($row = mysql_fetch_array($test)) {?>
<tr>
    <td>Dato</td>
    <td><?=$row["NyDato"]?></td>
</tr>
<tr>
    <td>Band</td>
    <td><?=$row["Band"]?></td>
</tr>
<tr>
    <td colspan="2">&nbsp;</td>
</tr>
<?
}?>
</table>
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