JS-Variable in PHP

vandamp

Erfahrenes Mitglied
hallo,

wie mache ich es, dass ich die Variable url in php verwenden kann?
Bzw. ist es überhaupt möglich Javascript wird ja erst am Client ausgeführt und php code schon am Server so weit ich weiß.
bzw wenn es so eine art Funktion auch in Javascript gibt wäre es auch sehr hilfreich ;)
Ich will, wenn die URL z.b http://meineseite.de/test/hallo/image.jpg ist nur das image ausgeben.

PHP:
function mycarousel_getItemHTML(url)
{
    return '<a href=" 
	<? 
	$PATH = "hier sollte url stehen" // zum beispiel http://localhost/test/test1/hallo.jpg
	$dir = substr (strrchr ($PATH, "/"), 1);
	$dir = substr($dir, 0, strpos($dir, '.', 0));
	echo $dir; // im beispiel hallo 
	?>" target="_blank"><img src="' + url + '" width="75" height="75" alt="" /></a>';
};
 
Zunächst einmal: Ja Javascript wird im Browser ausgeführt, PHP auf dem Server. Grundsätzlich wandelt der PHP-Parser den PHP-Code in eine Ausgabe um. PHP wird in der Regel HTML an den Browser ausgeben.

In diesem HTML kann aber auch Java-Script untergebracht werden.

Was das allerdings mit deinem Beispiel zu tun, verstehe ich noch nicht ganz. Du gibst dort nirgends Javascript aus, sondern reines HTML.

Ein Beispiel, wie das geht:

PHP:
echo '<script type="text/javascript">
alert("Hallo Welt!");
</script>';
 
ah ok hätte ich vielleicht sagen sollen, dass es sich dabei um eine javascript funktion handelt, die mir ein jcarousel erstellt.

PHP:
<script type="text/javascript">
function mycarousel_itemLoadCallback(carousel, state)
{
    if (carousel.has(carousel.first, carousel.last)) {
        return;
    }
    jQuery.get(
        '<? echo 'dynamic_ajax_php.php?galerie='.$_GET['galerie'].'';?>',
        {
            first: carousel.first,
            last: carousel.last
        },
        function(xml) {
            mycarousel_itemAddCallback(carousel, carousel.first, carousel.last, xml);
        },
        'xml'
    );
};
function mycarousel_itemAddCallback(carousel, first, last, xml)
{
    carousel.size(parseInt(jQuery('total', xml).text()));
    jQuery('image', xml).each(function(i) {
        carousel.add(first + i, mycarousel_getItemHTML(jQuery(this).text()));
    });
};
function mycarousel_getItemHTML(url)
{
    return '<a href=" 
    <?php
    $PATH = "hier sollte die variable url stehen" // zum beispiel http://localhost/test/test1/hallo.jpg
    $dir = substr (strrchr ($PATH, "/"), 1);
    $dir = substr($dir, 0, strpos($dir, '.', 0));
    echo $dir; // im beispiel hallo 
    ?>" target="_blank"><img src="' + url + '" width="75" height="75" alt="" /></a>';
};
jQuery(document).ready(function() {
    jQuery('#mycarousel').jcarousel({
        itemLoadCallback: mycarousel_itemLoadCallback
    });
});
</script>
 
Zuletzt bearbeitet:
Ahh, jetzt, ja...

Nun, da es sich wohl um eine JS-Datei handelt (tut sie das?), wirst du sie wohl durch einen PHP-Parser jagen müssen, bevor sie zum Client (Browser) ausgeliefert wird.

Das kannst du so machen:

Du modifizierst den Application-Type von *.js, so das er an application/x-httpd-php übertragen wird (schwierig).
Du hängst an die JS-Datei ein .php an und rufst im HTML das so auf:

HTML:
<script type="text/javascript" src="http://pfad/zur/datei.js.php"></script>
 
mein Problem ist eigentlich, dass ich die Javascript variable "url" nicht in das php übergeben bekomme.
und auch nicht weiß, wie ich es anstellen soll.
selbst wenn ich es wie du sagst durch einen php parser schicke, habe ich ja die variable noch nicht in meinem php teil oder wie ich kann ich diese dann aufrufen?
 
Jetzt habe ich dich verstanden. Was gibt das hier denn aus?

<? echo 'dynamic_ajax_php.php?galerie='.$_GET['galerie'].'';?>

Womöglich kannst du den Pfad darüber bereits korrekt abholen.

Edit: Sorry, diesmal hab ich mich etwas unglücklich ausgedrückt. Also das Ajax-Script sollte ja eine Java-Script-Ausgabe tätigen. In dieser sollten die Images als Array hinterlegt sein. Dieses Array enthält dann die Bilder ohne die konkrete Pfad-Angabe. Ich denke mal, dass das der richtigere Ansatz wäre.
 
Zuletzt bearbeitet:
leider nicht das ergibt den Input aus welchem Ordner meine Bilder kommen.

das ganze funktioniert so

input aus welchem Ordner das script die Bilder verwenden soll,
dort gibt es Thumbmails von den Bildern, die in eine xml Datei geschrieben werden
diese Datei dient als input für mein jscarousel ( das ist ein javascript, welches mir eine Scrollbare Bilderleiste erstellt)
so jetzt kommts zum Problem, die Bilder in dem Carousel sollen mit einem Link versehen werden, der dann auf ein php script verweißt.galerie.php?Bild= "hierfür brauche ich den Namen vom Bild)
Dieses zeigt einem dann das Bild in groß an und noch weiteres.

die Funktion
function mycarousel_getItemHTML(url)
erstellt mir den output von meinem script, aber ich muss dafür die url beschneiden brauchen nur das ende davon.
Beispielurl = galerien/Test/hallo.jpg
was ich brauche ist "hallo"

das will ich eben mit dem php code in der function mycarousel_getItemHTML(url) bewerkstelligen.
 
Zuletzt bearbeitet:
haha du hast mich da auf eine Idee gebracht, die zur Lösung geführt hat ;)

zwar nicht schön, aber es funktioniert, ich bekomme den Namen der Datei!

PHP:
<script type="text/javascript">	
eingabe='galerie/galerien/test/tester.jpg';
ausgabe = eingabe.substring(
<? $str = 'galerie/galerien/'.$_GET['Galerie'].''; 
   $str_l = strlen($str)+1; 
    echo  $str_l;?>
	, eingabe.length-4);
document.write(ausgabe);
</script>
 
Zurück