ciao a tutti, ecco il mio problema
ho questa tabella nel database mysql:
tab1(id, campo1, campo2)
sto cercando di realizzare una funzione che scambia l'id che gli passo come parametro con quello della riga precedente, in modo che poi quando stampo la tabella la riga interessata risulta spostata di una posizione in alto.
la funzione prende in ingresso l' id della riga da spostare in su, si ricava l'id della riga precedente, e poi effettuo uno scambio ponendo provvisoriamente a zero l'id della riga precedente.
Codice PHP:
function riga_up($id){
$risultato = mysql_query("SELECT id FROM `tab1`");
while ($riga = mysql_fetch_array($risultato, MYSQL_ASSOC)) {
if($riga["id"]==$id) break;
else $prec=$riga["id"];// trovo id della riga prima
}
//metto provvisoriamente id precendente a 0
mysql_query("UPDATE `tab1` SET `id` = 0 WHERE `tab1`.`id` = '$prec'");
//scambio l'id maggiore con quello minore
mysql_query("UPDATE `tab1` SET `id` = '$prec' WHERE `tab1`.`id` = '$id'");
mysql_query("UPDATE `tab1` SET `id` = '$id' WHERE `tab1`.`id` = 0");
}
il problema è che inspiegabilmente avvolte funziona e altre no...
possibile che l'errore sia nella query con cui seleziono tutti gli id all'inzio? (SELECT id FROM `tab1`)