[Javascript] Mouseover

Vera

Utente Attivo
3 Giu 2014
76
1
8
Buongiorno,
in un mio script (php) ho questa riga:

<td><div align="right"><?php echo $nrclienti;?></div></td>

chi mi aiuta a capire (mi postate anche un aiuto... grazie) come faccio a far partire la funzione mousever quando con il mouse passo sopra al dato sopra riportato. O meglio, al passaggio del mouse dovrei far partire la funzione mouseover facendomi visualizzare il dettaglio dei dati relativi al $nrclienti. Credo che sia il tutto fattibile richiamando un javascript dove al suo interno si sia la chiamata ad un php per la lettura del db per l'estrazione del dettaglio. Come gestisco il mouseover???
Grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, utilizzi gli eventi onmouseover e onmouseout sul div
HTML:
<div onmouseover="dettaglio()" onmouseout="chiudiDettaglio()"
nella head della pagina definisci le due funzioni e il codice da eseguire
Codice:
<script>
            function dettaglio() {
                // codice per mostrare il dettaglio
            }
            function chiudiDettaglio() {
                // codice per chiiudere
            }
        </script>
 

Vera

Utente Attivo
3 Giu 2014
76
1
8
Grazie per il tuo aiuto,
ho provato, ma incontro difficoltà nel capire come scrivere il restante codice per poter visualizzare i dati (dati che vorrei visualizzare in un piccolo riquadro di colore giallo come sfondo).

Attualmente il codice php (con in testa il relativo script é il seguente (tralasciando la testa della tabella):

Codice:
<script>
// codice per mostrare il dettaglio
function dettaglio1()
{
      // Qui dentro dovrei richiamare il php che legge dal relativo database e costruisce l'array dei dati da visualizzare (**)               
}
// codice per chiudere il dettaglio
function chiudiDettaglio1() {
               
}
</script>

// Riga della tabella dove posizioni il mouse:
PHP:
for($a = 0; $a < 5; $a++)   
{
echo"<td><DIV align='left'>---</DIV></td>
           <td><DIV align='left' onmouseover='dettaglio()' onmouseout='chiudiDettaglio()'>".number_format($importo, 0,",",".")."</DIV></td>
}

il php che si occupa del caricamento dell'array é circa cosi strutturato:

PHP:
$cdclie = $_GET['cdclie'];
// Stringa SQL per estrazione dei dati
$sql001 = "SELECT IMNETTO
                    FROM MYLIB.FILEANAG
                    WHERE CDCLIE = '$cdclie'";

// qui carico l'array $totaImp da visualizzare
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
per interrogare una pagina php con javascript devi utilizzare ajax
puoi scaricarti una versione di jquery per semplificare il codice da scrivere
in alternativa puoi richiamare l'ultima versione direttamente dal sito ufficale
Codice:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
la sintassi per la chiamata ajax diventa molto semplice
Codice:
function dettaglio1(cdclie) {
                // Qui dentro dovrei richiamare il php che legge dal relativo database e costruisce l'array dei dati da visualizzare (**)    
                $.get("dettaglio.php", {cdclie: cdclie}, function (response) {
                    alert(response);
                });
            }
il codice cliente lo passi come parametro quindi devi aggiungerlo quando richiami la funzione
PHP:
onmouseover='dettaglio1(<?php echo $cdclie;?>)'
nella variabile javascript "response" avrai tutto l'output che genera la pagina php richiamata
 

Vera

Utente Attivo
3 Giu 2014
76
1
8
Ciao e grazie per il tuo prezioso aiuto.
Ti vorrei postare la parte del progetto finalizzato al mio obiettivo cosi da essere più chiara. Quando lo proverai per testarlo vedrai comparire nella tabella creata, in basso a sinistra il riquadro di colore giallo (contenitore) dove vorrei che apparisse la lista dei clienti.

Codice:
<script type="text/javascript">
var table = null;
$(document).ready(function() {
    var h_finestra = $(window).height();
    var h_menu = $('#menu_top').height();
    var margin = $('#Quadro_Lazio').css('margin-top').replace('px','');
    var h_thead = $('#Quadro_Lazio thead').height();
    var h_tfoot = $('#Quadro_Lazio tfoot').height();
   
    var h = parseInt(h_finestra)-parseInt(h_menu)-parseInt(margin)-parseInt(h_thead)-parseInt(h_tfoot)-70;
    table = $('#tabella').html();
   
    $('#Quadro_Lazio').tScroll({
                    h_box: h+'px'
    });
       
});
</script>

<script>
// codice per mostrare il dettaglio
function dettaglio()
{
    tooltip = '<div class="tooltiptopicevent" style="width:auto;height:auto;background:#feb811;position:absolute;z-index:10001;padding:10px 10px 10px 10px ;  line-height: 200%;">'
            + 'Cliente' + ' ' + 'Ragione sociale' + '</div>';

            $("body").append(tooltip);
            $(this).mouseover(function (e)
            {
                $(this).css('z-index', 10000);
                $('.tooltiptopicevent').fadeIn('500');
                $('.tooltiptopicevent').fadeTo('10', 1.9);
            }).mousemove(function (e)
            {
                $('.tooltiptopicevent').css('top', e.pageY + 10);
                $('.tooltiptopicevent').css('left', e.pageX + 20);
            });
}
// codice per chiudere il dettaglio
function chiudiDettaglio()
{
    $(this).css('z-index', 8);
    $('.tooltiptopicevent').remove();
}
</script>

<fieldset class="corpo">
<legend>Vendite 2016</legend>
<table border="0" width="100%" id='quadroLazio'>
<tr>

<td valign="top">
<div  align="center" id='tabella'>
<table border='0' id="Quadro_Lazio" class='sortable' cellpadding='1' cellspacing='0'>
    <thead>
           <tr><th colspan="2"><div align='center'>Vendita Clienti</div></th>
               <th colspan="5"><div align='center'>Vendita ROMA e provincia</div></th></tr>
           
           <tr><th><div align='center'>Cliente</div></th>
               <th><div align='center'>Totale Generale</div></th>
               <th><div align='center'>Materie prime</div></th>
               <th><div align='center'>Plastica</div></th>
               <th><div align='center'>Termoindurenti</div></th>
               <th><div align='center'>Semilavorato</div></th>
               <th><div align='center'>Altro</div></th></tr>
    </thead>

   <tbody>
   
<?php   
// Ciclo for per la lettura array 
for($a = 0; $a < count(array_vendite); $a++)   
{
?>   
<tr><td><DIV align='center' onmouseover='dettaglio(<?php echo $cdclie;?>)' onmouseout='chiudiDettaglio()'>0</DIV></td>
    <td><DIV align='right'>0</DIV></td>
    <td><DIV align='right'>0</DIV></td>
    <td><DIV align='right'>0</DIV></td>
    <td><DIV align='right'>0</DIV></td>
    <td><DIV align='right'>0</DIV></td>
    <td><DIV align='right'>0</DIV></td></tr>
<?php                       
}                 
?>
</tbody>
</table>
</div>
</td>
</tr>
</fieldset>

In questo nuovo php non faccio altro che caricarmi l'array dal database con l'SQL e poi"spalmarlo in un nuovo array
per la json_encode

PHP:
<?php

// Qui mi carico l'array $array_Clienti con l'elenco dei clienti che non posto per semplicità
// SQL.......
// ..........

$count = 0;

// Rileggo l'array caricato
for($k=0; $k<sizeof($array_Clienti); $k++)
{
    $count = $count +=1;
    $cdcli = $array_Clienti[$k]['CDCLI'];
    $rascl = $array_Clienti[$k]['RASCL'];
                 
    $space = ' - ';               
                 
    $array01[$w] = array(
    'id' => "$count",
    'title' => "$cdclie $space $rascl $space",
    'allDay' => false);
                               
    $w++;
}
echo json_encode($array01); 
?>

Dimenticavo... tra le altre cose tale riquadro che compare di colore giallo, non lo vorrei in basso a sinistra ma aperto accanto ad ogni codice cliente con il passaggio del mouse. Per concludere ti dico che la chiusura del mouseover funziona perfettamente.

Spero che avrai pazienza a spiegarmi come raggiungere il mio obiettivo.
Grazie 10000000 e buona serata.
Vera
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
io proverei qualcosa di piu semplice : estrai i clienti con i dettagli con una sola query, nel ciclo nascondi i dettagli di ognuno in un div nascosto con display:hidden nella propria riga e nelle funzioni javascript non fai altro che cambiare la proprietà css. appena riesco ti posto un esempio
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
eccolo
Codice:
<html>
    <head>
        <title>tooltip</title>
        <style>
            #quadroLazio {
                border-collapse: collapse;
            }
            #quadroLazio td {
                padding:6px;
                border:1px solid #777;
                text-align: center;
            }
            .dettaglio {
                display: none;
                position: absolute;
                background-color: #feb811;
                border: 1px solid #CCC;
                margin: 2px 0;
                padding: 10px;

            }
            .cdclie:hover .dettaglio {
                display: block;
            }
        </style>
    </head>
    <body>
        <table border="0" width="100%" id='quadroLazio'>
            <thead>
                <tr>
                    <th colspan="2">Vendita Clienti</th>
                    <th colspan="5">Vendita ROMA e provincia</th>
                </tr>
                <tr>
                    <th>Cliente</th>
                    <th>Totale Generale</th>
                    <th>Materie prime</th>
                    <th>Plastica</th>
                    <th>Termoindurenti</th>
                    <th>Semilavorato</th>
                    <th>Altro</th>
                </tr>
            </thead>
            <tbody>
                <?php
                // simulazione dei dati di una query
                $array_vendite = array(
                    array(
                        "cdclie" => 300,
                        "dettaglio" => "dettaglio primo cliente"
                    ),
                    array(
                        "cdclie" => 301,
                        "dettaglio" => "dettaglio secondo cliente"
                    )
                );
                foreach ($array_vendite as $cliente) {
                    ?>
                    <tr>
                        <td class="cdclie"><?php echo $cliente['cdclie']; ?><span class="dettaglio"><?php echo $cliente['dettaglio']; ?></span></td>
                        <td>0</td>
                        <td>0</td>
                        <td>0</td>
                        <td>0</td>
                        <td>0</td>
                        <td>0</td>
                    </tr>
                    <?php
                }
                ?>
            </tbody>
        </table>
    </body>
</html>
ti ho ripulito un po il codice html : non ha senso inserire dei div all'interno delle td.
In questo modo non ti serve nemmeno javascript fai tutto con i css
 

Vera

Utente Attivo
3 Giu 2014
76
1
8
Sempre grazie per ogni tuo consiglio. Ma quando mi posizioni su ogni singolo cliente non ho quell'effetto del mouseover ( e a me serve quel tipo di visualizzazione, mi éstato richiesto cosi.). Cioé passando su ogni singolo cliente devo avere l'effetto dell'apertura di un riquadro con all'interno le informazioni di vendita.

Grazie .
Vera
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
intendi l'effetto a discesa ? puoi postare un immagine per capire ?
 

Vera

Utente Attivo
3 Giu 2014
76
1
8
Ciao Criric,
postami il tuo indirizzo email cosi da poterti mandare sia l'immagine finale che il mini progetto a cui sto lavorando.
Grazie
 

Vera

Utente Attivo
3 Giu 2014
76
1
8
Ciao e scusami se ti rispondo in ritardo ma ho risolto. Se vuoi di invio le righe di codice della soluzione.
GRazie ancora per la tua disponibilità.
Vera
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
postale qui. potrebbe servire ad altri
 

Vera

Utente Attivo
3 Giu 2014
76
1
8
Questo é lo script con il CSS:

Codice:
<script type="text/javascript">
$('tr').tooltip({
    position: { my: "left+15 center", at: "right center" },
    track: true,
    content: function () {
        return $(this).prop('title');
    }
});
</script>

<style type="text/css">
.ui-tooltip, .arrow:after{
    background: yellow;
    color: blue;
    z-index: 999;
    display: none;
    position: absolute;
}
</style>

e questa é la riga HTML:
<tr><td title='<?php echo $clienti[$a]['RASCL'];?></br><?php echo 'Seconda riga';?>'><DIV class="codiceCliente" align='center'><?php echo $clienti[$a]['CDCLI'];?></DIV></td>

Grazie per il tuo aiuto e scusami per il ritardo in quest'ultimo post ma ero in vacanze.......
A presto
Vera
 
  • Like
Reactions: criric
Discussioni simili
Autore Titolo Forum Risposte Data
Marco_88 Funzione mouseover Javascript jQuery 3
lsnight Implementare javascript mouseover con codice php Javascript 2
I Creare un banner temporaneo JavaScript Javascript 0
S Impossibile scorrere un oggetto in JavaScript Javascript 0
N Passare array da php a javascript PHP 5
L Quiz javascript funzionante da migliorare Javascript 0
P errore 404 con javascript Javascript 2
D aiuto funzioni javascript Javascript 1
M Upload immagine con javascript problemi con FormData() Javascript 1
L countdown multiplo javascript Javascript 1
S Problemi Javascript + Aruba Javascript 2
M Inviare un file su un server remoto con JavaScript Javascript 0
T a href="javascript:;" Javascript 1
F Creare elementi html con javascript Javascript 3
A pulsante di update campo mysql con javascript Javascript 2
8 Javascript - PDF Form Javascript 0
B javascript per problemi con pdf e Safari Javascript 0
N informazione javascript Programmazione 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
P javascript:document.forms Javascript 7
S Consiglio esercizio Javascript Javascript 2
MarcoGrazia Aggiungere o rimuovere classi in javascript Javascript 1
P Passaggio id php a javascript PHP 6
R Confrontare il dominio di una mail con una stringa contenente un dominio personalizzato, tutto ciò in php o javascript PHP 0
E lettura da un Database con Javascript jQuery 2
V TRIS in javascript Javascript 1
IClaude Funzione Javascript Javascript 8
Alex_70 Javascript date color Javascript 3
F Convertire JavaScript per la compatibilità nei browser obsoleti Javascript 0
I Passare dei parametri in javascript PHP 0
Shyson Meglio Javascript o HTML? Javascript 4
G Problema verifica palindromo e verifica pari e dispari javascript Javascript 0
M Chiamare pagina php da javascript Javascript 8
M Errore JavaScript per php [objeto HTMLParagraphElement] PHP 0
D Javascript per il download dei dati Javascript 0
grgfede Problema javascript con aruba Javascript 1
R Cerco supporto in programmazione javascript Offerte e Richieste di Lavoro e/o Collaborazione 0
webmachine [PHP] [JAVASCRIPT] Form strano in HTML PHP PHP 1
W Modificare il Type di un Input box in javascript ovunque si trovi Javascript 0
I javascript come caricare una pagina sopra quella corrente in automatico Javascript 2
L [Javascript] Problema salvataggio dati in db Javascript 1
max1974 [Javascript] Grafico chartjs con dati da J.ajax Javascript 3
G Quiz Javascript Javascript 4
A [Javascript] Scrittura su più campi contemporaneamente Javascript 18
F classic asp popolare combo box javascript Presentati al Forum 1
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
F [Javascript] comando innerHTML non funziona Javascript 5
alexice51 proggrammi per scrivere in javascript? Javascript 3
max1974 [Javascript] Accordion aria-exspanded Javascript 0
D [Javascript] salvare immagine canvas - paypal Javascript 0

Discussioni simili