Avatar billede simon_gs_13 Nybegynder
06. april 2005 - 19:51 Der er 20 kommentarer og
1 løsning

hjælp til kalender script m mysql

Hej, 

Jeg har lavet et kalenderscript der bruger mysql, og nu vil jeg gerne tilføje en html linie mit i min kode som ser sådan ud:

    <?
echo"<font size='1'>";
echo"<b>";
mysql_connect("localhost","xxxx","xxxx");
mysql_select_db("news");

$getmdr = mysql_query("SELECT DISTINCT `mdr` FROM `kalender`") or die (mysql_error());
while($vismdr = mysql_fetch_object($getmdr)) {
echo $vismdr->mdr ."<br>\n";
echo"</b>";
$hent_info = mysql_query("SELECT * FROM `kalender` WHERE `mdr` = '". $vismdr->mdr ."'") or die (mysql_error());
    while($vis = mysql_fetch_object($hent_info)) {
    echo $vis->dato ." ". $vis->tekst ." ". $vis->link ."<br>";
    }
    echo"<br><b>";
mysql_free_result($hent_info);
}
mysql_free_result($getmdr);
echo"</b>";
echo"</font>";
?> 

Helt præsic er det denne linie:

echo $vis->dato ." ". $vis->tekst ." ". $vis->link ."<br>";

I min database har jeg noget alm html link kode i rækken link, men vil gerne lave kode om til noget ala dette:

echo $vis->dato ." ". $vis->tekst ." ". $vis-><a href='".$row['link']."'>".$row['beskrivelse']."</a> ."<br>";

Men det eneste der sker er at jeg får en fejl.

Nogle det kan hjælpe med at rette det til.
Avatar billede barklund Nybegynder
06. april 2005 - 19:55 #1
Prøv noget med:

echo $vis->dato ." ". $vis->tekst ." <a href='". $vis->link."'>".$vis->beskrivelse."</a><br>";

--
Morten Barklund
Avatar billede baitianlong Nybegynder
06. april 2005 - 19:58 #2
echo $vis->dato ." ". $vis->tekst ." ". $vis-><a href='".$row['link']."'>".$row['beskrivelse']."</a> ."<br>";

ændres til:

print($vis['dato']." ".$vis['tekst']." <a href=\"".$row['link']."\">".$row['beskrivelse']."</a><br>");

prøv det :)
Avatar billede baitianlong Nybegynder
06. april 2005 - 20:01 #3
Ja, hovsa. Jeg skifter også mellem $vis og $row. Det skal være $vis det hele.
Avatar billede simon_gs_13 Nybegynder
06. april 2005 - 20:36 #4
barklund -> det virker

Men nu hvor jeg er igang, er det en måde hvorpå jeg kan få den til selv at slette en entry når datoen er opskredet ??
Avatar billede detox Nybegynder
06. april 2005 - 20:57 #5
Du kan vel lave en:

DELETE FROM `kalender` WHERE TO_DAYS(dato)<TO_DAYS(NOW())
Avatar billede simon_gs_13 Nybegynder
06. april 2005 - 21:02 #6
dvs. sådan her:

$q = mysql_query("DELETE FROM `kalender` WHERE TO_DAYS(dato)<TO_DAYS(NOW())");
while($row = mysql_fetch_array($q)) {;

i slutning af scriptet
Avatar billede barklund Nybegynder
06. april 2005 - 21:39 #7
Du skal jo ikke vælge noget? Du skal bare slette:

mysql_query("DELETE FROM `kalender` WHERE dato < CURDATE()");

Og ikke andet.

--
Morten Barklund
Avatar billede simon_gs_13 Nybegynder
06. april 2005 - 22:08 #8
Ok, har sat prøvet det nu, men det sletter sådan lidt på må og få. den har slettet ex. en dato så som 9. og 11. - 12. men ikke datoen 5.
den slettere godt nok i alle mdr. men det er min egen fejl for jeg angiver dato som 5. og ikke som 5. april
Avatar billede barklund Nybegynder
06. april 2005 - 22:18 #9
Hm, så forstår jeg ikke helt. Er datoerne gemt som varchar's? Hvorfor bruger du ikke de indbyggede DATE-datatyper? Så du har en dato, en mdr og et år - hvad hedder år-feltet?
Avatar billede simon_gs_13 Nybegynder
07. april 2005 - 13:43 #10
Så er det nok min egen fejl / uvidenhed da jeg lavede scriptet og databaser i sin tid. min mysql se sådan ud.

Struktur-dump for tabellen `kalender`

CREATE TABLE `kalender` (
  `mdr` varchar(15) NOT NULL default '',
  `dato` varchar(10) NOT NULL default '',
  `tekst` varchar(200) NOT NULL default '',
  `link` varchar(255) NOT NULL default '',
  `linky` varchar(150) NOT NULL default ''
) TYPE=MyISAM;


Data dump for tabellen `kalender`


INSERT INTO `kalender` VALUES ('April 2005', '5.', 'Ledermøde ved Numlingeklassen', 'møde.doc', 'Læs mere her');
Avatar billede barklund Nybegynder
07. april 2005 - 14:09 #11
Så er det godt nok også helt umuligt at gætte sig til noget som helst :/ Det bør du helt sikkert lave om. Du kan selvfølgelig ikke beregne på en kolonne, der indeholder måned/år i dit eget personlige streng-format. Brug et enkelt datatime-felt til datoerne og ikke andet :)
Avatar billede simon_gs_13 Nybegynder
07. april 2005 - 15:36 #12
Ja selvfølgelig skal det da være standart streng, det kan jeg se, men det gav min så bare lige en del mere arbejde :-)
Jeg har forsøgt at finde ud af hvordan jeg får lavet dato formatet om, men kan ikke finde noget som jeg kan f til at virke.
Min ide er at det normale date-format 2005-04-07 skal blive til 7 April istedet, er der overhovedet mulig ??
Avatar billede barklund Nybegynder
07. april 2005 - 15:44 #13
Du kan godt få printet 2005-04-07 som "7. april 2005" hvis du vil :)
Avatar billede simon_gs_13 Nybegynder
07. april 2005 - 15:52 #14
er det så noget som jeg skal vælge i min db eller er det med en udvidelse af det andet, og i så fald hvordan
Avatar billede barklund Nybegynder
07. april 2005 - 15:53 #15
Har du lavet et nyt felt der erstatter mdr og dato?
Avatar billede simon_gs_13 Nybegynder
07. april 2005 - 16:04 #16
ja både og. mdr er stadig mdr da den bruges til at udskrive måneden som overskrift. og det er før var 'dato' varchar er nu blevet til 'dato' date. håber du forstår var jeg mener.
Avatar billede barklund Nybegynder
07. april 2005 - 16:09 #17
Fint nok, så kan du udvælge som:

$hent_info = mysql_query("SELECT *, DAY(dato) AS dato FROM `kalender` WHERE `mdr` = '". $vismdr->mdr ."' ORDER BY dato") or die (mysql_error());

Og sletter de gamle som:

mysql_query("DELETE FROM `kalender` WHERE dato < CURDATE()");

Prøv engang :)

Og hvis du vil være sikker på at få månederne i rette rækkefølge:

$getmdr = mysql_query("SELECT DISTINCT `mdr` FROM `kalender` ORDER BY dato") or die (mysql_error());

--
Morten Barklund
Avatar billede simon_gs_13 Nybegynder
07. april 2005 - 16:24 #18
Får denne fejl, efter jeg har sat $hent_info = mysql_query("SELECT *, DAY(dato) AS dato FROM `kalender` WHERE `mdr` = '". $vismdr->mdr ."' ORDER BY dato") or die (mysql_error());

You have an error in your SQL syntax near '(dato) AS dato FROM `kalender` WHERE `mdr` = 'April 2005' ORDER BY dato' at line 1
Avatar billede barklund Nybegynder
07. april 2005 - 16:32 #19
Ah, den hedder DAYOFMONTH før version 4.1.1:

mysql_query("SELECT *, DAYOFMONTH(dato) AS dato FROM `kalender` WHERE `mdr` = '". $vismdr->mdr ."' ORDER BY dato") or die (mysql_error());
Avatar billede simon_gs_13 Nybegynder
07. april 2005 - 16:48 #20
Ja nu virker det, så vil jeg prøve på selv at lave det sådan at jeg også kan lave enties der strækker sig over flere dage. smid et svar
Avatar billede simon_gs_13 Nybegynder
09. maj 2005 - 16:11 #21
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