/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Link med MySQL/PHP
Fra : Søren


Dato : 15-06-02 17:06

I html laver man et link ved hjælp af <a href="link.html">tekst</a> og jeg
vil bruge MySQL og PHP til at lave disse link. I en tabel har jeg dels
linket og dels teksten som skal sætten ind i html koden. Der hentes
indholdet fra tabellen og v. hj. a. printf funktionen i PHP sættes data ind
og der skulle gerne komme nogle færdige link ud af det. I koden laver jeg en
tabel og i den laver jeg en mindre tabel med en overskrift og derunder vises
indholdet af alle de link, der er i tabellen. Jeg har erstattet dobbelt
plinger med enkelt plinger i den html kode, der skal indsættes, fordi der er
kommet fejlmelding på det - om det er rigtigt ved jeg ikke. I øjeblikket har
jeg fejl på den anden printf sætning i den løkke, der skriver indholdet ud
fra tabellen, og som jeg ikke kan gennemskue. Er der nogen i NG der kan
gennemskue min(e) fejl ?

Søren

<?php
//connect to the database
$conn=mysql_connect("localhost", "xbase", "secret")
or die ("couldn't connect to server");
$selected=mysql_select_db("xbase",$conn)
or die ("couldn't connect to database");
//chose table famsearch
$result = mysql_query("SELECT link, tekst FROM famsearch");
//close connection to database
mysql_close($conn);
//create main table
printf("<table width='300' border='0' cellpadding='0' cellspacing='0'
align='top'>");
//create headline in a new small table
printf("<td width='125' valign='top' bgcolor='#FF9933'>Min
slægtsforskning<br>");
//show content of table famsearch under the headline
while ($row = mysql_fetch_array($result))
{
printf("<bgcolor='#336699'>");
printf("<a href='>%s<br>", $row["link"]"'"%s<br>", $row["tekst"]"</a>");
printf("<br><hr><br>");
}

//end of small table
printf("</td>");
//end of main table
printf("</table">);
?>





 
 
Peter Brodersen (15-06-2002)
Kommentar
Fra : Peter Brodersen


Dato : 15-06-02 18:04

On Sat, 15 Jun 2002 18:05:51 +0200, "Søren" <sorenh@gmx.net> wrote:

> printf("<a href='>%s<br>", $row["link"]"'"%s<br>", $row["tekst"]"</a>");

Det her ser da fuldstændig rodet ud?

Prøv med:
printf("<a href='%s'>%s</a><br>", $row["link"], $row["tekst"]);

--
- Peter Brodersen

Søren (15-06-2002)
Kommentar
Fra : Søren


Dato : 15-06-02 18:24

"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:RrKO8.54726$N46.1791000@news010.worldonline.dk...
> On Sat, 15 Jun 2002 18:05:51 +0200, "Søren" <sorenh@gmx.net> wrote:
> Prøv med:
> printf("<a href='%s'>%s</a><br>", $row["link"], $row["tekst"]);

Jeg har sat den linje ind istedet for den, som jeg havde lavet. Det hjalp.
Men det næste problem er, at løkken ikke virker på den måde, at det kun er
den første link fra tabellen, der bliver vist, og ikke alle de andre.

Søren



Søren (15-06-2002)
Kommentar
Fra : Søren


Dato : 15-06-02 19:22

Der var vist én, der var for hurtig ude ... efter en opdatering af tabellen
virker det nu som det skal.

Søren

> Jeg har sat den linje ind istedet for den, som jeg havde lavet. Det hjalp.
> Men det næste problem er, at løkken ikke virker på den måde, at det kun er
> den første link fra tabellen, der bliver vist, og ikke alle de andre.
>
> Søren




Per Thomsen (15-06-2002)
Kommentar
Fra : Per Thomsen


Dato : 15-06-02 22:54


"Søren" <sorenh@gmx.net> wrote in message
news:3LKO8.54891$N46.1793065@news010.worldonline.dk...
> "Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
> news:RrKO8.54726$N46.1791000@news010.worldonline.dk...
> > On Sat, 15 Jun 2002 18:05:51 +0200, "Søren" <sorenh@gmx.net> wrote:
> > Prøv med:
> > printf("<a href='%s'>%s</a><br>", $row["link"], $row["tekst"]);
>

[snip]

Ikke for at være flueknepper, men hvis man er ved at lære PHP kan
det godt være en god ide, ikke at lære de uvaner som nogle måske
har fordi de "kommer fra" et andet sprog.

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

http://www.zend.com/zend/art/mistake.php#Heading4

MVH Per Thomsen,
http://www.pert.dk/




Peter Brodersen (16-06-2002)
Kommentar
Fra : Peter Brodersen


Dato : 16-06-02 08:48

On Sat, 15 Jun 2002 23:53:30 +0200, "Per Thomsen" <pert@pert.dk>
wrote:

>Ikke for at være flueknepper, men hvis man er ved at lære PHP kan
>det godt være en god ide, ikke at lære de uvaner som nogle måske
>har fordi de "kommer fra" et andet sprog.

Jeg vil absolut ikke betragte printf som en uvane. Det kan i mange
tilfælde let komme til at gøre koden mere overskuelig, fordi den er
pænere op delt. I dit tilfælde kunne man let komme ud i fx at skulle
smide htmlspecialchars på teksten og deslige, hvortil man når frem
til:

echo '<a
href="'.$row['link'].'">'.htmlspecialchars($row['tekst']).'</a><br>';

"HTML-overblikket" risikerer ganske enkelt let at ryge her, og især
hvis man skal smide bare lidt flere variable og funktioner ind over,
fx:

echo '<h3><a href="'.$row['link'].'"
title="'.htmlspecialchars($row['title']).'">'.htmlspecialchars($row['tekst']).'</a></h3><p>'.nl2br(htmlspecialchars($row['body'])).'</p>';

Her kan det være mere overskueligt med:

printf(
'<h3><a href="%s" title="%s">%s</a></h3><p>%s</p>',
$row['link'],
htmlspecialchars($row['title']),
htmlspecialchars($row['tekst']),
nl2br(htmlspecialchars($row['body']))
);

Kig på første argument; "HTML-delen":

<h3><a href="%s" title="%s">%s</a></h3><p>%s</p>

Jeg synes at den giver et umådeligt hurtigere overblik, specielt i
betragtning af hvor meget, vi ellers blander " og ' i samme linje.
Ydermere er det let at flytte rundt på dele af HTML'en.

>http://www.zend.com/zend/art/mistake.php#Heading4

Deres eksempler er nær plaintext, hvor jeg da også vil give dem ret.
Men blandes der blot lidt HTML ind over det, begår de netop en fejl
ved at blande PHP og HTML sammen i én stor pærevælling. Noget, der
utvivlsomt et par måneder senere alligevel kræver omskrivning af
koden, når man igen når til konklusionen at der er fordele i at opdele
kode og content.

--
- Peter Brodersen

Per Thomsen (16-06-2002)
Kommentar
Fra : Per Thomsen


Dato : 16-06-02 12:25


"Peter Brodersen" <usenet@ter.dk> wrote in message
news:3oXO8.57935$N46.1854810@news010.worldonline.dk...
> On Sat, 15 Jun 2002 23:53:30 +0200, "Per Thomsen" <pert@pert.dk>
> wrote:
[snip]
> Jeg vil absolut ikke betragte printf som en uvane. Det kan i mange
> tilfælde let komme til at gøre koden mere overskuelig, fordi den er
> pænere op delt. I dit tilfælde kunne man let komme ud i fx at skulle
> smide htmlspecialchars på teksten og deslige, hvortil man når frem
> til:
>
> echo '<a
> href="'.$row['link'].'">'.htmlspecialchars($row['tekst']).'</a><br>';

Det ville jeg så nok gøre inden, jeg echo'er.
$link = $row['link'];
$tekst = htmlspecialchars($row['tekst']);
echo '<a href="'.$link.'">'.$tekst.'</a><br/>';

[snip]
>
> echo '<h3><a href="'.$row['link'].'"
>
title="'.htmlspecialchars($row['title']).'">'.htmlspecialchars($row['tekst']
).'</a></h3><p>'.nl2br(htmlspecialchars($row['body'])).'</p>';
>
> Her kan det være mere overskueligt med:
>
> printf(
> '<h3><a href="%s" title="%s">%s</a></h3><p>%s</p>',
> $row['link'],
> htmlspecialchars($row['title']),
> htmlspecialchars($row['tekst']),
> nl2br(htmlspecialchars($row['body']))
> );
>
> Kig på første argument; "HTML-delen":
>
> <h3><a href="%s" title="%s">%s</a></h3><p>%s</p>
>
> Jeg synes at den giver et umådeligt hurtigere overblik, specielt i
> betragtning af hvor meget, vi ellers blander " og ' i samme linje.

Det med at jeg konkatenerer strengene på er mest fordi
UltraEdit (som jeg bruger), ikke kan finde ud af at highlighte
variable i en streng, og så fordi jeg helst selv vil fortælle
PHP hvornår en streng skal parses, men mit bedste argument
for det er: "Sådan kan jeg bedst lide det". :)

> Ydermere er det let at flytte rundt på dele af HTML'en.
Det må jo så nok være subjektivt, jeg kan ikke lige indse at det
skulle være nemmere at flytte rundt på HTML'en fordi der står
%s istedet for $link.
Det er jo self. med det forbehold at indholdet i $link, og $tekst
er færdigbehandlet og klar til output (strip_slashes, nl2br,
htmlspecialchars, og hvad der nu eller skal til). Du har ihvertfald
ret i at det vil gøre det mindre gennemskueligt at gøre det inline.

Og hvis du tænker på det med at jeg konkatenerer strengene,
så syntes jeg at det i UltraEdit faktisk netop gør det nemmere
at flytte rundt på HTML'en fordi man ved at alt det grå tekst
er HTML. Men bruger man en editor der godt kan finde ud af
at highlighte variable i en streng, så ser jeg ikke den store grund til
ikke at skrive det som:
echo "<a href=\"$link\">$tekst</a><br>";

(udover at jeg personligt ikke kan lide det).

>
> >http://www.zend.com/zend/art/mistake.php#Heading4
>
> Deres eksempler er nær plaintext, hvor jeg da også vil give dem ret.

Ja, men pointen er (som jeg læser det) at der ikke er nogen grund
til at bruge "the schwiss army knife" til skrælle kartofler med, hvis
man har en kartoffel-skræller ;)


> Men blandes der blot lidt HTML ind over det, begår de netop en fejl
> ved at blande PHP og HTML sammen i én stor pærevælling. Noget, der
> utvivlsomt et par måneder senere alligevel kræver omskrivning af
> koden, når man igen når til konklusionen at der er fordele i at opdele
> kode og content.

Der er vi fuldstændige enige. Kommer der ret meget mere HTML på
end i eksemplet, så ville jeg anvende et template system.

MVH Per Thomsen,
http://www.pert.dk/




Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste