fwrite gaat niet goed

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lano Heeren

Lano Heeren

28/12/2012 17:16:02
Quote Anchor link
Beste forum lezers/helpers,
Met onder staandecode wil ik een list.js schrijven en opslaan.
als ik de code uitvoer dan gaat het mis bij: $jsondata .= json_encode($arr). ',';

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
40
41
42
<?php
$i
= 3;
$jsondata ='';
while($row = mysql_fetch_array($sql)){
$foto=$row['foto'];
$arr = array('["Logo'.$i.'", "../images/'.$row['foto'].'"]');
    //$arr = array ('Logo'.$i.'", "../images/'.$row['foto'].',');
    $jsondata .= json_encode($arr). ',';
    
    
    $i++;
}



 $file = fopen("tinymce/lists/image_list.js", "w");
 echo fwrite($file,'var tinyMCEImageList = new Array(
    // Name, URL
    ["Logo 1", "tinymce/media/logo.jpg"],
    ["Logo 2 Over", "tinymce/media/logo_over.jpg"],'
.$jsondata.'["Logo 5", "../images/test.png"]
);'
);
 fclose($file);
 ?>

Hieronder zie je de code die is weggeschreven. Het gaat mis bij $jsondata .= json_encode($arr). ',';
Zoals je kunt zien staat er voor het woordje Logo3 deze tekens,  [\"   hoe kan ik het weg laten schrijven, zodat het er uitkomt te zien net als in het tweede blokje?
var tinyMCEImageList = new Array(
    // Name, URL
    ["Logo 1", "tinymce/media/logo.jpg"],
    ["Logo 2 Over", "tinymce/media/logo_over.jpg"],
    ["[\"Logo3\", \"..\/images\/2012-11-10 12.38.18.jpg\"]"],
    ["[\"Logo4\", \"..\/images\/IMG_0293.JPG\"]"],
    ["Logo 5", "../images/test.png"]
);

Tweede blokje:
var tinyMCEImageList = new Array(
    // Name, URL
    ["Logo 1", "tinymce/media/logo.jpg"],
    ["Logo 2 Over", "tinymce/media/logo_over.jpg"],
    ["Logo3", "../images/2012-11-10.jpg"],
    ["Logo4", "../images/IMG_0293.JPG"],
    ["Logo 5", "../images/test.png"]
);
Gewijzigd op 28/12/2012 17:18:41 door Lano Heeren
 
PHP hulp

PHP hulp

20/04/2024 08:38:33
 
No One

No One

28/12/2012 17:27:55
Quote Anchor link
json_encode zet elke array om in een json object...jij moet dus gewoon een array maken met key=>values en dan vervolgens json_encode. dus logo$i=>"../images/row" (pseudocode)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/12/2012 17:31:10
Quote Anchor link
Als voorbeeld

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$arr
= array('Logo'.$i => '../images/'.$row['foto']);
$jsondata = json_encode($arr);
 
?>
Gewijzigd op 28/12/2012 17:31:30 door Frank Nietbelangrijk
 
Lano Heeren

Lano Heeren

28/12/2012 17:36:43
Quote Anchor link
Bedankt voor je reactie Henze,
Jij bedoelt, zoiets:
$arr = array ('name'=>$row['name']);
Dat heb ik ook al geprobeerd, maar dan wordt het nog erger en krijg je er ook nog {} voor en achter.
Dit is dan het resultaat:

var tinyMCEImageList = new Array(
// Name, URL
["Logo 1", "tinymce/media/logo.jpg"],
["Logo 2 Over", "tinymce/media/logo_over.jpg"],
{"Logo3":"..\/images\/2012-11-10 12.38.18.jpg"},
{"Logo4":"..\/images\/IMG_0293.JPG"},
["Logo 5", "../images/test.png"]
);
Gewijzigd op 28/12/2012 17:39:30 door Lano Heeren
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/12/2012 17:44:50
Quote Anchor link
{ en } staan om objecten, [ en ] staan om gewone arrays.

dus dan moet je gewone arrays gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$arr
= array('Logo'.$i , '../images/'.$row['foto']);
$jsondata = json_encode($arr);
 
?>


Toevoeging op 28/12/2012 17:45:22:

verschil zit m in de komma in plaats van =>
 
Lano Heeren

Lano Heeren

28/12/2012 18:12:53
Quote Anchor link
Bedankt Frank,
Heb het nu aangepast zoals hieronder met stripslashes, en dat werkt goed.

$arr = array('Logo '.$i, '../foto/'.$row['foto']);
$jsondata .= stripslashes(json_encode($arr). ',');
 
Erwin H

Erwin H

28/12/2012 18:21:34
Quote Anchor link
Alleen die stripslashes zou je niet moeten gebruiken. Als je json_encode gebruikt dan krijg je een valide json string terug. Dat kan er raar uit zien als er opeens slashes in staan, maar die staan er dan niet voor niets. Dubbele quotes worden namelijk in de json string gebruikt om de strings aan te geven. Staat er binnen een string dan een dubbele quote dan moet die ge-escaped worden. Als jij nu handmatig die slashes weer weghaalt dan haal je de json structuur om zeep. Dit heeft als gevolg dat het daarna niet meer gelezen kan worden door andere applicaties.
 
Lano Heeren

Lano Heeren

28/12/2012 21:12:51
Quote Anchor link
Bedankt voor de tip Erwin.
 



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.