Code voegt telkens %20 (space) toe

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Mik PHP

Mik PHP

06/09/2012 14:58:34
Quote Anchor link
Hallo allemaal,

Ik zit echt al uren te peinzen over iets heel vreemds. Ik ben
met een ajax scriptje bezig die om de seconden kijkt of de gebruiker
nieuwe priveberichten heeft. En zo ja, hij het aantal nieuwe berichten
automatisch veranderd op de website. Werkt allemaal perfect, alleen het
vreemde is dat hij telkens %20 (een spatie dus) aan het aantal toevoegd.

Ik heb alles geprobeert in het php script om het weg te krijgen, maar het
blijkt daar niet vandaan te komen.

Google kan me er ook niet mee verder helpen, dus misschien ziet hier iemand de
fout.

De code van het .js bestand. (Het is met jQuery gedaan):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var my_interval = 1000; // om de zoveel milliseconden checken
var local_num = 0;
$(document).ready(function() {
    local_num = $("#pb_new_msgs").val();
    pb_ping();
});

function pb_ping() {
  $.ajax({
    type: "GET",
    url: 'ajax.php?ajax=pb_ping&local='+local_num, // op deze url peil je enkel naar de laatste id
    success: pb_response
  });
}
var number = 0;
function pb_response(data) {
    number = data;
    if(number > 0) {
        $("#new_pm_msg_place").html(number);
        local_num = number;
    }
    setTimeout("pb_ping()", my_interval);
}


Het php script stuurt, als er dus nieuwe pb's zijn, het nieuwe getal terug.

Dankjewel alvast.

Groetjes,

Mik
Gewijzigd op 06/09/2012 14:59:49 door Mik PHP
 
PHP hulp

PHP hulp

18/04/2024 10:55:02
 
Eddy E

Eddy E

06/09/2012 15:01:17
Quote Anchor link
%20 is een spatie.

Twee opties: die spatie houden daar goed mee omgaan: zie (php's) urlencode() en urldecode().
Andere optie: die spatie weghalen. Zie trim().
Gewijzigd op 06/09/2012 15:02:11 door Eddy E
 
Mik PHP

Mik PHP

06/09/2012 15:02:54
Quote Anchor link
Ah ja, ff proberen..

Edit:

Helaas, nog steeds een spatie voor het nummer..

Edit:

En het ligt ook niet aan de var local_num. Ik heb die via het js bestand
op dezelfde plek gezet als dat het aantal nieuwe moet komen, en daar zit dan
geen spatie bij. Echter als ik local_num update met het nieuwe aantal pb berichten
zit er wel een spatie in.. Dus op een een of andere manier word er in data een spatie
toegevoegd ergens.. :S

Toevoeging op 06/09/2012 15:16:46:

Naja het blijkt toch ergens uit het php script te komen.. Want
als ik direct na de success via een functie data echo op de pagina
staat er ook een spatie voor...

Dit is de php code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
session_start();
ob_start();

include('include/config.php');

if($_SERVER["HTTP_X_REQUESTED_WITH"] == 'XMLHttpRequest' && !empty($_GET['ajax'])) {
    if(isset($_SESSION['hc_userid'])) {
        $uid = $_SESSION['hc_userid'];
        switch($_GET['ajax']) {
            case
"pb_ping":
                $query = mysql_query("SELECT id FROM private_messages WHERE fid = '{$uid}' AND status = 0");
                $i = urlencode(mysql_num_rows($query));
                if($i > 0) {
                    $a = urlencode($_GET['local']);
                    if($i > $a) {
                        echo $i;
                    }
else {
                        echo '0';
                    }
                }
else {
                    echo '0';
                }

            
            break;
            
            default:

                echo 'none1';
            break;
        }
    }
else {
        echo'none2';
    }
}
else {
    echo'none3';
}


ob_end_flush();
?>


Toevoeging op 06/09/2012 15:28:46:

Ah ik heb gevonden waar het vandaan kwam, alleen is het nog steeds vreemd..
Het komt uit de config.php die geinclude word en die enkel connectie maakt met mijn database..

Erg vreemd..
Gewijzigd op 06/09/2012 15:09:48 door Mik PHP
 
Kris Peeters

Kris Peeters

06/09/2012 15:47:29
Quote Anchor link
Mik tH op 06/09/2012 15:02:54:

Ah ik heb gevonden waar het vandaan kwam, alleen is het nog steeds vreemd..
Het komt uit de config.php die geinclude word en die enkel connectie maakt met mijn database..

Erg vreemd..


Waar je op moet letten bij config files, zijn leading en trailing spaties. Die mogen er niet zijn.

Je begint je file met <?php . Er mag geen spatie, tab of nieuwe regel voor staan.
Er mag ook geen enkele spatie, tab of nieuwe regel staan na ?>.

De simpelste techniek is om de sluitende php haakjes gewoon weg te laten.

------------------------

Dit gezegd zijnde... toch maar even posten wat ik aan het schrijven was.

Een paar dingen die me onmiddellijk opvallen:

- (js) lijn 17:
Daar moet je dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
number = Number(data);  // anders blijft number een string


Het is me trouwens niet duidelijk waarom je number declareert buiten de functie.

- (php) lijn 13 en 15:
Die urlencode's staan daar niets nuttig te doen.

urlencode gebruik je om iets veilig in de url-balk te steken.
Dus bv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  echo '<a href="?page=' . urlencode($row['page']) . '">KLIK</a>';
?>


Wanneer $row['page'] karakters bevat die actief zijn in een url, worden die omgezet. Karakters zoals "&" , "?" , "="
En o ja: urlencode genereert onder andere het karakter "%20".

Begin al eens met daar bv. dit van te maken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
  $res
= mysql_query("SELECT id FROM private_messages WHERE fid = '{$uid}' AND status = 0");  // o ja, ik heb $query hernoemd.  Dit is verwarrend.
  $i = mysql_num_rows($res);
  if($i > 0) {
      $a = (int) $_GET['local'];
?>
Gewijzigd op 06/09/2012 15:48:38 door Kris Peeters
 
- SanThe -

- SanThe -

06/09/2012 16:05:46
Quote Anchor link
Kris Peeters op 06/09/2012 15:47:29:
En o ja: urlencode genereert onder andere het karakter "%20".


Hoe?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '==>'.urlencode(' ').'<==';
?>


Dit geeft ==>+<== oftewel een spatie wordt een +
 
Jan terhuijzen

jan terhuijzen

06/09/2012 16:17:04
Quote Anchor link
Ja dat heb ik al eens gezien! soms zie je in de get variabelen van een willekeurige url die je op internet tegenkomt een %20 staan en soms een +
Heeft javascript niet ook een urlencode functie?
Er is in elk geval een verschil, terwijl de tekens hetzelfde betekenen.
Misschien doet PHP er een + van maken en javascript een %20
 
Kris Peeters

Kris Peeters

06/09/2012 16:34:55
Quote Anchor link
- SanThe - op 06/09/2012 16:05:46:
... Hoe? ...


Ik moet het nog eens deftig nagaan. Tijdje geleden ...
 
Dos Moonen

Dos Moonen

06/09/2012 23:42:15
Quote Anchor link
Kris Peeters op 06/09/2012 16:34:55:
- SanThe - op 06/09/2012 16:05:46:
... Hoe? ...


Ik moet het nog eens deftig nagaan. Tijdje geleden ...

http://php.net/manual/en/function.rawurlencode.php
 
Mik PHP

Mik PHP

01/10/2012 13:54:40
Quote Anchor link
Oeps, ik had helemaal niet door dat er nog meer gepost was!

Dankjewel voor alle tips! Ik had inderdaad de urlencode er al uitgehaald. Ook heb ik je andere aanpassingen toegepast.. Ik wist niet dat ik een variable ook binnen een functie kan declareren omdat het tussen $(document).read() niet kon..

Achja weer wat geleerd! Bedankt voor de tips in ieder geval!
Gewijzigd op 01/10/2012 13:55:51 door Mik PHP
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.