Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    12

    uscire da un while per javascript

    mysql_select_db('database');

    $result=mysql_query($sql);

    print "<table border > ....";
    while ($riga = mysql_fetch_row($result))

    {

    //scrivo i valori dentro le celle create

    print "<tr><td>$riga[0]<td>$riga[1]<td>$riga[2]<td>$link";
    print "<td><script type=text/javascript>star($riga[5])/n;</script></tr>";
    }
    print "</table>";


    nel richiamare il javascript me lo fa solo per la prima riga


    lo script e il css sono questi:

    <style type="text/css">
    #STAR_RATING ul
    {
    margin: 0px;
    padding: 0px;
    height: 16px;
    list-style: none;
    }
    #STAR_RATING li
    {
    width: 19px;
    height: 16px;
    display: block;
    float: left;
    background-image: url('star-off.gif');
    background-repeat: no-repeat;
    cursor: pointer;
    }
    #STAR_RATING li.on
    {
    background-image: url('star-on.gif');
    }
    #STAR_RATING span.output
    {
    padding: 3px;
    color: #339900;
    font-weight: bold;
    }
    </style>
    <script type="text/javascript">
    // faccio il preload dell'immagine utilizzata per l'effetto rollover
    var staron = new Image(); staron.src = "star-on.gif";

    // Definisco la funzione per la votazione che verrà lanciata
    // all'evento onclick su una delle 5 stelle
    function star_vota(QT)
    {
    // Creo una variabile con l'output da restituire al momento del voto
    var star_output = '<span class="output">Hai votato ' + QT + ' stelle!</span>';
    // Cambio dinamicamente il contenuto del DIV contenitore con il messaggio di
    // conferma di votazione avvenuta
    document.getElementById('STAR_RATING').innerHTML = star_output;
    }

    // Definisco la funzione per "accendere" dinamicamente le stelle
    // unico argomento è il numero di stelle da accendere
    function star_accendi(QT)
    {
    // verifico che esistano i DIV delle stelle
    // se il DIV non esiste significa che si è già votato
    if (document.getElementById('star_1'))
    {
    // Ciclo tutte e 5 i DIV contenenti le stelle
    for (i=1; i<=5; i++)
    {
    // se il div è minore o uguale del numero di stelle da accendere
    // imposto dinamicamente la classe su "on"
    if (i<=QT) document.getElementById('star_' + i).className = 'on';
    // in caso contrario spengo la stella...
    else document.getElementById('star_' + i).className = '';
    }
    }
    }

    // Questa è la funzione che produce l'output.
    // richiede come unico argomento il numero di stelle che si vuole accendere
    // di default (possiamo in questo, ad esempio, modo mostrare il voto ottenuto
    // nelle precedenti votazioni)
    function star(QT)
    {
    // stampo il codice HTML che produce le stelle
    document.write('<div id="STAR_RATING" onmouseout="star_accendi(' + QT + ')""><ul>');
    document.write('<li id="star_1" onclick="star_vota(1)" onmouseover="star_accendi(0); star_accendi(1)">');
    document.write('<li id="star_2" onclick="star_vota(2)" onmouseover="star_accendi(0); star_accendi(2)">');
    document.write('<li id="star_3" onclick="star_vota(3)" onmouseover="star_accendi(0); star_accendi(3)">');
    document.write('<li id="star_4" onclick="star_vota(4)" onmouseover="star_accendi(0); star_accendi(4)">');
    document.write('<li id="star_5" onclick="star_vota(5)" onmouseover="star_accendi(0); star_accendi(5)">');
    document.write('[/list]</div>');
    // accendo le stelle definite in argomento
    star_accendi(QT);
    }
    </script>

  2. #2

    Re: uscire da un while per javascript

    ciao,
    io non ho capito una mazza di cosa è che ti da problemi..
    cosa vuol dire:
    Originariamente inviato da rebetico

    nel richiamare il javascript me lo fa solo per la prima riga
    spiegati un po' meglio, cosa è che ti fa solo una volta???

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    12
    faccio quel while per scrivere le varie righe di una query

    e dentro il while scrivo la riga

    nello scrivere la riga ci metto dentro uno script che dovrebbe mostrarmi delle stelle in base a un parametro contenuto nella query (in pratica gli passo 5 e lui dovrebbe mettermi cinque stelle)...

    sto while in effetti lo fa ma solamente per la prima riga
    (mi sembra ad occhio,visto che c'è un ritardo, che lo faccia per tutti ma mette le stelle solo sulla prima riga)

  4. #4

    attento alle virgolette

    non ho testato il tuo codice,ma ad occhio non vedo le virgolette in
    Codice PHP:
    print "<tr><td>$riga[0]<td>[b]$riga[1][/b]<td>$riga[2]<td>$link";
    print 
    "<td><script type=text/javascript>star($riga[5])/n;</script></tr>"
    e poi in javascript quello /n non va o andrebbe dentro la parentesi volendo richiamare star
    con $riga[5]:n

    poi controlla il codice generato(firebug) e vedi effettivamente cosa produce il server,infine prova la pagina con IE che in basso a sinistra da un triangolino giallo se c'è errore di sintassi

  5. #5
    *inoltre io chiuderei i <td>

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    12
    come si fa a controllare il codice generato?(firebug)?


    tolti i /n e anche con virgolette il risultato non cambia

  7. #7

    Uscita dal while

    il problema è che dici che php esce dal while per colpa d javascript:

    Php scrive una pagina web ...quando ha finito stacca e se ne va a casa

    tutto quello che accade dopo è sintassi javascript
    analizza il codice sorgente generato dal server(puoi usare firebug su firefox) o semplicemente
    guardare l'origine html(sorgente pagina) e vedere se php effettivamente stampa n volte quello che ti aspetti

    spero che l'input ti sia di aiuto altrimenti pm che continuiamo via email

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mi pare di capire che pensi come se il codice php e javascript fosse interpretato tutto di seguito... quindi quando "dentro" il php scrivi il codice js pensi sia eseguito, ma non è così... il php viene elaborato e genera un documento html+js che alla fine viene passato al browser e a sua volta interpretato

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.