Newsgroup: it.comp.www.php
Titolo: Ho un problema che mi assilla da giorni. aiutatemi!

Vorrei poter fa scegliere all'utente la posizione della singola news
all'inteno della pagina web,
ho messo nella tabella "news" il campo "posizione" e faccio la select con
order by posizione.
Naturamente l'utente sceglie la posizione che dovrebbe occupare la news.
Vorrei che nel campo posizione verrebbero numerate tutte a partire da 1 ad
ogni nuovo inserimento, cosi' se a 2 news diverse verrebbe data la stessa
posizione rinumerandole tutto si metterebbe a posto
esempio: ho 4 news
news_1   pos=1°
news_2   pos=2°
news_3   pos=3°
news_4   pos=4°
ne aggiungo un'altra con la posizione 2°, avrei
news_1   pos=1°
news_5   pos=2°
news_2   pos=2°
news_3   pos=3°
news_4   pos=4°
quindi rinumerandole otterrei
news_1   pos=1°
news_5   pos=2°
news_2   pos=3°
news_3   pos=4°
news_4   pos=5°
La domanda è questa: Come faccio a rinumerarle dopo un nuovo inserimento?
GRAZIE

 inserimento?
Fai cosi:
Se devi inserire una news nella posizione tre prima fai:
UPDATE tabella SET posizione = posizione + 1 
WHERE posizione >= 3
Poi fai l'INSERT. 
-- 
I'am what I'am, I do what I can

"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:%8otb.116761$vO5.4...@twister1.libero.it...

Prima di tutto Grazie
Setec Astronomy è proprio come l'ho fatto io, pero' il problema nasce quando
si modifica una news e magari si sceglie di cambiare la posizione:
se ho 4 news  e voglio che la 3° deve diventare la 1° come faccio?
cosi' come hai detto tu ottengo questa situazione
la 3° diventa l
la 1° diventa 2
la 2° diventa 3
la 4° diventa 5 (e si crea un pasticcio :o)) per questo vorrei rinumerarle
come dicevo nel primo messaggio

 Naturamente l'utente sceglie la posizione che dovrebbe occupare la news.
Io l'ho fatto principalmente con il javascript, in modo da avere
un'interfaccia molto pratica di gestione.
In pratica ho una select multipla in cui compaiono gli elementi già inseriti
(che siano news o altro non importa), quindi con dei pulsanti SU e GIU posso
spostare all'interno della select l'elemento selezionato (swappandolo in js
con quello precedente o successivo). Alla fine avrò la mia select con gli
elementi nell'ordine desiderato, ma ancora non ho fatto nulla sul db.
Cliccando su un pulsante SALVA leggo, ancora con il javascript, gli elementi
nell'ordine risultante e passo queste informazioni ad una pagina php che si
occupa di cambiare il campo posizione di ogni elemento.
Ludovico

 la 40 diventa 5 (e si crea un pasticcio :o))
Quale problema si crea? La posizione serve solamente a fare l'ORDER BY,
anche se ci sono dei buchi non vi e' problema.


 I'am what I'am, I do what I can
Invece il problema c'è.
Immagina che si crea questa situazione con i buchi
news_1   campo_pos = 1
news_2   campo_pos = 4
news_3   campo_pos = 5
news_4   campo_pos = 6
voglio inserire una nuova news con posizione = 3 questa non sara' collocata
al terzo posto ma al secondo

 collocata al terzo posto ma al secondo
Come effettui lo spostamento?
Gli dici di metterla prima della news_2 e sei apposto.


 rinumerarle come dicevo nel primo messaggio
UPDATE tabella SET posizione = posizione + 1 
WHERE posizione >= 3
Poi fai l'UPDATE SET posizione = 3 WEHERE ID = 4 
