Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    241

    [JS][PHP][MySql] L'immagine non cambia più col puntatore del mouse

    Ho un problema, e credo dipenda dal fatto che sto mischiando php e javascript! Ho costruito una barra di navigazione con due immagini per ogni pulsante (uno se il puntatore è sopra, e l'altro se non è... rollover mi sembra d'aver capito che si chiami questo meccanismo). Quindi ho inserito questo codice in ogni cella per ogni pulsante:
    <a href='#' onMouseOver=MM_swapImage('la_rosa','','index_file/rosa_on.gif',1) onMouseOut=MM_swapImgRestore()>
    [img]index_file/rosa_off.gif[/img]</a>
    e tutto funziona alla perfezione, cioè quando il puntatore del mouse incontra un pulsante questo cambia aspetto. Ora per snellire il codice ho provato a inserire una tabella nel mio database in cui riporto il nome del pulsante, il percorso della prima immagine, e il percorso della seconda immagine. Quindi con una query e un ciclo for al cui interno ho proposto l'istruzione fatidica per una sola volta con le variabili dovute, ma a differenza di prima tutto questo è nel codice php. Verifico, non mi da nessun errore, la visualizzazione è corretta, solamente non mi cambia più l'immagine se col puntatore passo sopra ai pulsanti della barra di navigazione!



    <html>
    <head>
    <?
    include('modulo.php');
    ?>
    </head>
    <body>
    <table>
    <tr>
    <?
    $dbms=mysql_connect("localhost","root","********") ;
    $db=mysql_select_db("Sql00000_0") or die("Impossibile connettersi al database Sql00000_0");
    $menu=mysql_db_query("Sql00000_0","select * from nav_bar where percorso_off is not null");
    $num=mysql_num_rows($menu);
    for ($i=0; $i<$num; $i++)
    {
    $nome_puls=mysql_result($menu,$i,"nome_pulsante");
    $perc_off=mysql_result($menu,$i,"percorso_off");
    $perc_on=mysql_result($menu,$i,"percorso_on");
    echo "<td><img class=navbar src=$perc_off name=$nome_puls /></td>";
    }
    mysql_close($dbms);
    ?>
    </tr>
    </table>
    </body>
    </html>





    <script language="JavaScript">
    <!--

    function MM_findObj(n,d) { //v4.01
    var p,i,x;
    if (!d)
    d=document;
    if ((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document;
    n=n.substring(0,p);
    }
    if (!(x=d[n])&&d.all)
    x=d.all[n];
    for (i=0;!x&&i<d.forms.length;i++)
    x=d.forms[i][n];
    for (i=0;!x&&d.layers&&i<d.layers.length;i++)
    x=MM_findObj(n,d.layers[i].document);
    if (!x && d.getElementById)
    x=d.getElementById(n);
    return x;
    }

    function MM_swapImage() { //v3.0
    var i,j=0,x,a=MM_swapImage.arguments;
    document.MM_sr=new Array;
    for (i=0;i<(a.length-2);i+=3)
    if ((x=MM_findObj(a[i]))!=null) {
    document.MM_sr[j++]=x;
    if (!x.oSrc)
    x.oSrc=x.src;
    x.src=a[i+2];
    }
    }

    function MM_swapImgRestore() { //v3.0
    var i,x,a=document.MM_sr;
    for (i=0; a && i<a. length && (x=a[i]) && x.oSrc; i++)
    x.src=x.oSrc;
    }

    function MM_preloadImages() { //v3.0
    var d=document;
    if (d.images) {
    if (!d.MM_p)
    d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
    for (i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0) {
    d.MM_p[j]=new Image;
    d.MM_p[j++].src=a[i];
    }
    }
    }

    // -->
    </script>

  2. #2
    al primo sguardo mi pare che machi una parentesi (la prima) nella scrittura della funzione Swap image nella prima pagina, e cmq dovresti veder bene come usare gli apici quando usi echo e le variabili: puo darsi che fai scrivere al motore php il nome della vriabile piuttosto che il suo contenuto... cmq nn so come funzionano queste cose in php perchè vengo da ASP...cmq credo sia simile...
    per il problema di cui parlavi prova ad aggiungere la parentesi...e a correggere gli apici della funzione echo.(controlla l'output del php dal browser)
    Thinking is not not a sin...AngelsCrimes

  3. #3
    dimenticavo una cosa importante!
    è sempre bene, quando associ una funzione ad un evento in un tag HTML usare una qualche sorta di apice!!!
    Thinking is not not a sin...AngelsCrimes

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    241
    allora, la parentesi l'ho persa durante la trascrizione del codice in questa discussione; per quanto riguarda il problema è stato risolto proprio grazie al tuo prezioso suggerimento AngelsCrimes:

    ho aggiunto gli apici alle due variabili/parametro che richiedeva la funzione MM_swapImage è tutto è risolto

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    241
    allora, a distanza di tempo il mio sito http://www.cam77.it/spesvolley/ s'è evoluto, ma mi succede che passando col puntatore del mouse con Explorer non mi cambia immagine un pulsante: "Classifica"! Con Firefox poi addirittura nessuno! Quale potrebbe essere il motivo? posto il codice interessato:

    codice:
    function MM_findObj(n,d) { //v4.01
      var p,i,x;
      if (!d)
        d=document;
      if ((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document;
        n=n.substring(0,p);
      } 
      if (!(x=d[n])&&d.all)
        x=d.all[n];
      for (i=0;!x&&i<d.forms.length;i++)
        x=d.forms[i][n];
      for (i=0;!x&&d.layers&&i<d.layers.length;i++)
        x=MM_findObj(n,d.layers[i].document); 
      if (!x && d.getElementById)
        x=d.getElementById(n);
      return x; 
    } 
    
    function MM_swapImage() { //v3.0 
      var i,j=0,x,a=MM_swapImage.arguments;
      document.MM_sr=new Array;
      for (i=0;i<(a.length-2);i+=3)
        if ((x=MM_findObj(a[i]))!=null) {
          document.MM_sr[j++]=x;
          if (!x.oSrc)
            x.oSrc=x.src;
          x.src=a[i+2];
        } 
    } 
    
    function MM_swapImgRestore() { //v3.0
      var i,x,a=document.MM_sr;
      for (i=0; a && i<a. length && (x=a[i]) && x.oSrc; i++)
        x.src=x.oSrc;
    } 
    
    function MM_preloadImages() { //v3.0 
      var d=document;
      if (d.images) {
        if (!d.MM_p)
          d.MM_p=new Array();
        var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
        for (i=0; i<a.length; i++)
          if (a[i].indexOf("#")!=0) {
            d.MM_p[j]=new Image;
            d.MM_p[j++].src=a[i];
          }
      }
    }
    codice:
    function visual_menu($menu,$stagione) {
      foreach ($menu as $button) {
        $perc_off="images/{$button}_off.gif";
        $perc_on="images/{$button}_on.gif";
        echo "[*]<input type='image' name='$button' src='$perc_off' ";
        echo "onMouseOver=\"MM_swapImage('$button','','$perc_on',1)\" ";
        echo "onMouseOut=\"MM_swapImgRestore()\" ";
        echo "onClick=\"location.href='".$_SERVER['PHP_SELF'].
             "?scelta=$button&stagione=$stagione'\" />";
      }
    }

  6. #6
    ciao, nn so che dirti...
    ho dato una lettura veloce al codiece e un'okkiata alla pagina...
    è davvero strano...
    i pulsanti precedenti funzionano, anche i successivi, quindi nn dovrebbe essere un errore di scripting...

    l'unica cosa che mi viene in mente è che per quel pulsante lo script nn riesce a trovare l'immagine gialla corrispondente.

    per quanto riguarda firefox non so.
    ho verificato se <input type=image> è supportato dal browser e pare di si...
    Thinking is not not a sin...AngelsCrimes

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    241
    La cosa strana è che stasera ho estrapolato il menu dal resto della pagina e ora con explorer si comporta correttamente; invece con Firefox non fa il rollover. Tu hai provato a visitare il sito che ho indicato con Firefox? Magari non ho javascript abilitato, mah (e come lo potrei abilitare?)!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.