Avatar billede dab93 Nybegynder
09. maj 2011 - 22:27 Der er 26 kommentarer og
1 løsning

Udvidet url-adresse i PHP

Nu ligger det sådan at jeg koder php scripts på min blog. Lige nu kode jeg på mine blog indlæg, og vil gerne rode lidt med nogle nye scripts til det. Nu tænker jeg at jeg gerne vil lave min url adresse med både ID og navnet på emnet, eksempelvis:

http://www.domæne.dk/show/12/en-test-side/

Det virker fint med ID nummeret, men hvordan får jeg kodet til at overskriften på mit indlæg kommer i url adressen? For det skal nok kører igennem et array() kunne jeg forstille mig, grundet af at man nok skal erstatte et mellemrum med -.

Jeg sætter 25 point af, da det ikke er livsnødvendigt, men vil alligevel gerne have afprøvet det :).
Avatar billede dab93 Nybegynder
09. maj 2011 - 22:29 #1
Rettelse: sætter 30 point af :)
Avatar billede kjeldsted Novice
09. maj 2011 - 22:39 #2
Der er vist for nyligt oprettet en guide om dette emne. Kan ikke huske om dette er berørt i denne.

Men:


RewriteEngine on
RewriteRule ^s/([0-9]+)/((\w\-)+)?$ /test.php?id=$1&side=$2 [NC,L]


Skulle kunne gøre det. Hvis ikke er det fordi der er en fejl i search patteren. Er ikke 100% stiv i regular expressions.
Avatar billede kjeldsted Novice
09. maj 2011 - 22:43 #3
Rettels. Det skal jo naturligvis være:

RewriteRule ^s/([0-9]+)/([\w\-]+)?$ /test.php?id=$1&side=$2 [NC,L]


Og den er testet. Så burde virke.
Avatar billede dab93 Nybegynder
09. maj 2011 - 22:43 #4
Det fungere ikke.
Nu tager jeg et eksempel af et af mine indlægs:
http://www.dab93.dk/show/17/mandag-aften/

-det virker fint med http://www.dab93.dk/show/17/
Avatar billede dab93 Nybegynder
09. maj 2011 - 22:47 #5
#3
Det virker stadig ikke på den måde.
Mit kører igennem index.php, og ser sådan her ud:
RewriteRule ^show/([0-9]+)/([\w\-]+)?$ /index.php?side=show&id=$1&name=$2 [NC,L]
Avatar billede dab93 Nybegynder
09. maj 2011 - 22:48 #6
Men det er nok fordi at jeg ikke ved hvordan jeg får den til at hedder f.eks. mandag-aften som er overskriften.
Avatar billede kjeldsted Novice
09. maj 2011 - 22:49 #7
Sidst nævnte har jeg selv lige testet på mig egent server med URL'en http://jenskjeldsted.dk/s/12/en-test-side. Og hvis du skal have en / på i enden skal du lige tilføje den. Fik jeg ikke lige selv gjort.
Avatar billede dab93 Nybegynder
09. maj 2011 - 22:54 #8
Henter du fra databasen?
Hos mig har jeg skrevet den sådan her:

.htaccess
RewriteRule ^show/([0-9]+)/([\w\-]+)?$ /index.php?side=show&id=$1&name=$2 [NC,L]


show.php
$select = mysql_query("SELECT * FROM blog WHERE id = '". $_GET['id'] ."' and emne = '". $_GET['name'] ."' ");
Avatar billede kjeldsted Novice
09. maj 2011 - 23:01 #9
Fra databasen!? Jeg har ikke sat nogen database op. Værdierne skal jo hentes fra $_GET.

Og eftersom jeg jo kan se at det jo er dig der har lavet en guide om emnet går jeg ud fra du har styr på regular expressions, så det vil jeg ikke belære om nu ;)

Men pt. er det fulde indhold af min .htaccess:

# -FrontPage-

IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>

RewriteEngine on
RewriteRule ^s/([0-9]+)/([\w\-]+)/?$ /test.php?pid=$1&test=$2 [NC,L]
(Der er vist nogle ting fra tidligere ting i denne fil der ikke skulle være nødvendige)

Og det fulde indhold af test.php
<?
echo $_GET['pid'].':'.$_GET['test'];
?>
Avatar billede kjeldsted Novice
09. maj 2011 - 23:03 #10
Så hvis du går ind på nedenstående URL kan du se resultatet:

http://jenskjeldsted.dk/s/12/en-test-side
Avatar billede kjeldsted Novice
09. maj 2011 - 23:03 #11
SATANS TIL EKSPERTEN.

http:// jenskjeldsted.dk/s/12/en-test-side
Avatar billede dab93 Nybegynder
09. maj 2011 - 23:07 #12
Selve url adressen virker her:
http://www.dab93.dk/show/17/mandag-aften

Men hvis jeg ændre 17 til 16 så ændre den over indlæget..

Hele min .htaccess er opstillet som i den guide, har ikke 100% forstand på det :)
Avatar billede kjeldsted Novice
09. maj 2011 - 23:08 #13
Øh. Ja. Det skal den vel også!? Er det ikke det du beder den om?
Avatar billede kjeldsted Novice
09. maj 2011 - 23:10 #14
I din mysql skriver du jo:

$select = mysql_query("SELECT * FROM blog WHERE id = '". $_GET['id'] ."' and emne = '". $_GET['name'] ."' ");


Så er det jo klart nok den skifer når du skifter ID???
Avatar billede dab93 Nybegynder
09. maj 2011 - 23:10 #15
Den ændre ikke titlen i url adressen.
Når mit indlæg med ID nummeret 17 har overskriften "Mandag aften", så skal der stå domæne.dk/show/17/mandag-aften/

Men hvis jeg så skriver domæne.dk/show/16/mandag-aften/ så kommer indlæget med id nummer 16.
Avatar billede kjeldsted Novice
09. maj 2011 - 23:12 #16
Jeg forstår slet ikke hvad der er problemet. Den gør jo 100% som du beder den om.
Avatar billede dab93 Nybegynder
09. maj 2011 - 23:17 #17
www.dab93.dk/show/17/
- indlæget har titlen "Mandag aften" på siden
-- jeg vil gerne have url adressen til at se sådan her ud: www.dab93.dk/show/17/mandag-aften/ fordi at titlen på indlæget er "Mandag aften".

Når jeg skriver www.dab93.dk/show/17/mandag-aften, så går den, selvfølgelig, ind på indlæget som har ID nummer 17, og som har titlen "Mandag aften".

Men hvis jeg så skriver www.dab93.dk/show/16/mandag-aften og det indlæg har titlen "Det var den weekend", så går den stadig ind på indlæget. Det skal være sådan at indlæget på siden, der tager den og henter ud fra hvilken side man er på, dvs. at når der står 17/mandag-aften/ så skal den hente fra databasen hvor ID nummeret er 17, og hvor overskriften er "Mandag aften".

Forstår du det nu?
Avatar billede kjeldsted Novice
09. maj 2011 - 23:19 #18
Så det du egentlig vil er at den skal hente indholdet ud fra ID'en og så derefter ændre URL adressen?
Avatar billede dab93 Nybegynder
09. maj 2011 - 23:21 #19
Ja sådan set :)
Avatar billede kjeldsted Novice
09. maj 2011 - 23:23 #20
Er det ikke lidt åndssvagt? Så skal den jo opdatere siden en ekstra gang = dobbelt responstid for brugeren.
Avatar billede dab93 Nybegynder
09. maj 2011 - 23:25 #21
Det bliver alligevel ikke så stor en hjemmeside da det bare er min personlige blog med lidt funktioner, derfor er jeg villig til at den opdatere en ekstra gang. Vil gerne have at det skal se lidt nyt og smart ud, i forhold til hvad jeg har lavet før :)
Avatar billede kjeldsted Novice
09. maj 2011 - 23:27 #22
Men så er der da bare at gå i gang med JavaScript og PHP. Det lyder bare dybt åndssvagt i mit hoved det her. Så start med at læse på regex til JavaScript. Tror det vil blive praktisk.
Avatar billede dab93 Nybegynder
09. maj 2011 - 23:29 #23
Okay? Sikke et svar, men okay. Jeg har ikke rigtigt fået noget ud af det.
Avatar billede kjeldsted Novice
09. maj 2011 - 23:32 #24
Nej. Det er bare fordi jeg ikke kan se idéen i det.

Men du skal via PHP/JS tjekke om de to værdier hænger sammen i forhold til infomationerne i databasen og så hvis ikke de gør skal du ændre værdien i URL'en med JS.
Avatar billede dab93 Nybegynder
14. maj 2011 - 09:56 #25
Nogle som vil kunne give et konkret svar?
Avatar billede dab93 Nybegynder
14. maj 2011 - 17:14 #26
Jeg trækker mine point tilbage da der ikke er nogle svar.
Avatar billede kjeldsted Novice
15. maj 2011 - 21:26 #27
Jeg vil lige komme med en kort bemærkning.

Jeg har faktisk allerede tilbage i #9 besvaret spørgsmålet om hvordan du får flere variabler ind i din URL adresse med "pretty URL".
Nu er jeg på ingen måde fan af de har skide Eksperten points, men det er jo normal god skik at tilbyde pointsne til den der besvarer ens spørgsmål.

Ikke fordi du skal gøre noget ved de points hér, men du skal nok overveje næste gang, hvis du fortsat vil have folk skal hjælpe hér på stedet. God skik er noget alle sætter pris på på Eksperten..
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

IT-JOB

Capgemini Danmark A/S

Open Application (Denmark)

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Er du vores nye IT-supporter til Cyberdivisionens supportteam i Hvidovre?

Netcompany A/S

IT Manager

KMD A/S

Udvikler