fwrite gaat niet goed
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)
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
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"]
);
$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
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)
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$arr = array('Logo'.$i => '../images/'.$row['foto']);
$jsondata = json_encode($arr);
?>
$arr = array('Logo'.$i => '../images/'.$row['foto']);
$jsondata = json_encode($arr);
?>
Gewijzigd op 28/12/2012 17:31:30 door Frank Nietbelangrijk
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
dus dan moet je gewone arrays gebruiken:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$arr = array('Logo'.$i , '../images/'.$row['foto']);
$jsondata = json_encode($arr);
?>
$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 =>
Heb het nu aangepast zoals hieronder met stripslashes, en dat werkt goed.
$arr = array('Logo '.$i, '../foto/'.$row['foto']);
$jsondata .= stripslashes(json_encode($arr). ',');
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.
Bedankt voor de tip Erwin.