Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    79

    Valore al click del bottone, viene preso solo l'ultimo.

    Il titolo è probabilmente terribile, ma non sapevo come altro sintetizzare il problema.
    Quindi cercherò qui di spiegarmi al meglio.

    Ho una tabella CLIENTI con dei record, e le colonne sono semplicemente Id,nome,descrizione

    Il mio scopo è quello di voler modificare questi record, tramite un pulsante posto in una ulteriore colonna. Al click del pulsante voglio che i dati del cliente vengano visualizzati nella form posta accanto alla tabella. La form comprende i campi NOME e DESCRIZIONE (sono due textbox).
    In questo modo tramite il pulsante modifica andrò ad editare i campi, ma questa è un'altra storia.

    Il problema è che, qualsiasi sia il record associato al pulsante edit nella tabella, nella form mi visualizza solamente i dati dell'ultimo cliente inserito. Non importa che io spinga il 1-2-3.... record, lui visualizza sempre l'ultimo.
    Non riesco a capire il motivo.

    Faccio tutto all'interno della stessa pagina, avvalendomi di javascript per visualizzare i dati nella form.
    Connessione al db, generazione tabelle etc sono tutte corrette.

    Ecco il codice (ho cercato di metterne il minimo possibile per evitare confusione ma se serve altro chiedete pure)

    Tabella con relativo codice script
    Codice PHP:
    <table class="simple-table responsive-table" id="tabella-elenco-clienti">
        <thead><tr>//intestazione colonne</tr></thead>            
       <tbody>            
              <?php  $i=0;                     
               while (
    $i $num)   {                              
               
    $nomecliente=mysql_result($risultati,$i,"C_NomeCliente");                            
               
    $dettaglicliente=mysql_result($risultati,$i,"C_DettagliCliente");                        
                
    $idcliente=mysql_result($risultati$i"C_IdCliente");             
               
    ?>            
            <script type="text/javascript"> //la funzione che mi va a mettere i valori                        
                 function funzione()                        
                           {                        
                            document.formcliente.txtnomecliente.value="<?php echo $nomecliente?>";
                           document.formcliente.autoexpanding.value="<?php echo $dettaglicliente?>";                                }            
             </script>            
                  <tr>                
                        <td><? echo $nomecliente?></td>                
                      <td><? echo $dettaglicliente?></td>                
                       <td class="align-right vertical-center">                
                      <span class="button-group compact">                    
                         <a onclick="funzione();" class="button icon-pencil" id="editcliente">Edit</a>                            </span>                
                      </td>                
                    </tr>            
              <?php                  
                         $i
    ++;               
                    }              
                   
    ?>             
          </tbody>
    </table>
    questa è invece la form dove voglio stampare i valori
    Codice PHP:

    <form id="formcliente" method="post" name="formcliente">        
          <
    div class="bottoneperinserirecliente">            
                <
    h6 class="label-ins">Nome Cliente</h6
                <
    input type="text" name="txtnomecliente" id="input-2" size="9" class="input full-width" value="">        
           </
    div>        
          <
    div class="bottoneperinserirecliente">            
                <
    h6 class="label-ins">Dettagli Cliente</h6>            
                <
    textarea name="autoexpanding" id="autoexpanding" class="input full-witdh autoexpanding"></textarea>        
            </
    div>        
            <
    div class="bottoneinviocliente">
             <
    input name="invia" type="submit" class="button compact" value="Salva Modifiche"     onclick="javascript:formcliente.action='edit-cliente.php';"/>        
    </
    div>
    </
    form

    Riporto un esempio pratico:
    NOME DESCRIZIONE
    Cane Cagnetto
    Gatto Gattino


    Se io premo il pulsante accanto a gatto gattino, nella form mi vanno i valori corrispondenti, se clicco quello accanto a cane cagnetto, avrò comunque i valori di gatto gattino
    Eppure ad ogni record della tabella è associato un pulsante distinto. Non capisco quindi perchè si ostini a prendere solo l'ultimo.

    Spero di essere stata chiara.

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    mi pare normale

    Se nel ciclo ridefinisci sempre la funzione "funzione", viene presa l'ultima

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    79
    Pensavo che la funzione passasse i dati del record corrispondente, siccome si trova alla i-esima volta della tabella ^^"
    Come posso risolvere il problema? Se si riesce a risolvere...
    devo passare qualche dato di più alla funzione?

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    No...tu devi considerare la pagina completa. Basta vedere il sorgente per renderti conto che la funzione veniva ridefinita.
    Un metodo un po' "sporco" sarebbe di definirti n funzioni diverse:
    Codice PHP:

    <?php  $i=0;                     
               while (
    $i $num)   {                              
               
    $nomecliente=mysql_result($risultati,$i,"C_NomeCliente");                            
               
    $dettaglicliente=mysql_result($risultati,$i,"C_DettagliCliente");                        
                
    $idcliente=mysql_result($risultati$i"C_IdCliente");             
               
    ?>            
            <script type="text/javascript"> //la funzione che mi va a mettere i valori                        
                 function funzione<?php echo $i ?>()           // cambia nome a seconda di $i             
                           {                        
                            document.formcliente.txtnomecliente.value="<?php echo $nomecliente?>";
                           document.formcliente.autoexpanding.value="<?php echo $dettaglicliente?>";                                }            
             </script>            
                  <tr>                
                        <td><? echo $nomecliente?></td>                
                      <td><? echo $dettaglicliente?></td>                
                       <td class="align-right vertical-center">                
                      <span class="button-group compact">       
                       <!-- Chiamo la funzione -->             
                         <a onclick="funzione<?php echo $i ?>();" class="button icon-pencil" id="editcliente">Edit</a>                            </span>                
                      </td>                
                    </tr>            
              <?php                  
                         $i
    ++;               
                    }              
                   
    ?>
    Una soluzione più elegante è usare ajax, passi l'id del record alla funzione che tramite ajax si fa dare i dati da modificare, che poi metti nel form

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    79
    Verificato! Funziona
    Non avevo pensato ad "aggirare" il problema in questo modo ^^"
    Per ora ho usato il metodo "sporco", appena posso approfondirò Ajax così da migliorare il codice
    Grazie mille davvero!

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.