0

I want to simply create function that on button click will change innerHTML of my div to one of the php files.

Example of one php file is like this:

<?php
    require('../Php/ConfigBaza.php');
    $sql = "
    SELECT Proizvod.PROIZVODID, Proizvod.NAZIV, Proizvod.SLIKA
    FROM PROIZVOD_GRUPE
    LEFT JOIN Proizvod ON PROIZVOD_GRUPE.PROIZVODID = Proizvod.PROIZVODID WHERE PROIZVOD_GRUPE.PROIZVOD_GRUPAID = '1';

    SELECT PROIZVODID, NAZIV, SLIKA FROM Proizvod WHERE AKCIJSKI_ARTIKAL = 1";

    $result = $mysqli->query($sql);

    if($result->num_rows < 1)
    {
        echo("Doslo je do greske prilikom ucitavanja proizvoda!");
        die();
    }
    else
    {

        echo("
        <div id='overlay' style='display: none; position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: 999; background-color: hsla(0, 0%, 50%, 0.39);'>
            <div id='kolicina_overlay' style='display: none; position: fixed; width: 500px; height: 110px; margin-top: -55px; margin-left: -150px; top: 50%; left: 50%; text-align: center; background-color: #2196F3; z-index: 1000'>
                <p style='font-weight: bolder'>Unesite zeljenu kolicinu!</p>
                <input type='number' value='1' style='width: 50px'>
                <div id='kolicina_potvrdi_button' style='padding: 10px; color: white;' onclick='UnesiKolicinu()'>Potvrdi</div>
            </div>
        </div>
        ");
        while($proizvod = mysqli_fetch_assoc($result))
        {
            $pid = $proizvod['PROIZVODID'];
            $naziv = $proizvod['NAZIV'];
            $slika = $proizvod['SLIKA'];
            $rabat = $proizvod['POPUST'];

            if(!isset($slika) || empty($slika))
            {
                $slika = "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/No_image_available.svg/600px-No_image_available.svg.png";
            }
            echo("
                <div class='proizvod_Box' id='$pid' onclick='IdiNaProizvod(id)'>
                    <div class='proizvod_Naslov'>
                        <p>$naziv</p>
                    </div>
                    <div class='proizvod_Slika'>
                        <img src='$slika'>
                    </div>
                </div>
            ");
        }
    }
?>

And how i tried to invoke them is like this:

case "_Akcija":
    document.getElementById('rightBox').innerHTML = "<?php echo include_once '../Php/Proizvodi/_Akcija.php';?>";
    break;

But it returns me error: Invalid or unexpected token for my ""

I have tried switching '' with "" inside my javascript but not working. Also tried to see maybe it will work with document.write but still same error. What to do?

Pacijent
  • 139
  • 1
  • 12
  • 1
    you need to load the content with ajax first and then use innerHtml to print it – Elementary Aug 14 '18 at 06:46
  • 1
    What’s causing the error is most likely that your PHP script outputs multi-line content, but “plain” JavaScript text literals can not go over multiple lines, that would need either ES6 syntax, or some manipulation of the content, see https://stackoverflow.com/questions/805107/creating-multiline-strings-in-javascript – CBroe Aug 14 '18 at 07:11
  • @Elementary Tried it but all time getting `500 erorr` – Pacijent Aug 14 '18 at 07:14

1 Answers1

0

You should just include the php file on top of your client page, first change the echo to a variable:

<?php
        require('../Php/ConfigBaza.php');
        $sql = "
        SELECT Proizvod.PROIZVODID, Proizvod.NAZIV, Proizvod.SLIKA
        FROM PROIZVOD_GRUPE
        LEFT JOIN Proizvod ON PROIZVOD_GRUPE.PROIZVODID = Proizvod.PROIZVODID WHERE PROIZVOD_GRUPE.PROIZVOD_GRUPAID = '1';

        SELECT PROIZVODID, NAZIV, SLIKA FROM Proizvod WHERE AKCIJSKI_ARTIKAL = 1";

        $result = $mysqli->query($sql);

        if($result->num_rows < 1)
        {
            echo("Doslo je do greske prilikom ucitavanja proizvoda!");
            die();
        }
        else
        {

            echo("
            <div id='overlay' style='display: none; position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: 999; background-color: hsla(0, 0%, 50%, 0.39);'>
                <div id='kolicina_overlay' style='display: none; position: fixed; width: 500px; height: 110px; margin-top: -55px; margin-left: -150px; top: 50%; left: 50%; text-align: center; background-color: #2196F3; z-index: 1000'>
                    <p style='font-weight: bolder'>Unesite zeljenu kolicinu!</p>
                    <input type='number' value='1' style='width: 50px'>
                    <div id='kolicina_potvrdi_button' style='padding: 10px; color: white;' onclick='UnesiKolicinu()'>Potvrdi</div>
                </div>
            </div>
            ");
            while($proizvod = mysqli_fetch_assoc($result))
            {
                $pid = $proizvod['PROIZVODID'];
                $naziv = $proizvod['NAZIV'];
                $slika = $proizvod['SLIKA'];
                $rabat = $proizvod['POPUST'];

                if(!isset($slika) || empty($slika))
                {
                    $slika = "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/No_image_available.svg/600px-No_image_available.svg.png";
                }
                $myVar = "
                    <div class='proizvod_Box' id='$pid' onclick='IdiNaProizvod(id)'>
                        <div class='proizvod_Naslov'>
                            <p>$naziv</p>
                        </div>
                        <div class='proizvod_Slika'>
                            <img src='$slika'>
                        </div>
                    </div>
                ";
            }
        }
    ?>

Then include the php file on top of the page where you will use the javascript:

<?php echo include_once '../Php/Proizvodi/_Akcija.php';?>

<!-- Your javascript here below -->

After that, just echo the variable you defined on the file and the code should look like this:

<?php echo include_once '../Php/Proizvodi/_Akcija.php';?>
<script>
 switch(test){
  case "_Akcija":
    document.getElementById('rightBox').innerHTML = "<?php echo $myVar; ?>";
    break;
  default:
    break;
}
</script>

That should do the trick.

Norielle Cruz
  • 170
  • 5
  • 14
  • I do not want to include only var. I want whole file to include. My whole file is dipslaying creating and dsiplaying part of page – Pacijent Aug 14 '18 at 07:00
  • You can include the whole content to the variable and just use the method on my answer, including too many php files is not really a good habbit and you should learn to organize your files properly. You can do it like this: $myVar = ""; $myVar .= "Content1"; $myVar .= "Content2"; Then you can use that variable to print all the contents you need. – Norielle Cruz Aug 14 '18 at 07:02