Autor | Zpráva | ||
---|---|---|---|
H13 Profil |
#1 · Zasláno: 2. 8. 2006, 14:09:42
Ahoj, potřeboval bych poradit, z databáze si nechám vypsat různé položky, př.:
id - jmeno - akce1 - akce2 --------------------------------- 1 - prvnipolozka - smazat - (sipka dolu) 2 - druhapolozka - smazat - (sipka dolu)(sipka nahoru) 3 - tretipolozka - smazat - (sipka nahoru) Sloupec akce1 slouží pro smazání položky Sloupec akce2 slouží pro posunování položek nahoru, resp. dolů Potřeboval bych vědět jakým způsobem se posunování položek nahoru či dolů dělá, předání proměnných pomocí get je mi jasný: např. posunutí 2 položky nahoru ...php?id=2&akce2=nahoru Zajímá mě, jestli se do databáze zapisuje třeba do sloupce "poradi" pořadí položky, tak aby při každým výpisu položek z databáze platil výpis dle výběru (to znamená, přesunul jsem položku 2 na první místo, takže při každým výpisu se bude vypisovat na prvním místě, dokud to třeba nezměním...) nebo se používá nějaký jiný způsob... díky moc, Honza |
||
gaminn Profil * |
#2 · Zasláno: 2. 8. 2006, 14:14:04
Moc jsem nepochopil, o co tady přesně jde, ale zdá se mi, že to tady zavání nějakým paskvilem.
|
||
nightfish Profil |
#3 · Zasláno: 2. 8. 2006, 15:43:39
tabulka
id, jmeno, poradi vypis select id, jmeno from tabulka order by poradi skriptem pak musis akorat zajistit, aby poradi obsahovalo spravne hodnoty - tzn. kdyz radek s poradim 4 posunes nahoru, tak musis pomoci sql zaridit, aby jej to prohodilo s prvkem s poradim 3 pak osetrit krajni stavy - tzn. aby ti poradi nelezlo pod 0 |
||
H13 Profil |
#4 · Zasláno: 2. 8. 2006, 16:01:54
Moc jsem nepochopil, o co tady přesně jde, ale zdá se mi, že to tady zavání nějakým paskvilem.
Právě že paskvilu se chci vyvyrovat. Zkusím jednoduše vysvětlit. Příklad: Mám v databázi jména kamarádů. Petr, Pavel, Josef. Nechám si je z databáze vypsat. Vypíše se: Josef Pavel Petr a já chci přesunout Petra na první místo a Josefa na třetí a chci, aby se to z databáze vypisovalo pokaždé tak jak jsem to změnil... |
||
nightfish Profil |
#5 · Zasláno: 2. 8. 2006, 16:09:09
skriptem pak musis akorat zajistit, aby poradi obsahovalo spravne hodnoty - tzn. kdyz radek s poradim 4 posunes nahoru, tak musis pomoci sql zaridit, aby jej to prohodilo s prvkem s poradim 3
to jsem napsal dost blbě - fyzicky ty řádky zůstanou v databázi stejně, akorát se prohodí hodnoty ve sloupci poradi... |
||
H13 Profil |
#6 · Zasláno: 2. 8. 2006, 16:49:38
to jsem napsal dost blbě - fyzicky ty řádky zůstanou v databázi stejně, akorát se prohodí hodnoty ve sloupci poradi...
jak pak vyřeším to, že např. jeden řádek smažu |
||
gaminn Profil * |
#7 · Zasláno: 2. 8. 2006, 16:49:43
Jak píše nightfish, ve sloupci budeš mít uloženo pořadí, pokud budeš přesouvat hodnotu z pozice x na y, tak bude potřeba zařídit přečíslování všech hodnot v intervalu <x,y> nebo <y,x>, tzn. bude tam muset být jeden sql dotaz navíc.
|
||
Kajman_ Profil * |
#8 · Zasláno: 2. 8. 2006, 17:02:42
update poradi=if(poradi=3,3-1,3) from tabulka where poradi=3 or poradi=3-1
by mělo mělo posunout řádek 3 o jeden výš (snížit hodnotu v sloupečku pořadí) a pokud tam je dvojka, tak tu změnit na trojku |
||
Časová prodleva: 1 rok
|
|||
alteaffe Profil * |
#9 · Zasláno: 14. 9. 2007, 18:45:05
ja to mam takhle
prvne si udelam vypis vsech polozek zjistim si jejich pocet $rows = mysql_num_rows($db_row); pak mam selekt pole kde mi vypisuje cisla od 1 az po ten $rows dejme tomu $rows je 12 no a pak pri ukladani u zmeny jeste pro orientaci $po_d toto je poradi domu ktere ma ted momentalne ulozene treba je 5 a $z_po je zmena poradi , to je poradi ktere zmenis v tom selekt poli. if ($po_d < $z_po) { $posuv = "dolu"; } elseif ($po_d > $z_po) { $posuv = "nahoru"; } elseif ($po_d == $z_po) { } /////////////////////////////////////////// DOLU ////////////////////////////////////////// if ($posuv == "dolu") { $pocet_zmen = $z_po - $po_d; $max = 'limit ' .$po_d .',' .$pocet_zmen; $db = mysql_query("SELECT * FROM b_haus WHERE porad <= '$z_po' AND stadt_id = '$st_id' ORDER by porad ASC " . $max . " ")or die(mysql_error()); while ($ha = MySQL_Fetch_Array($db)) { // $query = mysql_query("UPDATE b_haus SET porad = " . ($ha['porad'] - 1) . " WHERE id = ". $ha['id'] ." "); } //$query = mysql_query("UPDATE b_haus SET porad = '$z_po' WHERE id = '$ha_id' "); } //////////////////// nahoru ////////////////////////////////////////////////////////////// if ($posuv == "nahoru") { $pocet_zmen = $po_d - $z_po; $kolikaty = $z_po - 1; $max = 'limit ' .$kolikaty .',' .$pocet_zmen; $db = mysql_query("SELECT * FROM b_haus WHERE porad <= '$po_d' AND stadt_id = '$st_id' ORDER by porad ASC " . $max . " ")or die(mysql_error()); while ($ha = MySQL_Fetch_Array($db)) { echo " ".$ha['haus']." - ".$ha['porad']." <br>"; $query = mysql_query("UPDATE b_haus SET porad = " . ($ha['porad'] + 1) . " WHERE id = ". $ha['id'] ." "); } $query = mysql_query("UPDATE b_haus SET porad = '$z_po' WHERE id = '$ha_id' "); } |
||
alteaffe Profil * |
#10 · Zasláno: 14. 9. 2007, 18:51:55
abych to vysvetlil kdyz posouvas poradi dolu neni to stejne jako kdyz ho posouvas nahoru .
Kdyz posouvas poradi nahoru (tj. ze mas poradi 12 a chces ho zmenit na 2 ) tak si vypises z databaze vsechny poradi ktere jsou vetsi a rovne nez to poradi 2 a ke kazdemu poradi prictes jednicku a pak to posledni 12 poradis zmenis na tu 2ku. Takze poradi 2 bude 3 - 3 bude 4 - 4bude 5 atd.. 11 bude 12 a konec a ta tvoje dvanactka pak bude 2. Takhle muzes menit poradi pri libovolnem poctu polozek , kdyz tam budes tabule pridavat nebo mazat. Akorad kdyz budes pridavat neco do tabule musis ji hned zapsat poradi , ja to mam tak ze mam $rows = pocet tech polozek + 1 , protoze pridavam . Automaticky se hodi na posledni misto. |
||
alteaffe Profil * |
#11 · Zasláno: 14. 9. 2007, 18:53:24
jo a tu zmenu poradi mam v editaci
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0