Avatar billede rotco Juniormester
02. september 2010 - 19:47 Der er 9 kommentarer og
1 løsning

Tag & Komma problem..

Hejsa,

Jeg har lavet et blogsystem hvor jeg kan skrive indlæg, og søgeordene skal skrives med komme imellem.. Jeg skriver eksempelvis følgende i input-feltet:

vægttab, slankekur, diæt, tab kilo, at tabe sig

Så det ryger ind i mysql-databasen på den måde..

Men når jeg så skal trække det ud igen og vises, så vil jeg gerne have at hvert af de ord bliver til et link.

Eksempel: <a href="soeg.php?soeg=vægttab">vægttab</a>, <a href="soeg.php?soeg=slankekur">slankekur</a>, <a href="soeg.php?soeg=diæt">diæt</a>, <a href="soeg.php?soeg=tab kilo">tab kilo</a>, <a href="soeg.php?soeg=at tabe sig">at tabe sig</a>..

Jeg kan sagtens finde ud af at trække resultaterne ud af databasen og sådan, men jeg kan ikke separere dem og lave dem til individuelle links.
Avatar billede ggxdg Nybegynder
02. september 2010 - 20:12 #1
$soegeord = "vægttab, slankekur, diæt, tab kilo, at tabe sig";

$soeg_arr = explode(", ", $soegeord);
$soeg_arr2 = array();
foreach($soeg_arr as $soeg_val) {
  $soeg_arr2[] = "<a href=\"soeg.php?soeg=".$soeg_val."\">".$soeg_val."</a>;
}
echo implode(", ", $soeg_arr2);
Avatar billede ggxdg Nybegynder
02. september 2010 - 20:13 #2
aaaaargh... jeg spotter altid fejl lige efter jeg poster, selv om jeg syntes jeg kæmmer min kode før jeg poster den D:<

  $soeg_arr2[] = "<a href=\"soeg.php?soeg=".$soeg_val."\">".$soeg_val."</a>";
Avatar billede Slettet bruger
02. september 2010 - 21:12 #3
En streng omklamret af " vil evaluere evt. PHP variabler inden i:
- så det kan skrives mere læsevenligt:

$soeg_arr2[] = "<a href='soeg.php?soeg=$soeg_val'>$soeg_val</a>";
Avatar billede ggxdg Nybegynder
03. september 2010 - 07:51 #4
Jeps... Jeg tror det er en gammel vane, der hænger ved så jeg husker at escape variabler i andre sprog :P
Avatar billede repox Seniormester
03. september 2010 - 11:07 #5
Selvom det måske er væsentligt mere læsevenligt at skrive html attributter med single quotes, kunne man måske overveje et alternativ som kunne skabe et pænere overblik istedet for at lade PHP udskrive så lange strenge.

<?php
  $tagwords = explode(",", $resultat_fra_mysql);
?>
  <div class="tagWords">
  <?php foreach($tagwords as $tag): ?>
    <a href="soeg.php?soeg=<?php echo trim($tag); ?>"><?php echo trim($tag); ?></a>
  <?php endforeach; ?>
  </div>


Nogle kan ikke lide den syntaks, men jeg finder den mere behagelig idét jeg slipper for alt for meget escaping af mit output.

Men det var bare et alternativt forslag.
Avatar billede Slettet bruger
03. september 2010 - 13:26 #6
Men "koster" det ikke at hoppe ind/ud af PHP så ofte...
- en frygt jeg ofte føler, og derfor designer min kode "store klumper" af hhv, HTML og PHP.
Avatar billede repox Seniormester
03. september 2010 - 14:20 #7
"Prisen" på at 'hoppe ind og ud' af PHP er så minimalistisk lille at det vil være nytteløst at argumentere for at lade være.

Outputtet skal være i et sådant omfang at det også ville være formålsløst at outputte det til en browser, før det vil være en mærkbar forskel.
Avatar billede rotco Juniormester
21. november 2010 - 14:42 #8
ggxdg kode brugte jeg, det var den første og den virkede :-)

Så han modtager nok flest points.. repox og ggxdg kom med svar, de begge 2 virkede og er perfekte.
Avatar billede repox Seniormester
21. november 2010 - 18:50 #9
Jeg springer bare over, da løsningen i mit forslag blot var en omskrivning af det oprindelige.
Avatar billede rotco Juniormester
14. december 2010 - 17:14 #10
Thanks
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