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

    spostare righe di tabella

    salve ragazzi, vediamo se potete aiutarmi...
    ho una tabella più o meno come questa
    <tabel>
    <tr><td id='1'><input id='desc_1' type='text'></td><td>aggiungi riga(1)</td></tr>
    <tr><td id='2'><input id='desc_2' type='text'></td><td>aggiungi riga(2)</td></tr>
    <tr><td id='3'><input id='desc_3' type='text'></td><td>aggiungi riga(3)</td></tr>
    </table>
    vorrei che al click di un tasto "aggiungi riga(2)" il valore del text 2 passi in 3, e quello di 3 in una nuova riga di id 4. il text della riga 2 invece si deve svuotare...
    avevo provato con un comando js, che al momento non mi ricordo qual'è :master: , che mi permetteva di creare dei tr e dei td, ma non mi dava modo di assegnargli un id...
    se qualcuno riuscisse ad illuminarmi, magari anche usando ajax, ne sarei molto grato...
    ps la tabella la genero con dati che ho in sessione ai quali aggiungo altre n righe vuote

  2. #2
    Se devi fare solo questo, l'id lo devi mettere nella tabella, in modo da poter essere raggiunta e che ci si può scrivere dentro.
    codice:
    function xxx (pos_riga) {
    pos_riga--;
    riga=document.getElementsByTagName('input');
    for (i=0; i < riga.length; i++)
      val[i]=riga[i].value;
    document.getElementById("tabella").innerHTML+="<tr><td><input id='desc_3' type='text'></td><td onClick='xxx ("+(riga.length+1)+"'>aggiungi riga("+(riga.length+1)+"</td></tr>";
    for (i=0; i < (riga.length+1); i++)
      if (i < pos_riga )
        riga[i].value=val[i];
      elseif (i > pos_riga)
        riga[i].value=val[i-1];
      elseif (i == pos_riga)
        riga[i] = '';
    }
    Non l'ho provato, ma dovrebbe funzionare senza problemi.
    Ah, un'altra cosa, dove hai messo "aggiungi riga(n)" dovresti aggiungere nel relativo td questo '<td onClick="xxx (n)">' dove xxx è il nome della funzione che ho fatto prima mentre n sarebbe il numero della riga (che nella funzione ho chiamato "pos_riga").

  3. #3
    lo script funziona... ho un solo problema... la fine del ciclo.
    io ho un input hidden che contiene il count degli elementi della tabella. quando richiamo la funzione dopo che eseguo le operzioni, vado ad incrementare questo valore...
    quando richiamo nuovamente la funzione, mi dice che riga[i] is null e si blocca...
    a questo punto ho provato a utilizzare il tuo metono, ma riga.lenght mi restituisce un numero assurdo... forse perchè ho altri input, non so....

  4. #4
    ho risolto grazie!!! funziona alla grande!!

  5. #5
    come non detto ....
    funziona bene, però ad un certo punto, dopo alcuni inserimenti, mi sballa....

  6. #6
    fin quando inserisco nuove righe a partire sempre dalla stessa posizione funziona....
    quando poi cambio, mi genera copia di campi, e campi che prima erano posizionati in una maniera, me li ritrovo in altre posizioni... non se sono stato chiaro... ma sto impazzendo!

  7. #7
    ho risolto usando ajax!! stavolta funziona alla grande sul serio!!!

    che bello scrivo solo io qui

  8. #8
    Giusto per curiosità, mi esponi come hai risolto? XD

  9. #9
    ti rispondo ora perchè ciò che riguarda l'ufficio nel fine settimana per me nn esiste ...
    cmq.... al click sul pulsante, scateno questa funzione js:

    function addRow(id){
    if (xmlHttp)
    {
    xmlHttp.open('GET', 'pagina.php?id='+id);
    xmlHttp.onreadystatechange = function (){
    if (xmlHttp.readyState == 4)
    {
    document.getElementById('tabella').innerHTML = xmlHttp.responseText;
    }
    };
    xmlHttp.send(null);
    }
    }

    siccome io i valori della tabella li avevo in sessione, nella pagina php, sposto di una posizione tutti gli indici a partire da quello selezionato, in quest maniera:

    unset($temp);
    $temp = $_SESSION['dati']; //metto su un array temporaneo i dati della sessione
    unset($_SESSION['dati']); //cancello la sessione
    $ok = 0;
    for($i=1; $i<=(count($temp)+1); $i++){
    if($i == $_GET['id'] || $ok == 1){ //in questo if ci entro quando arrivo all'id interessato e per tutto il resto del ciclo
    $c = $i+1;
    $ok=1;
    }
    else //nell'else invece ci vado fin quando non arrivo all'indice interessato
    $c = $i;
    $_SESSION['dati'][$c] = $temp[$i];
    }
    unset($temp);

    poi sotto costruisco la tabella prendendo i dati dalla sessione.... e tutto risolto yeah

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.