Autor Zpráva
HGD
Profil
ZDE jsem čerpal základ, nicméně teď řeším to co je popsáno v 1. komentáři

Vesta: Řešil jsem stejný problém následujícím způsobem: v případě vložení jsem to rozdělil na dva kroky, nejdříve jsem posunul číslování pomocí SET poradi = poradi + 1 WHERE poradi >= $n a potom jsem pomoci INSERTU vložil řádek do tabulky kde pořadí bylo $n. U mazání byl postup opačný tzn. smazat řádek a potom SET poradi = poradi - 1 WHERE poradi >= $n.

Já sem se snažil použít mazání, jak výše popsal Vesta, ale když mam řádky s čísly 1,2,3 a smažu ten s pořadím 2, tak ten s pořadím 3 se mi změní na 0...
Nevědi byste co s tim?
Alphard
Profil
tak ten s pořadím 3 se mi změní na 0...
Nevědi byste co s tim?


SET poradi = poradi - 1 WHERE poradi >= $n
vypadá správně, ukaž větší část kódu
HGD
Profil
newim teda jestli to mam správně no...
elseif(!empty($_GET['deleteC'])){
   $por = explode("_","".$_GET['deleteC']."");
  if(mysql_query("DELETE FROM ".$pref."_category WHERE id='$por[0]'")){
   if(mysql_query("UPDATE ".$pref."_category SET poradi='poradi-1' WHERE poradi>'$por[1]'")){
    header("location: ./index.php?admin=menu&show=category&deleteC=ok");
   }
  }
  else{
   header("location: ./index.php?admin=menu&show=category&deleteC=ko");
  }

//---Nová sekce---
}
Alphard
Profil
poradi='poradi-1'
proč ty apostrofy?
HGD
Profil
aha, tak to dělaj jenom ty blbí apostrofy :)
...njn, já mam problém dělat složitější příkazy na DB, ale díky moc
HGD
Profil
no, a pak z tý samý stránky sem se pokoušel o aktualizaci záznamů, ale hází mi to chybu v druhé podmínce, resp. když přidám ELSE tak to vyhodnotí else
elseif($_GET['posunS']!=""){
$poradiNEW = explode("_","".$_GET['posunS']."");
$row = mysql_fetch_assoc(mysql_query("SELECT poradi FROM ".$pref."_sekce WHERE id='$poradiNEW[0]'"));
 if($row["poradi"] != $poradiNEW[1]) {
  $max_poradi = mysql_result(mysql_query("SELECT MAX(poradi) FROM ".$pref."_sekce"), 0);
  $poradi = (strlen($poradiNEW[1]) ? min($max_poradi, max(1, $poradiNEW[1])) : $max_poradi);
   if(mysql_query("UPDATE ".$pref."_sekce SET poradi='$poradi' WHERE id='$poradiNEW[0]'")){
    $where = "id != '$poradiNEW[0]' AND poradi BETWEEN ".min($row["poradi"], $poradi)." AND ".max($row["poradi"], $poradi)."";
    mysql_query("UPDATE ".$pref."_sekce SET poradi=poradi ".($row["poradi"] < $poradi ? "-" : "+")." 1 WHERE $where");
   }else echo "neupdate";
 }
}
Alphard
Profil
já se nevyznám v tvých proměnných, za každý mysql_query() dej echo "Chyba 1: ".mysql_error(); atd., vypíše ti to chybu, pokud je špatná syntaxe SQL

jestli ti nesedí hodnoty jednotlivých proměnných, musíš je také opravit sám, my nevíme, co tam vkládáš

tohle ti asi nikdo z hlavy neopraví, musíš konkrétně popsat roblém

a ještě jeden tip:
mysql_query($d="UPDATE ".$pref."_sekce SET poradi='$poradi' WHERE id='$poradiNEW[0]'")){
    $where = "id != '$poradiNEW[0]' AND poradi BETWEEN ".min($row["poradi"], $poradi)." AND ".max($row["poradi"], $poradi)."";
echo $d; // vypíše dotaz pro kontrolu
HGD
Profil
-to první vypisování chyb nefunguje, resp. newim jak to zapsat
-ten druhej typ taky nefunguje, ale když dam
if(mysql_query("UPDATE ".$pref."_sekce SET poradi='$poradi' WHERE id='$poradiNEW[0]'")){
    $where = "id != '$poradiNEW[0]' AND poradi BETWEEN ".min($row["poradi"], $poradi)." AND ".max($row["poradi"], $poradi)."";
    (mysql_query("UPDATE ".$pref."_sekce SET poradi=poradi ".($row["poradi"] < $poradi ? "-" : "+")." 1 WHERE $where"));
   }else echo "UPDATE ".$pref."_sekce SET poradi='$poradi' WHERE id='$poradiNEW[0]'";


tak to vypíše: UPDATE loc_sekce SET poradi='2' WHERE id='4'

PS.: $poradiNEW[0]= ID přemistovaného řádku
$poradiNEW[1]= nová pozice řádku

->což je v původním článku: $_GET[select] a $_POST["poradi"]
HGD
Profil
tak to vypisuje chbu v tej druhej podmínce, ale newim co s ní O:-)
Duplicate entry '2' for key 2
HGD
Profil
tak už nick :) už sem našel chybu, v DB ve sloupci "poradi" bylo nastaveno UNIQUE
Toto téma je uzamčeno. Odpověď nelze zaslat.