Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Inserire variabile php in javascript

    Salve, volevo chiedervi un consiglio per un problema con le variabili
    Ho uno script in javascript per creare un menu a tendina; posto le prime righe dello script:

    <script type="text/javascript">

    //Contents for menu 1
    var menu1=new Array()
    menu1[0]='parola1'
    menu1[1]='parola2'
    menu1[2]='parola3'
    ecc. ecc.

    Al posto di parola1, parola2, parola3 devo inserire delle variabili php e ho modificato il codice come di seguito:

    menu1[0]='<?php echo "$t1"; ?>'
    menu1[1]='<?php echo '$t2'; ?>'
    menu1[2]='<?php echo $t3; ?>'

    $t1, $t2, $t3 sono le variabili da inserire.
    Ho scritto tre voci, tre modi differenti con cui ho provato ad inserire la variabile php all'interno di javascript ma, purtroppo non funziona.
    Mi sapete dire dove sbaglio?
    Grazie mille.
    M.

  2. #2
    t3 sembra la versione corretta. Quel codice sta in una pagina .php vero?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  3. #3
    Purtroppo non funziona.
    Ecco il codice come mi hai detto tu ma non va!!

    menu1[0]='<?php echo $t1; ?>'
    menu1[1]='<?php echo $t5; ?>'
    menu1[2]='<?php echo $t6; ?>'

    In realtà avevo già provato ma non so come risolvere.

  4. #4
    Si puo' vedere tutto il codice della pagina? Usa il tag code per favore.
    E ripeto la mia domanda: quel codice che hai messo, e' in una pagina .php?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    Scusami ma non sono molto afferrata in materia.
    Rispondo subito.
    Il file è un php, estensione.php.
    Non so cosa significa usare il tag code, mi dispiace tanto
    Postare il codice dell'intero file è molto lungo e complesso, se è necessario lo faccio.
    Per il momento posto tutto lo script in javascript.
    Prima di questo script ci sono le istruzioni in php che mi settano le variabili utilizzate.
    Se al posto delle variabili php tipo <?php echo $t1; ?> metto Mariastella, il menù a tendina funziona benissimo, se invece inserisco le variabile di php, il menù non funziona.
    Fammi sapere se basta il codice che ho postato e scusami ancora.
    Ms.

    <script type="text/javascript">

    //Contents for menu 1
    var menu1=new Array()
    menu1[0]='<?php echo $t1; ?>'
    menu1[1]='<?php echo $t5; ?>'
    menu1[2]='<?php echo $t6; ?>'
    menu1[3]='<?php echo $t7; ?>'
    menu1[4]='<?php echo $t1; ?>'
    menu1[5]='<?php echo $t15; ?>'



    //Contents for menu 2, and so on
    var menu2=new Array()
    menu2[0]='<?php echo $t8; ?>'
    menu2[1]='<?php echo $t9; ?>'
    menu2[2]='<?php echo $t10; ?>'


    var menu3=new Array()
    menu3[0]='<?php echo $t12; ?>'
    menu3[1]='<?php echo $t14; ?>'
    menu3[2]='<?php echo $t17; ?>'
    menu3[3]='<?php echo $t11; ?>'
    menu3[4]='<?php echo $t13; ?>'


    var menuwidth='165px' //default menu width
    var menubgcolor='lightyellow' //menu bgcolor
    var disappeardelay=250 //menu disappear speed onMouseout (in miliseconds)
    var hidemenu_onclick="no" //hide menu when user clicks within menu?

    /////No further editting needed

    var ie4=document.all
    var ns6=document.getElementById&&!document.all

    if (ie4||ns6)
    document.write('<div id="dropmenudiv" style="visibility:hidden;width:'+menuwidth+';backg round-color:'+menubgcolor+'" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>')

    function getposOffset(what, offsettype){
    var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
    var parentEl=what.offsetParent;
    while (parentEl!=null){
    totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
    parentEl=parentEl.offsetParent;
    }
    return totaloffset;
    }

    function showhide(obj, e, visible, hidden, menuwidth){
    if (ie4||ns6)
    dropmenuobj.style.left=dropmenuobj.style.top=-500
    if (menuwidth!=""){
    dropmenuobj.widthobj=dropmenuobj.style
    dropmenuobj.widthobj.width=menuwidth
    }
    if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
    obj.visibility=visible
    else if (e.type=="click")
    obj.visibility=hidden
    }

    function iecompattest(){
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
    }

    function clearbrowseredge(obj, whichedge){
    var edgeoffset=0
    if (whichedge=="rightedge"){
    var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWid th-15 : window.pageXOffset+window.innerWidth-15
    dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
    if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
    edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
    }
    else{
    var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset
    var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeig ht-15 : window.pageYOffset+window.innerHeight-18
    dropmenuobj.contentmeasure=dropmenuobj.offsetHeigh t
    if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move up?
    edgeoffset=dropmenuobj.contentmeasure+obj.offsetHe ight
    if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
    edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
    }
    }
    return edgeoffset
    }

    function populatemenu(what){
    if (ie4||ns6)
    dropmenuobj.innerHTML=what.join("")
    }

    function dropdownmenu(obj, e, menucontents, menuwidth){
    if (window.event) event.cancelBubble=true
    else if (e.stopPropagation) e.stopPropagation()
    clearhidemenu()
    dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv
    populatemenu(menucontents)

    if (ie4||ns6){
    showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)
    dropmenuobj.x=getposOffset(obj, "left")
    dropmenuobj.y=getposOffset(obj, "top")
    dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
    dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
    }

    return clickreturnvalue()
    }

    function clickreturnvalue(){
    if (ie4||ns6) return false
    else return true
    }

    function contains_ns6(a, b) {
    while (b.parentNode)
    if ((b = b.parentNode) == a)
    return true;
    return false;
    }

    function dynamichide(e){
    if (ie4&&!dropmenuobj.contains(e.toElement))
    delayhidemenu()
    else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
    delayhidemenu()
    }

    function hidemenu(e){
    if (typeof dropmenuobj!="undefined"){
    if (ie4||ns6)
    dropmenuobj.style.visibility="hidden"
    }
    }

    function delayhidemenu(){
    if (ie4||ns6)
    delayhide=setTimeout("hidemenu()",disappeardelay)
    }

    function clearhidemenu(){
    if (typeof delayhide!="undefined")
    clearTimeout(delayhide)
    }

    if (hidemenu_onclick=="yes")
    document.onclick=hidemenu

    </script>

  6. #6
    Originariamente inviato da Mariastella1975

    Se al posto delle variabili php tipo <?php echo $t1; ?> metto Mariastella, il menù a tendina funziona benissimo, se invece inserisco le variabile di php, il menù non funziona.
    beh è abbastanza ovvio: dipende dal php, cioè da cosa quelle variabili stampano.
    Siccome è quando metti php che "non funziona" (anche qui toccherebbe vedere cosa si intende con non funziona perchè è una espressione molto generica più utile sarebbe sapere cosa non funziona, ma al momento tralasciamo), devi concentrarti sul php e non sul javascript.

    In altre parole a te 8e noi) serve vedere cosa stampa una espressione semplice come

    echo "$t3, $t4, $t5";

    cioè basta che non appena quelle variabili sono prodotte da php tu le stampi per vedere cosa esce. da lì si può capire cosa "non funziona".

    Può darsi che $t3 non stampi nulla, magari è inizializzata male. O può darsi che stampi degli apici o dei caratteri che non ci dovrebbero stare, ad esempio dei caratteri di escape.

  7. #7
    Le variabili "$t3, $t4, $t5" stampano parole senza caratteri strani o accenti tipo: collegamenti marittimi, preventivi e altro, dette parole vengono inserite nelle variabili in diverse lingue (italiano, francese, tedesco, ecc), settate e mostrate nel menu a tendina in javascript in base alla lingua scelta, purtroppo non funzionava.
    Ho risolto aprendo e chiudendo i tag di php; posto una prima parte del codice:

    <?php
    switch ($lingua)
    {
    case 'italiano':
    ?>
    menu1[0]='Dove siamo'
    menu1[1]='Mappe autostradali'
    menu1[2]='Collegamenti marittimi'
    menu1[3]='Trasporto isolano'
    menu1[5]='Calcola il tragitto'
    <?php
    break;
    case 'inglese':
    ?>
    menu1[0]='Where we are'
    menu1[1]='Highway maps'
    menu1[2]='Sea transportations'
    menu1[3]='Inland transportation'
    menu1[5]='Get directions'
    <?php
    break;
    ecc. ecc......

    Come si puo vedere viene controllata la lingua scelta ed impostata nella variabile $lingua, a seconda del contenuto mi viene mostrato il menù adatto.
    Ho evitato le variabili, ho inserito le traduzioni direttamente nelle loro lingue ma, così facendo, ho raggirato il problema.
    Adesso funziona una meraviglia.
    Grazie comunque a tutti.
    Ms.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.