Avatar billede davidabk Nybegynder
24. maj 2010 - 17:22 Der er 9 kommentarer og
1 løsning

Hvorfor skriver PHP %20%20%20%20%20%20%20%20 i adresselinien?

Hej

Hvorfor får jeg nogle gange en masse %20%20%20%20%20%20%20%20 i adresselinien?

Her er et eksempel på en kodestump som giver en masse %20'er:

        <!-- action og member_id overføres til linkside -->
        <a href="members_action.php?member_id=<?php echo $member_row['member_id']; ?>
                &action=<?php echo "member_edit"; ?>">

Jeg kan ikke helt se hvorfor jeg kun får de mange %20'er en gang imellem når princippet i koden er den samme! - og ja.. jeg er nybegynder!
Avatar billede arne_v Ekspert
24. maj 2010 - 17:26 #1
%20 er URL encoding af mellemrum.

Du har ikke nogle mellemrum i de database felter??
Avatar billede davidabk Nybegynder
24. maj 2010 - 17:34 #2
Hej arne_v

Tak for svaret!

Det er et godt spørgsmål!

Der er naturligvis mellemrum mellem de indtastede fornavn og efternavn, men ellers kan jeg ikke se at der skulle være mellemrum.

Er der en måde hvorpå jeg kan tjekke det?
Eller er der en måde hvorpå jeg kan frasortere de %20 som kommer? (det ser ikke kønt ud)?
Avatar billede arne_v Ekspert
24. maj 2010 - 17:41 #3
Proev evt. en:

SELECT CONCAT('#',member_id,'#') FROM ...

for at se om der er nogle ekstra mellemrum.

Mellemrum kan trimmes vaeke baade i MySQL og PHP, saa ingen panik. Men foerst skal vi have bekraeftiget at det er problemet.
Avatar billede davidabk Nybegynder
24. maj 2010 - 18:00 #4
Hej arne_v

Jeg har lige kørt dit forslag igennem og får resultatet:

Resource id #4

Det svarer til antallet af brugere som er oprettet i systemet!

Koden jeg brugte:

<?php
//get login information from file
require_once 'db\db_login.php';

//connect to MySQL
$connect = mysql_connect($db_hostname, $db_username, $db_password);
if (!$connect) die("Unable to connect to MySQL: " . mysql_error());

//make sure the right database is selected
mysql_select_db("$db_database")
    or die("cannot select DB");

$result = "SELECT CONCAT('#',member_id,'#') FROM $db_tbl_member";
$member_result = mysql_query($result);

echo $member_result;
?>
Avatar billede arne_v Ekspert
24. maj 2010 - 18:11 #5
Mit forslag var at du koerte den i PHPMyAdmin og saa om der var nogle ekstra mellemrum. Du kanb ogsaa godt kode det i PHP, men det er unoedvendigt. Du skal dog i saa fald vise data.
Avatar billede davidabk Nybegynder
24. maj 2010 - 18:29 #6
Ok.. ja den fangede jeg ikke først!

Her er resultatet fra PHPMyAdmin:

CONCAT('#',member_id,'#')
#1#
#2#
#3#
#13#
#39#

Det ser ikke ud til at der er mellemrum her!
Avatar billede arne_v Ekspert
24. maj 2010 - 18:32 #7
Korrekt.

Naeste ide.

        <a href="members_action.php?member_id=<?php echo $member_row['member_id']; ?>
                &action=<?php echo "member_edit"; ?>">

er det gemt som:

<a href="members_action.php?member_id=<?php echo $member_row['member_id']; ?>&action=<?php echo "member_edit"; ?>">

altsaa paa en enkelt linie?
Avatar billede davidabk Nybegynder
24. maj 2010 - 18:43 #8
JUHUUUU!! Du er genial ;-)

Det er mellemrummene i html koden som giver udslaget!

Har lige prøvet med forskellig størrelse mellemrum mellem php strengene og det giver %20 svarende til mellemrummet

Jeg takker mange gange for hjælpen!
Avatar billede azerty Juniormester
24. maj 2010 - 18:59 #9
Hej davidabk: Du skal ikke skrive dine kommentarer som "svar". vælg i stedet "kommentar" næste gang. Til gengæld skal du bede arne_v lægge et svar, så du kan uddele point.
Avatar billede arne_v Ekspert
24. maj 2010 - 19:02 #10
svar fra mig
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
Kurser inden for grundlæggende programmering

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