开发者

php and javascript

hello i have a problem that's maybe difficult to descripe,

i have an application, that simulates a pizza store. i have a page "bestellungen" ("orders") in which i have some javascript.(the head,javascript and body i declare in page.php, from which the other ("sub")pages "extends".

right now, everything works, but now, i want to add to the javascript some php code. (in the "main" page.

in the page "bestellungen" ("orders") i read from the database

$sql="Select * FROM pizzen_arten";
        $data=$this->_database->query($sql);    //alle daten in data gespeichert


        while($reihe = $data->fetch_array()){   

            $lfdnr=$reihe[2];                       
            $this->pizza_name[$lfdnr]   =$reihe[0];
            $this->pizza_preis[$lfdnr]  =$reihe[1];
            $this->pizza_id[$lfdnr] =$reihe[2];

        }

then in the same page i add all pizzas

foreach ($this->pizza_id as $tmp)   //alle pizzen durchgehen über id, (id in tmp speichern)
{
//echo " überall wo " ist ein \ davor
    echo "<img src=\"pizzen/pizza-".$this->pizza_name[$tmp].".png\" width=\"50\" height=\"50\" alt=\"Pizza ".$this->pizza_name[$tmp]."\" id=\"".$this->pizza_name[$tmp]."\" onclick=\"hinzu('".$this->pizza_name[$tmp]."')\" /> ".$this->pizza_name[$tmp]." ".$this->pizza_preis[$tmp]." &euro;"; 
    echo "<p/>";                                                                                                                                //vor variable " string beenden . für "+" dann var, dann string weiter
        //this das aktuelle obj, der schleife,  davon pizzaname (ist ein array! kein attribut), an der stelle tmp
}

the method "hinzu(id)" is declared in "page.php"

function hinzu (pizza)
{

    NeuerEintrag = new Option(pizza, pizza, false, false);
    document.getElementById("warenkorbfeld").options[document.getElementById("warenkorbfeld").length] = NeuerEintrag ;

ETO;



    foreach ($this->pizza_id as $tmp)
    {

        if ($this->pizza_name[tmp]==pizza)  //array durchgehen gucken, wann der übergabe parameter ==einem pizzanamen
            echo "gesamtbetrag=gesamtbetrag"+$this->pizza_preis[$tmp];
    }

    /*if (pizza=="Margherita")
    {
        gesamtbetrag = gesamtbetrag + 4;
    }

    if (pizza=="Salami")
    {
        gesamtbetrag = gesamtbetrag + 4.50;
    }

    if (pizza=="Hawaii")
    {
        gesamtbetrag = gesamtbetrag + 5.50;
    }*/

    echo <<< ETO

    document.开发者_运维问答getElementById('gesamtbetrag').innerHTML=gesamtbetrag ;

}

at first the method was without php-code, now by using php-code it doesn't work.

i suggest there might be a problem with "$this" or "pizza" but i'm not quite sure wether i implemented the php code right.

thanks in advance


You can't simply mixup JavaScript and PHP code Like this. JavaScript Code is executed in the Users Browser and the PHP code is executed on your server. So you have to make clear which code is to be executed on you server. In PHP you do this with the PHP Tags <?php & ?>:

function hinzu(pizza) {
  NeuerEintrag = new Option(pizza, pizza, false, false);
  document.getElementById("warenkorbfeld").options[document.getElementById("warenkorbfeld").length] = NeuerEintrag ;
  <?php foreach ($this->pizza_id as $tmp): ?>
    gesamtbetrag=gesamtbetrag + <?php= $this->pizza_preis[$tmp] ?>;
  <?php endforeach; ?>
  document.getElementById('gesamtbetrag').innerHTML = gesamtbetrag;
}

or if I'm interpreting your heredoc strings correctly:

echo <<<ETO
  function hinzu(pizza) {
    NeuerEintrag = new Option(pizza, pizza, false, false);
    document.getElementById("warenkorbfeld").options[document.getElementById("warenkorbfeld").length] = NeuerEintrag ;
ETO;
foreach ($this->pizza_id as $tmp) {
  echo "gesamtbetrag=gesamtbetrag+" . $this=>pizza_preis[$tmp];
  // The important differnces:   ^  ^ 
}
echo <<<ETO
  document.getElementById('gesamtbetrag').innerHTML = gesamtbetrag;
}
ETO;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜