Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    168

    Cambiare ID attraverso pulsante ad un prodotto

    salve a tutti, ho una tabella che contiene dei prodotti che hanno un campo "ordine" che è un INT e x ora sono elencati x quel valore.. ora:

    lato admin ho fatto 2 freccine (una verso l'alto e l'altra verso il basso) x scambiare l'ordine dei prodotti...

    come fare la funzione e prendere i valori della riga sottostante o sovrastante?

    grazie mille

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    L'ho fatta un po di tempo fa per l'ordinamento di categorie di prodotti:

    Codice PHP:
            //spostare in alto
        
    if($_GET['action'] == "up")
        {
            
    $j $_GET['j'];
            
    $id_low $j+1;
            
    $id_high $id_low-1;
            
            
    $result mysql_query("SELECT * FROM ".$tbl_prodotti." WHERE id = ".$id_high);
            
    $i=0;
            while(
    $row[$i] = mysql_fetch_array($result)) { $i++; }
            
            
    $index_low $_POST['index'.$j];
            
    $index_high $row[0]['index'];
                
            
    mysql_query("UPDATE `".$tbl_prodotti."` SET `ordine` = '".$id_high."' WHERE `index` =".$index_low." LIMIT 1");
            
    mysql_query("UPDATE `".$tbl_prodotti."` SET `ordine` = '".$id_low."' WHERE `index` =".$index_high." LIMIT 1");
            
    //ritorna al pannello
        
    }
        
        
    //spostare in basso
        
    if($_GET['action'] == "down")
        {
            
    $j $_GET['j'];
            
    $id_high $j+1;
            
    $id_low $id_high+1;
            
            
    $result mysql_query("SELECT * FROM ".$tbl_prodotti." WHERE id = ".$id_low);
            
    $i=0;
            while(
    $row[$i] = mysql_fetch_array($result)) { $i++; }
            
            
    $index_high $_POST['index'.$j];
            
    $index_low $row[0]['index'];
                
            
    mysql_query("UPDATE `".$tbl_prodotti."` SET `ordine` = '".$id_high."' WHERE `index` =".$index_low." LIMIT 1");
            
    mysql_query("UPDATE `".$tbl_prodotti."` SET `ordine` = '".$id_low."' WHERE `index` =".$index_high." LIMIT 1");
            
    //ritorna al pannello
        
    }
        
        
    //aggiungere
        
    if($_GET['action'] == "ins")
        {
            
    $n $_GET['n'] + 1;
            
    mysql_query("INSERT INTO `".$tbl_prodotti."` ( `index` , `ordine` , `nome` , `descrizione` ) VALUES ('', '".$n."', '".$_POST['nome']."', '".$_POST['descrizione']."')");
            
            
    //ritorna al pannello
        
    }
        
        
    //cancellare
        
    if($_GET['action'] == "canc")
        {
            
    $j $_GET['j'];
            
    $n $_GET['n'];
            
    $id $j+1;
            
    mysql_query("DELETE FROM ".$tbl_prodotti." WHERE id = ".$id);
            
            if(
    $j<$n-1)
            {
                for(
    $i=$j+1;$i<$n;$i++)
                {
                    
    $r $i+1;
                    
    mysql_query("UPDATE `".$tbl_prodotti."` SET `ordine` = '".$i."' WHERE `ordine` =".$r." LIMIT 1");
                }
            }
            
    //ritorna al pannello
        

    L'unica cosa da notare è che (oltre al fatto che non è ottimizzato :P) io avevo nella tabella 2 ID di riconoscimento per il prodotto:

    - index
    - ordine

    l'Index è una key auto_increment, quindi UNIVOCA, mentre 'ordine' mi serviva per manipolarne l'ordinamento senza incorrere in conflitti di doppioni durante l'esecuzione degli script.
    Io passavo a questo script il valore dell'index tramite POST, ma puoi farlo tranquillamente in GET evitando di usare dei submit di un form.

    Spero ti torni utile^^

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Assumiamo che il tuo link sia del tipo 'spostaProdotto.php?id=xxx&dir=y'
    dove 'id' è il codice del prodotto e 'dir' può valere 's' o 'n' (cioè sposta in su o sposta in giù)

    In spostaProdotto.php avrai qualcosa del genere
    Codice PHP:
    $id $_GET['id'];
    $query "SELECT * FROM prodotti WHERE id = '$id' ";
    $res mysql_query($query) or die(mysql_error());
    $riga mysql_fetch_assoc($res);
    if (! 
    $riga) {  //il record non esiste!!
    }
    $ordineOld $riga['ordine'];
    $ordineNew = ($_GET['dir'] == 's') ? $ordineOld $ordineOld 1;
    if (
    $ordineNew == 0); //qualcosa non ha funzionato
    $query "SELECT id FROM prodotti WHERE ordine = '$ordineNew'  ";
    $res mysql_query($query)  or die(mysql_error());
    $riga fetch_row($res);
    if (! 
    $riga)
        
    $idScambio NULL;
    else
        
    $idScambio $riga['id'];
    $query "UPDATE prodotti SET ordine = '$ordineNew' WHERE id = '$id'";
    mysql_query($query)  or die(mysql_error());
    if (! empty(
    $idScambio)) {
       
    $query "UPDATE prodotti SET ordine = '$ordineOld' WHERE id = '$idScambio'";
       
    mysql_query($query)  or die(mysql_error());


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 © 2026 vBulletin Solutions, Inc. All rights reserved.