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

    Spostare un record su e giù con una funzione sql

    Ciao a tutti!

    Esiste un modo in sql facile facile per spostare un record su e giù. Lo so realizzare, ma farei una cosa complicata (select, salvare i codici in un array, troverei il successivo, ecc.).

    Attendo qualche SQLGURU

  2. #2
    Secondo voi non esiste il metodo? (scusate per l'up)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    119
    Puoi associare un variabile che definisca l'ordine (un numero ad esempio) e modificare quella. Quando fai la SELECT poi ordini per quella variabile.

    Oppure modifichi gli id utilizzando un algoritmo di sorting (tipo quicksort o mergesort), ma vale fino a lì... in sql un record "più su o più giù" non esiste, il risultato viene definito dall'ordinamento della query SELECT.



    -----------------------------
    Tv Portatili

  4. #4
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    devi fare 2 query di update con scambio dei numeri per ogni movimento..
    nel "muovisu" per primo devi recuperare l'id e il valore di ordine di quello prima che hai cliccato con la select:
    Codice PHP:
    SELECT idordine WHERE ordine '$ordine' ORDER BY ordine DESC limit 1 
    dove $ordine è il valore nel DB di quello che hai cliccato..

    recuperato questi valori devi fare le due query

    Codice PHP:
    $UPDATESQL sprintf("UPDATE tabella SET ordine = '$valoreordinediquellocliccatodallaform' WHERE id='$id_recuperatodallaselectquasopra'");

    $UPDATESQL sprintf("UPDATE test SET ordine = '$ordine_recuperatodallaselectquasopra' WHERE id='$valoreIDdiquellocliccatodallaform'"); 
    vedi se intanto riesci a fare questo..
    poi per logica fai il "muovigiu".. se hai difficoltà siamo qua..

  5. #5
    Originariamente inviato da telegio
    devi fare 2 query di update con scambio dei numeri per ogni movimento..
    nel "muovisu" per primo devi recuperare l'id e il valore di ordine di quello prima che hai cliccato con la select:
    Codice PHP:
    SELECT idordine WHERE ordine '$ordine' ORDER BY ordine DESC limit 1 
    dove $ordine è il valore nel DB di quello che hai cliccato..

    recuperato questi valori devi fare le due query

    Codice PHP:
    $UPDATESQL sprintf("UPDATE tabella SET ordine = '$valoreordinediquellocliccatodallaform' WHERE id='$id_recuperatodallaselectquasopra'");

    $UPDATESQL sprintf("UPDATE test SET ordine = '$ordine_recuperatodallaselectquasopra' WHERE id='$valoreIDdiquellocliccatodallaform'"); 
    vedi se intanto riesci a fare questo..
    poi per logica fai il "muovigiu".. se hai difficoltà siamo qua..
    Grazie! Ho risolto tutto!

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    ..col mio aiuto o senza??

  7. #7
    Originariamente inviato da telegio
    ..col mio aiuto o senza??
    Diciamo che ho risolto trovando in un sito estero, comunque la tua spegazione è stata comunque utilissima, grazie

  8. #8
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    ..metti il link..
    io ci ho messo 2 giorni a capire come si faceva, e se c'è un modo più facile vorrei saperlo..

  9. #9
    Originariamente inviato da telegio
    ..metti il link..
    io ci ho messo 2 giorni a capire come si faceva, e se c'è un modo più facile vorrei saperlo..
    E' uguale al tuo, cambia solo il nome dei campi.

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.