Avatar billede hcthorsen Praktikant
07. oktober 2009 - 11:16 Der er 5 kommentarer og
2 løsninger

Hvorfor forsvinder alt efter et mellemrum i min "URL"?

Hej eksperter!

Jeg laver nogle grafer vha. JPgraph. De indsættes eksempelvis med: 

<img src="images/pie_prioritering.php?funktion=<?php echo $_POST['funktion'];?>" border=0>

I pie_prioritering bruger jeg indholdet af funktion i en mySQL søgning:

if($_GET[funktion]== ''){
  $funktion = 'NULL';
}
else{
  $funktion = "'".mysql_real_escape_string($_GET[funktion])."'";
}

$sSql = "SELECT CONCAT(CAST(agegroup.low AS CHAR),'-',CAST(agegroup.high AS CHAR)),COUNT(erfaring.alder) AS antal
FROM erfaring RIGHT JOIN agegroup ON agegroup.low <= erfaring.alder AND erfaring.alder
<= agegroup.high WHERE user = '$_SESSION[user]' AND funktion = IFNULL($funktion,funktion)) GROUP BY CONCAT(CAST(agegroup.low AS CHAR),'-',CAST(agegroup.high AS CHAR))
ORDER BY agegroup.low";
$sql = mysqli_query ($conn,$sSql);


Det virker umiddelbart fint, bortset fra hvis funktion indeholder 2 ord, for så kommer alt efter mellemrummet ikke med! Hvad gør jeg galt?
Avatar billede thesurfer Nybegynder
07. oktober 2009 - 11:19 #1
Lav en replace, hvor du erstatter " " (mellemrum) med "+" (plus-tegnet).

Eksempel:

før replace: hej med dig

efter replace hej+med+dig


PS: Mellemrum og andre specielle tegn (æ,ø,å osv) hører ikke rigtigt til i URLs, filnavne osv..
(min holdning)
Avatar billede thesurfer Nybegynder
07. oktober 2009 - 11:27 #2
Du skal så evt. lave den omvendte replace, før du arbejder med den aflæste funktion.. dvs, erstat "+" (plus-tegnet) med " " (mellemrum)..
Avatar billede hcthorsen Praktikant
07. oktober 2009 - 20:04 #3
Har ikke lige prøvet det af, men det må virke. Er det den smarteste løsning? Det kan godt være jeg bare skal ændre min kode så jeg ikke ender ud med mellemrum (og æøå) i mine URL'er:-). Sender du et svar?
Avatar billede phliplip Nybegynder
08. oktober 2009 - 09:06 #4
Hej,

Måske i begge lige skulle taget et kig på urlencode() :)

http://dk.php.net/manual/en/function.urlencode.php

--
Returns a string in which all non-alphanumeric characters except -_. have been replaced with a percent (%) sign followed by two hex digits and spaces encoded as plus (+) signs. It is encoded the same way that the posted data from a WWW form is encoded, that is the same way as in application/x-www-form-urlencoded media type. This differs from the » RFC 1738 encoding (see rawurlencode()) in that for historical reasons, spaces are encoded as plus (+) signs.
--

I skal ikke bruge den på hele URL'en men kun på query værdierne..

<img src="images/pie_prioritering.php?funktion=<?php echo urlencode($_POST['funktion']);?>" border=0>
Avatar billede hcthorsen Praktikant
08. oktober 2009 - 18:49 #5
OK, det må jeg lige læse på. phlilip, jeg har kort prøvet med din metode, men synes nu ikke det virker. Har ikke tid til at kigge mere på det i dag. Nu ved jeg også hvor jeg kan læse mere på det. Tak til jer. Kan I ikke begge sende et svar - så kan i dele points.
Avatar billede thesurfer Nybegynder
09. oktober 2009 - 13:58 #6
Jeg programmerer ikke i PHP.. men det er et generelt problem og derfor det generelle svar, som gerne skulle virke i samtlige webbaserede programmeringssprog.. :-)

- Svar
Avatar billede phliplip Nybegynder
09. oktober 2009 - 21:32 #7
Svar
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