Tilføj %20 i link istedet for mellemrum ved genereret link

Her kan du få hjælp og stille spørgsmål til PHP!
Besvar
gertk
Begynder
Indlæg:3
Tilmeldt:2. maj 2013, 13:02
Tilføj %20 i link istedet for mellemrum ved genereret link

Indlæg af gertk » 2. maj 2013, 13:06

Hej,

Jeg har et mindre problem som jeg håber jeg kan få lidt hjælp til.

Jeg har lavet en simpel form hvor jeg kan indtaste forskellig informationer fx navnet på en person og så bliver det gemt i en database i MySQL.

Så har jeg lavet en php side hvor jeg kan se informationerne fra databasen. På denne side er er det også muligt at redigerer i de informationer der er gemt i databasen.

Mit problem er, at når jeg vil redigere noget, generer php koden et link med de informationer der i databasen, men er der et mellemrum mellem 2 ord fx: John Smidt, går linket i stykker efter John. Det er som om den ikke kan læse mellemrummet og derefter tage det/de efterfølgende ord med.

Dvs. linket burde se sådan ud:
http://www.minside.dk/data/data.php?id=9&navn=John Smidt&adresse=Alle veje 25&tlf=8652588&email=john@john.dk&mode=edit

men ser sådan ud:
http://www.minside.dk/data/data.php?id=4&navn=john

Koden der genererer linket ser således:

Kode: Vælg alt

Print "<td><a href=" .$_SERVER[’PHP_SELF’]. "?id=" . $info['id'] ."&navn=" . $info['navn'] . "&adresse=" . $info['adresse'] . "&tlf=" . $info['tlf'] ."&email=" . $info['email'] . "&mode=edit>Edit</a> </td>";  
Hele koden ser således ud:

Kode: Vælg alt

<?php
2.  // Connects to your Database 
3. 
4.  // pulls the data from the database
5.  $data = mysql_query("SELECT * FROM adresser ORDER BY hold ASC") 
6.  or die(mysql_error()); 
7.  
8.  Print "<h2>Adresse</h2><p>"; 
9.  Print "<table width=600 border=1 cellpadding=3>"; 
10.  Print "<tr><th width=100>Person info</th><th width=100>address</th><th width=100>Hold</th><th width=200>Email</th><th width=100 colspan=2>Admin</th></tr>"; Print "<td colspan=6 align=right><a href=" .$_SERVER[’PHP_SELF’]. "?mode=add>Add Contact</a></td>"; 
11.  while($info = mysql_fetch_array( $data )) 
12.  { 
13.  Print "<tr><td>".$info['navn'] . " <br> ".$info['adresse'] . " <br> ".$info['tlf'] . " <br> ".$info['email'] . "</td> "; 
14.  Print "<td>".$info['adresse'] . "</td> "; 
15.  Print "<td>".$info['tlf'] . "</td> "; 
16.  Print "<td> <a href=mailto:".$info['email'] . ">" .$info['email'] . "</a></td>"; 
17.   // START koden der generer linket 
18.  Print "<td><a href=" .$_SERVER[’PHP_SELF’]. "?id=" . $info['id'] ."&navn=" . $info['navn'] . "&adresse=" . $info['adresse'] . "&tlf=" . $info['tlf'] ."&email=" . $info['email'] . "&mode=edit>Edit</a></td>";   
19.   // SLUT koden der generer linket
20.  Print "<td><a href=" .$_SERVER[’PHP_SELF’]. "?id=" . $info['id'] ."&mode=remove>Remove</a></td></tr>"; 
21.  } 
22.  Print "</table>"; 
23.  ?>
Jeg kan ikke ikke gennemskue hvad jeg skal gøre for at linket bliver "genereret" fuldt ud også med mellemrum.

Nogle der kan give et råd eller har/kan komme med løsningen?

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Tilføj %20 i link istedet for mellemrum ved genereret li

Indlæg af ThomasI » 2. maj 2013, 21:20

Prøv med str_replace...

http://php.net/manual/en/function.str-replace.php

der kan du udskifte " " med "%20"...

Brugeravatar
Daniel
Admin
Admin
Indlæg:625
Tilmeldt:14. jun 2011, 09:27
Geografisk sted:Danmark, Fyn, Nørre Aaby
Kontakt:

Re: Tilføj %20 i link istedet for mellemrum ved genereret li

Indlæg af Daniel » 3. maj 2013, 07:30

En mulighed ville også være at prøve med urlencode funktionen, laver mellemrum om til +, og specialtegn om til %20.
http://php.net/manual/en/function.urlencode.php

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Tilføj %20 i link istedet for mellemrum ved genereret li

Indlæg af ThomasI » 3. maj 2013, 17:11

ah ja Daniel... urlencode er da langt mere oplagt :D

gertk
Begynder
Indlæg:3
Tilmeldt:2. maj 2013, 13:02

Re: Tilføj %20 i link istedet for mellemrum ved genereret li

Indlæg af gertk » 3. maj 2013, 17:58

Tak til alle for ideer. Jeg fik løsningen i et andet forum. Hvis andre skal bruge det endte linket med at se således ud:

Kode: Vælg alt

 Print "<td><a href=" .$_SERVER[’PHP_SELF’]. "?id=" . $info['id'] ."&navn=" . urlencode($info['navn']) . "&adresse=" . urlencode($info['adresse']) . "&tlf=" . urlencode($info['tlf']) ."&email=" . $info['email'] . "&mode=edit>Edit1</a></td>"; 
Det virker perfekt :)

Besvar