Avatar billede Madsjohansen Nybegynder
22. juni 2013 - 07:13 Der er 9 kommentarer og
1 løsning

PHP output i javascript

Hej

Jeg har http://www.madsfoto.dk og ved at redigere i javascript koden kan jeg ændre hvilke billeder der bliver vist som slideshow.

Den relevante kode er:
<script type="text/javascript">
jQuery(function($){
$.supersized({
slides:
[
[image:'http://www.madsfoto.dk/bgimg/1.jpg', title : '', url : ''},
{image:'http://www.madsfoto.dk/bgimg/2.jpg', title :'', url : ''},
{image:'http://www.madsfoto.dk/bgimg/3SB.jpg', title :'', url : ''},
{image:'http://www.madsfoto.dk/bgimg/4VMD.jpg', title :''
]
});
});
</script>

For at gøre livet lettere for mig selv har jeg lavet et php script der viser hvilke filer der findes i /bgimg/* (se http://madsfoto.dk/dir.php )

Jeg vil nu gerne have kombineret de to ting, men er i tvivl om hvordan det rent praktisk skal gøres.
Min umiddelbare ide var at lave php scriptet så det dump outputtede den javascript jeg skal bruge indtil de links i bgimg, køre mit dir script og vende tilbage til dum output.
Noget i stil med
<?php
echo="<script type="text/javascript">" </?>

Er det den rigtige måde at gøre det på eller skal jeg tænke i helt andre retninger?
Jeg er overbevist om der findes et klogt hoved derude der kan se løsningen :)

Med venlig hilsen
Mads Johansen
Avatar billede Slettet bruger
22. juni 2013 - 11:23 #1
Vil du have flere separate slideshows, eller bare hælde ALLE billeder i mappen ind i det eksisterende ?
- så de automagisk kommer med i showet, så snart du har uploadet nye billeder i dén mappe ?
Avatar billede Slettet bruger
22. juni 2013 - 11:28 #2
BTW: Hvad ER den for en lille svævende dimsedut du har fanget på dette billede:
http://www.flickr.com/photos/the_zaro/9080669862/

- en NSAminiDrone ?!?
Avatar billede Madsjohansen Nybegynder
22. juni 2013 - 11:32 #3
Et slideshow for filer i den mappe.
Der kommer kun til at være ca 10 filer, men med varierende navne og kun en mappe der skal hentes filer fra.

Det er en sæbeboble :)
Avatar billede Slettet bruger
22. juni 2013 - 12:20 #4
Så burde det kunne lade sig gøre:


            jQuery(function($){
               
                $.supersized({
               
                    slide_interval          :  5000,
                    transition              :  6,            
                    transition_speed        :    400,
                    slide_links                :    'blank',
                    slides                     :      [            // Slideshow Images
                                                        {image : 'http://www.madsfoto.dk/bgimg/1.jpg', title : 'Danger', url : ''},
                                                        {image : 'http://www.madsfoto.dk/bgimg/2.jpg', title : 'Getting wet', url : ''}, 
                                                        {image : 'http://www.madsfoto.dk/bgimg/3SB.jpg', title : 'Soapbox racers', url : ''},
                                                        {image : 'http://www.madsfoto.dk/bgimg/4VMD.jpg', title : 'VM dans ved Salling', url : ''},
                                                        {image : 'http://www.madsfoto.dk/bgimg/5P.jpg', title : 'Aarhus Pride', url : ''},
                                                        {image : 'http://www.madsfoto.dk/bgimg/6T.jpg', title : 'Tasty', url : ''},
                                                        {image : 'http://www.madsfoto.dk/bgimg/7CL.jpg', title : 'Cheerleaders', url : ''},
                                                        {image : 'http://www.madsfoto.dk/bgimg/8.jpg', title : 'RC Drift', url : ''},
                                                        {image : 'http://www.madsfoto.dk/bgimg/9AJ.jpg', title : 'American day in Aarhus', url : ''},
                                                        {image : 'http://www.madsfoto.dk/bgimg/10.jpg', title : 'Sister with phone', url : ''}
                                                ]
                   
                });
            });


Hvis du genererer fillisten med PHP (og navngiver billederne med deres titler):


            jQuery(function($){
               
                $.supersized({
               
                    slide_interval          :  5000,
                    transition              :  6,
                    transition_speed        :    400,
                    slide_links                :    'blank',
                    slides                     :  [
<?php
Loop igennem listen af filer i mappen
    echo "{mappesti/".$billedNavn[x].", title : '".billedNavn-uden(-.jpp)."',url : ''},";
?>
                                                ]
                   
                });
            });

Og så liige en if som beslutter om linjen skal afsluttes med et komme (det skal den sidste ikke)

Selve html filen (index.html?), skal så bare have .php enden i stedet for .html
Avatar billede Madsjohansen Nybegynder
22. juni 2013 - 12:42 #5
Dvs noget i stil med

jQuery(function($){
$.supersized({
                slide_interval          :  5000,
                    transition              :  6,
                    transition_speed        :    400,   
                    slide_links                :    'blank',   
                    slides                     :      [        <?php
    $directory = "./bgimg/";
    $texts = glob($directory . "*.jpg");
$a = 0;
foreach($texts as $text)
{
if ($text != "." && $text != "..") {
    $rawstring = $text;
    $textreplaced = str_replace("./", "", $rawstring);
    $a++;
    if ($a == 10)
    {
    echo "{image : 'http://www.madsfoto.dk/$textreplaced', title : '', url : ''}\n";
    $a++;
    }
    else {
    echo "{image : 'http://www.madsfoto.dk/$textreplaced', title : '', url : ''},\n";
    }
    }
}
?>        ]
});
            });


? (hvilket virker.)
Takker mange gange :D
Smid endeligt et svar så du kan få dine point :D
Avatar billede Slettet bruger
22. juni 2013 - 13:48 #6
Præcis - men du har helt droppet titlerne ?

Du kunne ellers navngive billederne f.eks: Mona_spiller_bold_i_trafikken.jpg
Og så erstatte alle "_" med mellemrum inden du sætter den ind

echo "{image : 'http://www.madsfoto.dk/ (...), title : '".mb_str_replace("_"," ",$textreplaced)."', url : ''}\n";


Der FINDES bare ikke en mb_ version af str_replace i PHP
- men du kan kopiere og bruge dén i første kommentar under finktionslisten her: http://php.net/manual/en/ref.mbstring.php

mb_ versionerne af str-funktionerne bruges jo til strenge med multibyte-tegn - såsom æøåéü osv
- dem bruger jeg ALID
Avatar billede Madsjohansen Nybegynder
22. juni 2013 - 13:57 #7
Ja. Det har været planen hele tiden at de ikke skulle være der.

Mange tak for svaret :D
Avatar billede Slettet bruger
22. juni 2013 - 14:01 #8
Ah ja. Det er den med at "et billede siger mere end 1.000 ord" : )
- derfor kan det jo være meget rart med lidt præcis info indimellem..
Avatar billede Madsjohansen Nybegynder
22. juni 2013 - 16:13 #9
Ideen er sådan set at der er 5 stabile billeder og 5 der bliver skiftet ud en af gangen når jeg uploader en ny samling/set.

På den måde kan folk se nogle af mine bedste billeder og nogle der er af aktuelle begivenheder, samt links til de andre set.
Avatar billede Slettet bruger
22. juni 2013 - 16:53 #10
Så er det jo helt perfekt : )

Men du KUNNE også "hærde" koden en smule ved, i stedet at fjerne kommaet netop ved nr 10 (med det resultat at det knækker hvis der ligger 9 eller 11) gøre således:

$komma = "";
foreach($texts as $text)
{
if ($text != "." && $text != "..") {
    $rawstring = $text;
    $textreplaced = str_replace("./", "", $rawstring);
    echo "$komma{image : 'http://www.madsfoto.dk/ (...), title : '', url : ''}\n";
    $komma = ",";
    }
}

Altså komma FORAN alle andre end den første
- samme resultat, blot uden risiko for at det knækker (og kun 1 echo-linje at tilrette)
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