Avatar billede compac Seniormester
27. marts 2012 - 15:28 Der er 13 kommentarer og
1 løsning

Udtræk oplysninger fra javascript

Jeg har et array der kommer fra php via json_encode.
Hvordan får jeg det splittet op så jeg kan arbejde med det i javascript?
<?php
$idtur = $_GET['gpstur'];
session_start();
include("gpsadmin/conn.php");
$sql = "select * from $vandreture where id = '$idtur'";
$result=mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_array($result)){
            $date = date('d-M-Y',strtotime($row['dato']));
            $titel = $row['titel'];
            $file = $row['sted'];
            $dir = $row['mappe'];               
        }       
foreach (scandir($dir) as $f)    {
        if  (strcasecmp(substr($f, strlen($f) - 4), ".jpg") == 0)  {
              $$dir = $dir.'/'.$f;
              include("udtræk_exif.php");
              $files[] = array($date,$file,$dir,$exif);
          }       
}             
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Javascript tabel</title>
<script type="text/javascript">
{
var files=new Array('<?php echo json_encode($files); ?>');
for(var i=0;i<files.length;i++){
document.write(files[i]);
}
</script>
</head>
<body>
<h2>
JavaScript problem
</h2>
</body>
</html>
Det skal bruges til at "styre" placeringen af billeder i Gmaps, og Gmaps arbejder med javascript (eller noget der ligner).
Jeg har behov for at få dannet et array i javascript, hvor jeg kan trække hver enkelt post ud fra (date,file, dir, exif).
Avatar billede olebole Juniormester
27. marts 2012 - 15:38 #1
<ole>

var files = <?php echo json_encode($files); ?>);
alert(files[0]);


/mvh
</bole>
Avatar billede olebole Juniormester
27. marts 2012 - 15:44 #2
- og da elementerne i files jo er arrays, kan du også prøve:

var files = <?php echo json_encode($files); ?>);
alert(files[0][0]);

Jeg forstår til gengæld ikke, hvorfor du inkluderer filen udtræk_exif.php ved hvert gennemløb af en løkke ... eller hvorfor der indgår et 'æ' i dens filnavn?
Avatar billede compac Seniormester
27. marts 2012 - 16:05 #3
æ i et filnavn - det var en bommert, må jeg indrømme.
iøvrigt hvis jeg bruger alert(files[0]); kommer hele arrayet ud.
Bruger jeg alert(files[0][0]); kommer der en [ (firkantet parantes til syne.
Avatar billede compac Seniormester
28. marts 2012 - 11:54 #4
Jeg vil gerne formulere mit problem helt enkelt:

<?php
    $files[] = array($date,$file,$dir,$exif);
?>

<script type="text/javascript">
{
var files=new Array('<?php echo json_encode($files); ?>');
for(var i=0;i<files.length;i++){
document.write(files[i]); --???
}
</script>
Dette er gengivet rent skematisk.
Hvordan får jeg vist indholdet af mit array i document.write ?
Avatar billede olebole Juniormester
28. marts 2012 - 16:11 #5
"Bruger jeg alert(files[0][0]); kommer der en [ (firkantet parantes til syne." >> Det kan jeg ikke tro, hvis du skriver som i #2. Der skal ikke stå:


<script type="text/javascript">
{
var files=new Array('<?php echo json_encode($files); ?>');
for(var i=0;i<files.length;i++){
document.write(files[i]); --???
}
</script>

- men:

<script type="text/javascript">
var files = <?php echo json_encode($files); ?>);
alert(files[0][0]);
</script>
Avatar billede compac Seniormester
30. marts 2012 - 20:22 #6
Jeg har nu rettet koden som du har foreskrevet. Der kommer imidlertid stadig kun en box med en [  .
Jeg har prøvet at sætte en print_r($files) ind i php-koden

Den ser sådan ud:
Array ( [0] => Array ( [0] => 17-Feb-2011 [1] => bramsnas_100410.xml [2] => brams ) [1] => Array ( [0] => 17-Feb-2011 [1] => bramsnas_100410.xml [2] => brams ) [2] => Array ( [0] => 17-Feb-2011 [1] => bramsnas_100410.xml [2] => brams ) [3] => Array ( [0] => 17-Feb-2011 [1] => bramsnas_100410.xml [2] => brams ) [4] => Array ( [0] => 17-Feb-2011 [1] => bramsnas_100410.xml [2] => brams ) [5] => Array ( [0] => 17-Feb-2011 [1] => bramsnas_100410.xml [2] => brams ) [6] => Array ( [0] => 17-Feb-2011 [1] => bramsnas_100410.xml [2] => brams ) )

Jeg tænkte at det kunne være spændende at se hvordan det ville være at ændre alert til alert(files[0][1]) - og derefter til alert(files[0][2]) osv.
Jeg ved ikke om det kan bruges til noget - men jeg forhøjede tallet med 1 og foretog en gennemkørsel hver gang for at se hvad der skete.

Jeg kom til [["17-sep-2011"'"bramsnas_100410.xml"'"
Avatar billede compac Seniormester
30. marts 2012 - 20:56 #7
Det er nu fristende at lægge denne kode ind i en for-løkke med alert(files[0][x])
Det gjorde jeg så og der kommer nu værdierne ud en efter en.
En ting har dog forvirret mig er at der er et punkt som kan afkrydses: "Undgå at denne side laver nye dialogbokse". Det er selvfølgelig meget godt hvor man ikke har styr på antallet.

Spørgsmålet er så: hvordan får jeg lagt mine php-array felter over i enten javascript variable eller javascript-arrays?
Avatar billede olebole Juniormester
30. marts 2012 - 21:22 #8
Det bør virke helt af sig selv:

<?php
$files = array(
    array(
        '17-Feb-2011',
        'bramsnas_100410.xml',
        'brams'
    ),
    array(
        '17-Feb-2011',
        'bramsnas_100410.xml',
        'brams'
    ),
    array(
        '17-Feb-2011',
        'bramsnas_100410.xml',
        'brams'
    ),
    array(
        '17-Feb-2011',
        'bramsnas_100410.xml',
        'brams'
    ),
    array(
        '17-Feb-2011',
        'bramsnas_100410.xml',
        'brams'
    ),
    array(
        '17-Feb-2011',
        'bramsnas_100410.xml',
        'brams'
    ),
    array(
        '17-Feb-2011',
        'bramsnas_100410.xml',
        'brams'
    )
);
print_r($files);
?>

<script type="text/javascript">
var files = <?php echo json_encode($files); ?>;
alert(files[0][0]);
</script>
Avatar billede olebole Juniormester
30. marts 2012 - 21:25 #9
"En ting har dog forvirret mig er at der er et punkt som kan afkrydses: "Undgå at denne side laver nye dialogbokse"."

Det er en helt almindelig feature i den browser  =)
Avatar billede compac Seniormester
30. marts 2012 - 21:50 #10
OK, Så er det der hunden ligger begravet: Det er browseren!

Men det afklarer ikke hvordan jeg får fat i værdierne når jeg skal arbejde med dem i javascript.
Avatar billede olebole Juniormester
30. marts 2012 - 22:31 #11
PHP-array'et i #8 er det samme, som det du skriver med print_r - og det fungerer fint. Prøv igen  =)
Avatar billede compac Seniormester
08. april 2012 - 11:31 #12
Nu er det OK tak for hjælpen. Læg et svar.
Avatar billede olebole Juniormester
08. april 2012 - 16:30 #13
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede compac Seniormester
18. april 2012 - 15:40 #14
tak
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