Visualizzazione risultati 1 fino 11 di 11

Discussione: [PHP/MySQL] Update di più records con un click

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito [PHP/MySQL] Update di più records con un click

    Buongiorno,
    vi spiego in breve il mio quesito...ho una tabella formata in questo modo:

    id (autoincrement) | nome | nick | galleryok

    Ho creato un form che mi modifica (grazie anche a javascript) il valore di "galleryok"...però ora non so come salvare i record che ho modificato...questo è il mio codice:
    Codice PHP:
    <form action="<?php echo $pagina; ?>?cmd=modperms" method="post">
    <?php $sql = mysql_query("SELECT * FROM gallery WHERE galleryok != '*'"); $i = 0; while($a = mysql_fetch_array($sql)){ $i++; ?>
    <input id="<?php echo $i; ?>a" type="checkbox" onclick="Cambia('<?php echo $i; ?>')" /> <?php echo $a['user']; ?>
    <textarea style="display:none" id="<?php echo $i; ?>" name="<?php echo $a['id']; ?>" style="height:100px; width:50%"><?php echo $a['galleryok']; ?></textarea><br />
    <input type="hidden" name="ids[]" value="<?php echo $a['id']; ?>" /><?php } ?><center><input type="submit" value="Update" /></center></form>
    Codice HTML:
    <script type="text/javascript">
    function Cambia(id){
    var a = document.getElementById(id+"a");
    var b = "<?php echo $_GET['nome']; ?>";
    var c = document.getElementById(id).value;
    if(a.checked){
    document.getElementById(id).value = c+","+b;
    }else{
    document.getElementById(id).value = c;
    }}
    </script>
    Come potete ben vedere estrae tutti i record tranne quelli dove "galleryok" è uguale a "*"...ora, con il mio codice riesco a modificare al momento il valore del record...lo modifico in una textarea...ma poi quando devo salvarlo come posso fare?

    Forse non mi sono spiegato bene...ma mi rimetto a voi...mal che vada sto qui per spiegazioni...
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    Guest

    Predefinito

    Se hai un id univoco non vedo dove sia il problema...


    ciao!

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Il problema mio e che non mi viene in mente come posso fare per aggiornare i giusti records...cioè...ammettendo che io abbia (in mysql):

    id (autoincrement) | nome | nick | galleryok

    1 | michelangelo | micscotto | *
    2 | official tester | test | one,two
    3 | null | null | two
    4 | helloworld | hw | one
    5 | new world | nw | *

    Nel mio form avrò la possibilità di modificare solo:

    2 | official tester | test | one,two
    3 | null | null | two
    4 | helloworld | hw | one

    Una volta modificati i record tramite JS, invio i dati a pagina2.php ma essa come deve fare a modificare solo questi record qui? Cioè devo usare quasi sicuramente un ciclo nella seconda pagina in quanto gli utenti ed i rispettivi records possono variare...se erano utenti e record stabiliti (es 3) io potevo fare:
    Codice PHP:
    mysql_query("UPDATE...WHERE id = '2'");
    mysql_query("UPDATE...WHERE id = '3'");
    mysql_query("UPDATE...WHERE id = '4'");
    Capito qual è il mio dilemma? Non mi viene in mente alcun codice da utilizzare nella seconda pagina...
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Guest

    Predefinito

    Ma cosa invii a pagina2.php?
    Che tipo di dati? Quali variabili?


    Ciao!

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Invio questo:
    Codice PHP:
    <textarea style="display:none" id="<?php echo $i; ?>" name="<?php echo $a['id']; ?>" style="height:100px; width:50%"><?php echo $a['galleryok']; ?></textarea>
    Che come nome ha l'ID utente e come contenuto ha un valore da me modificato.
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    Guest

    Predefinito

    Eh, e dov'è che passi gli altri valori?
    L'id del record e le altre info?


    Ciao!

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Codice:
    2 | official tester | test | one,two
    3 | null | null | two
    4 | helloworld | hw | one
    Se l'id e' il primo numero in ogni riga, dove e' il problema?

    Per ogni riga della textarea:
    1. usi explode() e trim() per prendere i valori separati da "|"
      Codice PHP:
      $valori = explode('|', $riga, 4);
      $valori = array_map('trim', $valori);
      $valori = array_map('mysql_real_escape_string', $valori);
    2. poi esegui una query
      Codice:
      UPDATE ... Campo1='{$valori[1]}' ... WHERE id = '{$valori[0]}'
    Ultima modifica di dreadnaut : 03-08-2009 alle ore 11.49.08

  8. #8
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Eh, e dov'è che passi gli altri valori?
    L'id del record e le altre info?


    Ciao!
    A me non interessa modificare gli altri valori, interessa modificare solo galleryok...pertanto penso che quello che serva sia l'ID utente (da aggiungere nel WHERE) ed il nuovo valore galleryok.
    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Codice:
    2 | official tester | test | one,two
    3 | null | null | two
    4 | helloworld | hw | one
    Se l'id e' il primo numero in ogni riga, dove e' il problema?

    Per ogni riga della textarea:
    1. usi explode() e trim() per prendere i valori separati da "|"
      Codice PHP:
      $valori = explode('|', $riga, 4);
      $valori = array_map('trim', $valori);
      $valori = array_map('mysql_real_escape_string', $valori);
    2. poi esegui una query
      Codice:
      UPDATE ... Campo1='{$valori[1]}' ... WHERE id = '{$valori[0]}'
    Purtroppo non si tratta di una sola textarea (come puoi vedere dal codice #1) per via del while ci sono tante textarea quanti record ci sono.
    Apprezzi l'aiuto? Offrimi un caffè!

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Sempre a complicarti la vita mboh, chiama le textarea name="testo[]" e poi fai un ciclo anche su quell'array.

    Se pero' la cosa sta diventando poco efficiente e contorta, forse dovresti rivedere l'intero sistema e semplificarlo.
    Ultima modifica di dreadnaut : 03-08-2009 alle ore 12.03.59

  10. #10
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Già forse hai ragione dreadnaut...allora ti spiego un po' come funziona questo sistema così mi aiuti con qualche consiglio/soluzione veloce:

    Ho 3 pagine PHP (a, b, c):

    Inizia tutto da a --> Questa pagina contiene un form con un campo nella quale inserisco un nome che voglio, invia i dati a b
    b -->Riceve il nome inviato dalla precedente pagina e crea un file di testo con il nome ricevuto. Creato il file di testo mostra un form con alcuni utenti (records) presenti in MySQL, di questi utenti io devo scegliere a chi assegnare il permesso (memorizzando quindi il nome ricevuto da a nel campo galleryok di MySQL) di visualizzare quel file. Scelto a chi dare il permesso invio tutto a c che salva in MySQL il nome del file ricevuto da a e passato per b.

    Sono stato più chiaro?
    Apprezzi l'aiuto? Offrimi un caffè!

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    boh, per quanto hai raccontato sembra aver senso, forse puoi risparmiarti un po' di fatica mettendo tutti i record in un'unica textarea. Altrimenti, doppio for come si diceva sopra e via.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •