Visualizzazione risultati 1 fino 9 di 9

Discussione: Aggiungere valore a campo [mysql]

  1. #1
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Question Aggiungere valore a campo [mysql]

    Scusate il titolo ma non sapevo come riassumerlo... anzi, non so nemmeno spiegarlo!
    Quindi passo al mio amico esempio.
    Mettiamo che un record di una tabella del database sia 1, 2.
    Adesso io con mysql_query voglio aggiungere un 3, per farlo diventare 1, 2, 3.
    Ho provato con UPDATE in questi modi, ma senza ottenere nulla... ovvero, qualcosa l'ho ottenuta: un errore.
    Codice PHP:
    SET quiz = 'quiz, ".$_GET['id']."'
    Codice PHP:
    SET quiz = quiz', ".$_GET['id']."'
    Prima di tutto: si può fare o è impossibile?
    Se si può fare, come si fa?
    Grazie.

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Non ho capito COSA vuoi trasformare, da 1,2 a 1,2,3.

    Se quello che ho capito è corretto, lo puoi fare con una normalissima UPDATE.

    Però, posta (almeno) la query per intero, altrimenti è difficile vedere l'errore; e poi fa confusione guardare la query senza tutte le virgolette...

    Se quello che ho capito è corretto,

    Codice PHP:
    mysql_query('UPDATE tabella SET nomecampo=\'1,2,3\' WHERE nomecampo=\'1,2\' AND id=\''.$_GET['id'].'\'');
    Ciao!
    Ultima modifica di alemoppo : 26-06-2011 alle ore 18.17.07

  3. #3
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Scusa...
    La query è questa:
    Codice PHP:
    mysql_query("UPDATE giocatori SET quiz = *** WHERE nickname = $utente");
    Io dicevo in generale come si potrebbe fare?
    Mettiamo che ho: 1,4,98,35,7,6 (ogni utente ha dei numeri diversi) e a questi numeri vorrei aggiungere 46 (ad esempio), che lo ricavo con $_GET.
    Quindi quiz = 1,4,98,35,7,6 che io voglio far diventare 1,4,98,35,7,6,46.
    Vorrei sapere come si può fare.
    Grazie.

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    ahh, forse ho capito. ad esempio, quiz prima vale
    Codice:
    1,4,98,35,7,6
    poi, vuoi farlo diventare:

    Codice:
    1,4,98,35,7,6,46
    Se è così, allora sicuramente lo puoi fare in questo modo (è il modo più semplice):

    - leggi il vecchio valore (1,4,98,35,7,6)
    - esegui l'update concatenandoci il 46

    Codice PHP:
    //acquisisco $vecchio_valore
    $query = mysql_query("SELECT quiz FROM giocatori WHERE nickname='".$nickname."' LIMIT 1");
    $vecchio_valore = mysql_result($query, 0);
    //aggiorno il dato
    mysql_query("UPDATE giocatori SET quiz = '".$vecchio_valore.','.$_GET['id']."' WHERE nickname = '$utente'");
    Altrimenti, puoi farlo con un'unica chiamata mysql_query() che legge e riscrive concatenando il tutto.


    ...Comunque, mi sembra che è stato progettato male: quel campo, avrebbe dovuto essere un id che puntava ad un'altra tabella. In questo modo, invece di concatenare, dovevi limitarti ad eseguire una INSERT nella tabella puntata dall'ID...

    Ciao!
    Ultima modifica di alemoppo : 26-06-2011 alle ore 19.51.07

  5. #5
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ciao, grazie per la risposta... non ci avevo pensato.
    Non ho capito bene quello che hai detto, comunque mi serve per capire se un utente ha già fatto quel quiz: se non l'ha ancora fatto, quando darà la risposta esatta gli si aggiudicheranno i punti, altrimenti anche se fa il quiz... niente punti!
    Piccola domanda:
    Codice PHP:
    "UPDATE giocatori SET quiz = '".$vecchio_valore.','.$_GET['id']."' WHERE nickname = $utente"
    non dovrebbe essere
    Codice PHP:
    "UPDATE giocatori SET quiz = '".$vecchio_valore.",".$_GET['id']."' WHERE nickname = $utente"
    (apici-doppi apici)
    ...giusto per sapere se è corretto sia in un modo sia nell'altro.
    Grazie mille, ciao!

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Funzionano entrambi correttamente, ma c'é una lievissima (trascurabile) differenza*.

    Questo può esserti utile

    Nel tuo caso, la differenza tra "single quoted" e "double quoted"

    []* nel tempo di esecuzione della pagina: con i double quotes, prima di utilizzare la stringa, l'interprete va a vedere se ci sono variabili da sostituire con il loro contenuto; invece nelle single quote non va a fare questa operazione, impiegando un tempo (infinitesimamente) più piccolo.

    Ciao!
    Ultima modifica di alemoppo : 26-06-2011 alle ore 19.59.52

  7. #7
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie mille... chiaro come sempre!
    Utilizzerò i doppi apici per rendermelo più comprensibile nel caso debba modificare qualcosa.

  8. #8
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Invece di fare due query ( una per estrarre il dato e una per aggiornare il record ), puoi usarne una sola:
    Codice PHP:
    "UPDATE giocatori SET quiz = CONCAT(quiz, ',{$_GET['id']}') WHERE nickname = $utente"

  9. #9
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    OK grazie, utilizzerò questa che è più semplice.
    Grazie.

Regole di scrittura

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