Avatar billede Jorgen-N Nybegynder
16. juni 2012 - 20:50 Der er 12 kommentarer og
1 løsning

Fra asp til php

Hej
Jeg er medlem af en forening hvor vi har en gammel hjemmeside lavet med asp koder vi er ved at lave en ny side lavet i wordpress og vi vil gerne have vores aktivitetsliste med over til den nye side.
Håber der er nogle der kan hjælpe med at lave koden om til php.
den gamle asp kode er

<!--#INCLUDE FILE="include/database.asp"-->

<!--#INCLUDE FILE="skh.css"-->


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


<html>

<head>


<title>Nyt dokument</title>

<meta name="generator" content="Microsoft FrontPage 4.0">


</head>


<body bgcolor="ffffcc">

<div align="center" class="toptext1"><u>Aktiviteter</u></div>

<table align="center">

<%


Function DanskDatoTid(dato)

arrDag = ",Mandag,Tirsdag,Onsdag,Torsdag,Fredag,Lørdag,Søndag"

arrDag = Split(arrDag,",")

arrMaaned = ",januar,februar,marts,april,maj,juni,juli,august,"

arrMaaned = arrMaaned & "september,oktober,november,december"

arrMaaned = Split(arrMaaned,",")

DanskDatoTid = arrDag(Weekday(dato,VbMonday)) & " d. " & Day(dato) & ". "


DanskDatoTid = DanskDatoTid  & arrMaaned(Month(dato))


End Function


MDato = Year(now)

if len(month(now))= 1 then

MDato = MDato & "0" & month(now)

else


MDato = MDato & month(now)

end if

if len(day(now))= 1 then

MDato = MDato & "0" & day(now)

else

MDato = MDato & day(now)

end if

strSQL = "Select * from aktiviteter where ADato>='" & MDato & "' order by aar, maaned, dag, tid"

Set rs = Conn.Execute(strSQL)

do

BTid = rs("maaned") & "/" & rs("dag") & "/200" & rs("aar")

%>

<tr>

<td valign="top" width="500" align="center" bgcolor="FDE5AB" class="toptext2"><b><%=DanskDatoTid(BTid)%> kl.<%=rs("tid")%><br><%=rs("overskrift")%></b></td>


</tr>


<tr>


<td valign="top" width="500" align="left" class="toptext2"><%=rs("beskriv")%></td>


</tr>

<tr>

<td valign="top" width="500" class="toptext2"><b><%


if rs("sidste") <> "" then


response.write "Sidste tilmelding: " & rs("sidste") & "&nbsp;&nbsp;&nbsp;"



end if


if rs("pris") <> "" then


response.write " Pris: " & rs("pris")



end if


%></b></td>



<%

rs.movenext

loop until rs.eof
Conn.Close

Set Conn = Nothing

%>

</table>

</body>

</html>
Avatar billede showsource Seniormester
17. juni 2012 - 17:52 #1
Umiddelbart ligner det at det er nemmere at lave en ny phpkode, i stedet for at "oversætte" eksisterende.

M.h.t. datoer, så brug et datetime felt i DB, ( YYYY-MM-DD-HH-MM-SS ) i stedet for x-antal felter.
Så kan du meget nemmere genbruge/søge i DB fremover.

Og prøv at kikke på denne kode:


<?php

mysql_connect("host", "user", "password") or die (mysql_error());

mysql_query("SET lc_time_names='da_DK'");

$dato = mysql_query("SELECT DATE_FORMAT(NOW(), '%W d. %d %M kl. %H %i')") or die (mysql_error());

echo mysql_result($dato,0);

?>

Og tjek denne side ud:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
Avatar billede Jorgen-N Nybegynder
20. juni 2012 - 17:01 #2
Der må vel skulle meget mere til for at kunne vise
felterne
tid og overskrift
beskriv
sidste tilmelding
pris
Avatar billede showsource Seniormester
21. juni 2012 - 08:48 #3
Et eks. på phpkode:
<?php

$conn = mysql_connect("host", "user", "pass") or die (mysql_error());

mysql_select_db("eksperten", $conn) or die ("Fejl ved valg af DB!:<br />\r\n". mysql_error());

mysql_query("SET lc_time_names='da_DK'");

$sql = "SELECT overskrift, beskrivelse, pris, DATE_FORMAT(tilmelding, '%W d. %d %M kl. %H %i') as frist, DATE_FORMAT(dato, '%W d. %d %M kl. %H %i') as dagen
FROM exp944668 WHERE tilmelding BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 14 DAY)";

$poster = mysql_query($sql) or die (mysql_error());

if(mysql_num_rows($poster) > 0) {
    while($vis = mysql_fetch_object($poster)) {
    echo"<h3>".$vis->overskrift."</h3>\r\n";
    echo "<small>Dato: ".ucfirst($vis->dagen)."</small><br />\r\n";
    echo nl2br($vis->beskrivelse)."<br /><br />\r\n";
    echo"Tilmeldingsfrist: ".ucfirst($vis->frist)."<br />\r\n";
    echo"Pris: ".$vis->pris.",- d.kr.\r\n";
    }
}

mysql_free_result($poster);

?>

felterne dato og tilmelding er datetime felter.

Mysqldump fra phpmyadmin:

CREATE TABLE IF NOT EXISTS exp944668 (
  id int(10) unsigned NOT NULL AUTO_INCREMENT,
  dato datetime NOT NULL,
  overskrift varchar(255) CHARACTER SET latin1 NOT NULL,
  beskrivelse text CHARACTER SET latin1 NOT NULL,
  tilmelding datetime NOT NULL,
  pris int(10) unsigned NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci AUTO_INCREMENT=3 ;

--
-- Data dump for tabellen 'exp944668'
--

INSERT INTO exp944668 (id, dato, overskrift, beskrivelse, tilmelding, pris) VALUES
(1, '2012-06-22 08:00:00', 'Overskrift til første arrangement', 'Beskrivelse af første arrangement', '2012-06-21 14:00:00', 250),
(2, '2012-06-23 10:00:00', 'Arrangement 2', 'en beskrivelse til anden arrangement.\r\nMed i prisen er kaffe og kage.', '2012-06-22 17:30:00', 140);
Avatar billede Jorgen-N Nybegynder
24. juni 2012 - 18:16 #4
Det virker næsten nu.
aktiviteter kommer ikke i dato orden og kl. kan kun vise 00.00

min kode ser sådan ud.

<?php
$conn = mysql_connect("host", " user ", " password ");
mysql_select_db("eksperten");

$DBnavn = 'eksperten';

mysql_query("SET lc_time_names='da_DK'");

$sql = "SELECT overskrift, beskriv, sidste, pris,tid, DATE_FORMAT(ADato, '%W d. %d %M kl. %H %i') as tid, DATE_FORMAT(ADato, '%W d. %d %M kl. %H %i') as dag, tid
FROM aktiviteter WHERE Adato BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 300 DAY)";

$poster = mysql_query($sql) or die (mysql_error());

if(mysql_num_rows($poster) > 0) {
    while($vis = mysql_fetch_object($poster)) {
    echo"<h3>".$vis->overskrift."</h3>\r\n";
    echo " ".ucfirst($vis->dag)."<br />\r\n";
    echo nl2br($vis->beskriv)."\r\n";
    echo"<h4>Sidste tilmelding: ".($vis->sidste)."</h4>\r\n";
    echo"<h4>Pris: ".$vis->pris.",</h4><br/>\r\n";
    }
}

mysql_free_result($poster);

?>

aktiviteter i DB indholder
id: nummer på aktivitet
dag: dag i måned aktivitet har
måned: hvilken måned aktivitet har
aar: hvilken år aktivitet har
tid: hvilken kl. aktivitet er
ADato: hvilken dag,måned og år aktivitet har
overskrift: overskrift på aktivitet
beskriv: beskrivelse af aktivitet
pris: prisen på aktivitet
Avatar billede showsource Seniormester
25. juni 2012 - 19:08 #5
Feltet "ADato" er IKKE et DATETIME format, og standard dato format for et DATE felt er:
YY-MM-DD, f.eks. 2012-06-25

Et DATETIME er standard:
YY-MM-DD HH:MM:SS, f.eks. 2012-06-25 19:06:45

Bruger du standardformat til dato og tid, kan du sortere output efter dato,
SELECT * FROM tabel ORDER BY datofelt
Avatar billede Jorgen-N Nybegynder
25. juni 2012 - 22:59 #6
Det er hel nyt for mig med php koder men jeg har da fået kl. til at virke.
Men forstår ikke lige hvordan jeg kan sortere efter aktivitets dato.
lige ny sortere den efter hvilken dato aktiviteten er oprettet.

<?php
$conn = mysql_connect("host", " user ", " password ");
mysql_select_db("eksperten");

$DBnavn = 'eksperten';

mysql_query("SET lc_time_names='da_DK'");

$sql = "SELECT overskrift, beskriv, sidste, pris,tid, DATE_FORMAT(ADato, '%W d. %d %M kl. %H %i') as tid, DATE_FORMAT(ADato, '%W d. %d %M kl.') as dag, tid
FROM aktiviteter WHERE Adato BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 300 DAY)";

$poster = mysql_query($sql) or die (mysql_error());

if(mysql_num_rows($poster) > 0) {
    while($vis = mysql_fetch_object($poster)) {
    echo"<h3>".$vis->overskrift."</h3>\r\n";
    echo " ".ucfirst($vis->dag)."\r\n";
    echo ($vis->tid)."</br>\r\n";
    echo nl2br($vis->beskriv)."\r\n";
    echo"<h4>Sidste tilmelding: ".($vis->sidste)."</h4>\r\n";
    echo"<h4>Pris: ".$vis->pris.",</h4><br/>\r\n";
    }
}

mysql_free_result($poster);

?>
Avatar billede showsource Seniormester
25. juni 2012 - 23:56 #7
php eller asp er et fedt !
Forskellen ligger i forskellige funktioner som findes/ikke findes.
Det primære er opbygning af DB.

Jeg kender ikke asp, men en ORDER BY burde ikke være nyt for dig, eller hvad ?

Og i din query laver du to kald til samme felt, og navngiver dem med hvert sit navn. Det er jo spild af servertid !

Har du lavet en tabel hvor du bruger DATETIME for feltet med hvornår begivenhed skal afvikles ?
Avatar billede showsource Seniormester
25. juni 2012 - 23:58 #8
"Og i din query laver du to kald til samme felt, og navngiver dem med hvert sit navn" ->
Og i din query laver du to ENS kald til samme felt, og navngiver dem med hvert sit navn
Avatar billede showsource Seniormester
25. juni 2012 - 23:59 #9
ENS -> Identiske
Avatar billede Jorgen-N Nybegynder
01. juli 2012 - 17:47 #10
Har rettet lidt på de fejl jeg har lavet.

$sql = "SELECT overskrift, beskriv, sidste, pris,tid, DATE_FORMAT(ADato, '%W d. %d %M kl.') as dag, tid
FROM aktiviteter WHERE Adato  BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 300 DAY)";

$poster = mysql_query($sql) or die (mysql_error());

if (mysql_num_rows($poster) > 0) {
    while($vis = mysql_fetch_object($poster)) {
    echo"<h3>".$vis->overskrift."</h3>\r\n";
    echo " ".ucfirst($vis->dag)."\r\n";
    echo ($vis->tid)."</br>\r\n";
    echo nl2br($vis->beskriv)."\r\n";
    echo"<h4>Sidste tilmelding: ".($vis->sidste)."</h4>\r\n";
    echo"<h4>Pris: ".$vis->pris.",</h4><br/>\r\n";
    }
}

mysql_free_result($poster);

?>

Virker fint men forstår ikke lige hvordan og hvor jeg skal rette for at får den til at sortere aktiveter i dato orden.
Avatar billede Jorgen-N Nybegynder
01. juli 2012 - 18:18 #11
Hvis aktiviteten er søndag den 1. juli kl. 18.30 står der i
ADato  20120701
dag    1
maaned  7
aar    12
tid    18.30
Avatar billede Jorgen-N Nybegynder
05. juli 2012 - 21:34 #12
Så fik lavet koden der virker.

mysql_query("SET lc_time_names='da_DK'");



$sql = "SELECT overskrift, beskriv, sidste, pris,tid, DATE_FORMAT(ADato, '%W d. %d %M kl.') as dag, tid 
FROM aktiviteter WHERE TO_DAYS(ADato)>=TO_DAYS(NOW()) ORDER BY ADato ASC, tid ASC ";

$poster = mysql_query($sql) or die (mysql_error());

if (mysql_num_rows($poster) > 0) {
    while($vis = mysql_fetch_object($poster)) {
    echo"<h3>".$vis->overskrift."</h3>\r\n";
    echo " ".ucfirst($vis->dag)."\r\n";
    echo ($vis->tid)."</br>\r\n";
    echo nl2br($vis->beskriv)."\r\n";
    echo"<h4>Sidste tilmelding: ".($vis->sidste)."</h4>\r\n";
    echo"<h4>Pris: ".$vis->pris.",</h4><br/>\r\n";
    }
}

mysql_free_result($poster);

?>

Tak for hjælpen til at komme på rette spor.
Avatar billede Jorgen-N Nybegynder
05. juli 2012 - 21:51 #13
Tak for hjælpen til at komme på rette spor.
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