Javascript Value nach PHP weiterleiten!

DualityMind

Lieutenant
Registriert
Dez. 2015
Beiträge
768
Hallo Guten Abend

Habe wieder ein kleines Problem mit PHP und Javascript und zwar geht es um folgendes.

Ich habe einen Picture Slider zusammengebastelt, aber einige Sachen funktionieren so nicht ganz:

Ich habe diesen PHP-Code:


PHP:

Code:
<?php
$image = $databaseResult[0];

if ( $app_next == "")
{

echo "<a href=apps_show.php?sectio=$id_selekt[section_id]&an=$id_selekt[app_id]><img id=the-image src=images/$image width=418 height=280 alt='$image' ></a>";

}
if ( $app_next == "0")
{


echo "<a href=apps_show.php?sectio=$id_selekt2[section_id]&an=$id_selekt2[app_id]><img id=the-image src=images/$image width=418 height=280 alt='$image' ></a>";

}
if ( $id_selekt[section_id] == 6)
{

$kategorie = "SOFTWARE";
}
?>

und diesen Javascript-Code:

Javascript:
<script>
    // zwei globale Variablen; die erste wird mit PHP gesetzt
    // "images" ist Json; kann wie ein Array verwendet werden
    let images = <?php echo $databaseResultJson; ?>;

    // auch in JS beginnen wir mit dem ersten Bild
    let index = 0;

    function nextImage() {
        // "const"; da wir die Variable "image" nicht im Nachinhein ändern wollen.
        // increaseIndex() gibt den aktuellen Index zurück
        // mit dem Index greifen wir auf das ensprechende Bild im Json zu

        const image = images[increaseIndex()];
        changeImage(image);
    
    
    }

    function previousImage() {
        const image = images[decreaseIndex()];
        changeImage(image);
    }

    function decreaseIndex() {
        // wir prüfen, ob der Index kleiner null werden würde; das wäre ein Fehler.
        // Also geben wir einfach wieder null zurück; ansonsten zählen wir den Index einen nach unten ("-1").
        return (index - 1 < 0) ? 0 : index--;
    }

    function increaseIndex() {
        // hier prüfen wir auf den maximalen Index.


        return (index + 1 > <?php echo $totalNumberOfImages; ?>) ? index : index++;
    }

    function changeImage(image) {
        document.getElementById("the-image").alt = image;
    
        document.getElementById("the-image").src = "images/" + image;
    

    }
</script>

Das Problem ist nun. Ich möchte bei Code das rot markierte Einsetzen, aber funktioniert nicht so:

function nextImage() {
// "const"; da wir die Variable "image" nicht im Nachinhein ändern wollen.
// increaseIndex() gibt den aktuellen Index zurück
// mit dem Index greifen wir auf das ensprechende Bild im Json zu
app_next = app_next +1;
const image = images[increaseIndex()];
changeImage(image);


}

function previousImage() {
app_next = app_next -1;
const image = images[decreaseIndex()];
changeImage(image);
}

Das Rot Markierte sollte eingefügt werden, aber funktioniert so nicht leider. Das heisst wenn "game_next=0" ist (im PHP Code, dann sollte er vom PHP Code

if ( $app_next == "")
{


echo "<a href=apps_show.php?sectio=$id_selekt[section_id]&an=$id_selekt[app_id]><img id=the-image src=images/$image width=418 height=280 alt='$image' ></a>";

}

if ( $app_next == "0")
{


echo "<a href=apps_show.php?sectio=$id_selekt2[section_id]&an=$id_selekt2[app_id]><img id=the-image src=images/$image width=418 height=280 alt='$image' ></a>";

}

Damit will ich erreichen, wenn jemand auf den Button Next_Image() klickt, dass app_next +1 ausgeführt wird und den 2th Eintrag mit $id_selekt2 ausführt.

Das heisst $id_selekt ist die Neueste APP und $id_selekt2 ist die 2th Neueste App. Da die ID auf andere Programm verweist. z.b. <a href=apps_Show.php?sectio=$sectio&an=$id_selekt2[app_id].

Damit nicht nur das Bild im Picture_Slider erscheint, sondern auch verlinkt wird z.B. zu Kontakte.php etc...!

Das ganze könnte man auch im Javascript lösen, aber es gelingt mir einfach nicht. Deshalb würde ich es lieber in PHP lösen. :)

Leider musste ich einen Neuen Thread aufmachen, da am Anderen nicht mehr weitergeschrieben wurde.

Bin schon seit Tagen an diesem Problem, habe viel Gegoogelt, aber alles was ich angefasst habe, daraus wurde leider nichts :-)! Deshalb frage ich nochmals :-() ! :evillol:
 
Zuletzt bearbeitet:
Zuerst: Dein previousIndex und nextIndex kann durch index=Math.max(index-1,0) und index=Math.min(index+1,images.length) ersetzt werden.

Dann: Was ist game_next (app_next?)

Lösung: Du willst die Bilder mit ner URL verlinken: Mach aus deinem JSON-Array ["bild1,"bild2"] ein [{"img":"bild1","url","bild.de"},{…}].

HTML:
<?php $databaseResultJson=json_encode($db->query("select alt,img,url from images where blub")->fetchAll(PDO::FETCH_ASSOC));//Oder wie auch immer das bei dir gelöst ist.?>
<script>
/* In Funktion einpacken, um den globalen Namespace nicht zu verschmutzen */
(function(){
    let images = <?php echo $databaseResultJson; ?>;
    let index = 0;

    function nextImage() {
        index=Math.min(index+1,images.length);
        changeImage();
    }

    function previousImage() {
        index=Math.max(index-1,0);
        changeImage();
    }

    function changeImage() {
        document.getElementById("the-image").alt = images["alt"][index];
        document.getElementById("the-image").src = "images/" + images["img"][index];
       document.getElementById("the-link").href=images["url"][index];
    }
})();
</script>
Ungetestet. Die Annahme ist, dass das JSON ein SOA ist (Struct of arrays, also {"url",["a","b",],"alt",["c","d"],"img",["e","f"]}).

Noch n Hinweis: F12 kennst du? Debugge, dann findest du, was nicht klappt.
 
Hallo

@Hancock: Ich Danke Dir vielmals für die Mühe!

Geh dann mal schlafen und Teste es Morgen dann :-)! Schreib dann zurück ob es geklappt hat :love:

LG
 
Zurück
Oben