Visualizzazione risultati 1 fino 4 di 4

Discussione: Update multiplo database

  1. #1
    Guest

    Predefinito Update multiplo database

    salve a tutti.

    io ho una matrice $m composta da 2 colonne: Nome e Punti.

    Praticamente è fatta così:

    $m --- Nome --- Punti

    0 ----- Pino ----- 50
    1 ----- Mario --- 125
    2 ----- Luigi ---- 75

    (eccetera)

    Poi ho una tabella nel database fatta in questo modo

    Punteggi (CodP, Nome, Punti)

    Contenente già delle righe. In particolare nella colonna Nome sono già presenti tutti i nomi che io ho nella matrice.

    Ora, per ciascun nome nella matrice vorrei aggiornare la colonna punti con il nuovo punteggio. Quello che vorrei fare però, è poter fare il tutto in una sola query e non in N query dove N è il numero delle righe della matrice.

    E' possibile? E se si come?

    grazie mille

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Certo che puoi.

    Allora se ho capito bene tu hai una variabile N x 2, dove N è uguale al numero di record ( righe ) presenti nella tabella vero? dimmi se sbaglio.

    Puoi aggiornare tutte le celle dell'ultima colonna in questo modo:
    Codice PHP:
    <?php
    for (i = 0; i < $num - 1; $i++)
    {
    mysql_query("UPDATE nome_tabella SET Punti = " . $m[i][2] . " WHERE CodP = $i");
    }
    ?>
    $num e il numero totale di record della tabella, sai come trovarlo vero?.

    Non ti assicuro che il codice vada, non l'ho provato.
    Ultima modifica di sevenjeak : 23-11-2010 alle ore 11.55.16

    Sevenjeak
    Software developer and much more

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    sevenjeak, non stai rispondendo alla domanda: il tuo codice esegue comunque un numero di query pari alle righe della tabella (tra l'altro, mancando una clausola WHERE, nel database è ripetuto l'aggiornamento nel modo sbagliato).

    Un modo per eseguire l'aggiornamento con una sola query esiste solo se sei in grado di ricavare i nuovi dati esclusivamente da quelli già esistenti nel database, puoi usare:
    - gli altri campi della tabella
    - i valori precedenti dei campi che devi aggiornare
    - valori calcolati da altre tabelle, inseriti utilizzando sub-query

    Dovresti però specificare pù in dettaglio come deve avvenire l'aggiornamento... altrimenti non ti si può aiutare.

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  4. #4
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Per la clausola where o editato il messaggio, più che altro pensavo che volesse dire come evitare di riscrivere la query per tutti i record, nel caso i record siano solo 3, scusate.
    Ultima modifica di sevenjeak : 23-11-2010 alle ore 12.07.19

    Sevenjeak
    Software developer and much more

Regole di scrittura

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