Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Ajax in un ciclo

  1. #1
    Utente di HTML.it L'avatar di Alberto
    Registrato dal
    Oct 2004
    Messaggi
    1,870

    Ajax in un ciclo

    Ho una funzione ajax per cambiare il contenuto di un div.
    Il div si trova dentro un ciclo while in php che mi tira fuori 7 righe da una tabella.
    Qunado clicco sul pulsante per richiamare la funzione, si modifica solo la prima riga, lasciando invariate le altre

    Dovrei cambiare qualcosa in php o in javascript?

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    immagino che avrai un problema con gli id
    magari vedere il codice aiuterebbe

  3. #3
    Utente di HTML.it L'avatar di Alberto
    Registrato dal
    Oct 2004
    Messaggi
    1,870
    Yes, la prima parte è questa

    <script language="javascript" type="text/javascript">
    function modo() {
    document.getElementById("cambia").innerHTML = "prova!";
    }
    </script>
    che richiamo con questo pulsante

    <input type="button" value="cambia" onClick="modo()" />
    mentre il ciclo in php è questo, la parte in rosso è quella interessata

    [quote]<?php
    include "config.php";

    $spazio = "";

    while ($row=mysql_fetch_array($select4)){ ?>
    <div class="n_squadra"><?php echo $spazio.$row['squadra']; ?></div>
    <div class="punti"><?php echo $row['punti'].$spazio; ?></div>
    <div class="vinte"><?php echo $row['vinte'].$spazio; ?></div>
    <div class="nulle"><?php echo $row['nulle'].$spazio; ?></div>
    <div class="perse"><?php echo $row['perse'].$spazio; ?></div>
    <div class="gol_f"><?php echo $row['gfatti'].$spazio; ?></div>
    <div class="gol_s"><?php echo $row['gsubiti'].$spazio; ?></div>
    <div class="diff"><?php echo $row['gdifferenza'].$spazio; ?></div>
    <div class="giocate"><?php echo $row['giocate'].$spazio; ?></div>

    <div id="cambia" class="form_ins">
    <form name="classifica" action="mod_class.php" method="post">
    <input type="hidden" name="mod_id_class" value=" echo $row['id']; " />
    <input type="submit" name="submit" value="V" />
    <input type="submit" name="submit" value="N" />
    <input type="submit" name="submit" value="P" />
    <input type="submit" name="submit" value="GF" />
    <input type="submit" name="submit" value="GS" />
    </form>
    </div>


    <?php } #chiude il ciclo while ?>

  4. #4
    while ($row=mysql_fetch_array($select4)){ ?>
    ...
    <div id="cambia" class="form_ins"> ...

    l'id di un elemento deve essere univoco, se hai più di un elemento con lo stesso id stai sbagliando output e getElementById, che accetta come parametro un identificativo univoco, prenderà uno solo, se presente, e mai più di uno
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Utente di HTML.it L'avatar di Alberto
    Registrato dal
    Oct 2004
    Messaggi
    1,870
    L'id cambia è univoco, non capisco però se all'interno di un ciclo venga visto visto come più id con lo stesso nome e quindi agisce solo sul primo o se ho sbagliato qualcosa

  6. #6
    Originariamente inviato da Alberto
    L'id cambia è univoco
    univoco significa che non esiste alcun altro div con id="cambia" ... se fai un while da 1 allora ok, se il while invece può essere un ciclo da più di una sola volta, cambia non è id univoco perchè in output avrai


    <div id="cambia"> ...... </div>
    <div id="cambia"> ...... </div>
    <div id="cambia"> ...... </div>
    <div id="cambia"> ...... </div>
    ....



    e di univoco non c'è niente, univoco => UNO
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Utente di HTML.it L'avatar di Alberto
    Registrato dal
    Oct 2004
    Messaggi
    1,870
    Originariamente inviato da andr3a
    se fai un while da 1 allora ok
    Che intendi?


    Se un ciclo si ripete per 7 volte come nel mio caso non è più univico, ma un id duplicato per altre 6 volte, giusto?

    Mi conviene quindi trovare un'altra soluzione, magari con php!

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    un id NON può ripetersi quindi deve essere univoco
    se tu fai + di 1 div con lo stesso id, il comportamento di getElementById non è prevedibile, forse torna il primo che trova, forse l'ultimo, dipende dal browser
    io metterei un contatore alla fine dell'id e poi estrarrei tutti i div in un ciclo con getElementById("cambia" + i) fino a che non ritorna null o undefined

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.