| Autor | Zpráva | ||
|---|---|---|---|
| Nookyn Profil |
#1 · Zasláno: 15. 4. 2010, 16:04:04
Zdarec, konečně sem se rozhodnul že si udělam administraci odkazů k mému systému na webu. Měl sem nejdřív problémy s posouváním a tam sem taky skončil. Odkazy se posouvají správně ale po několika přesunutích script nejde tak jak má, prostě nefunguje.
Tady je celej script kterej sem zatim napsal. A nevšímejte toho bordelu xD... if($_POST['akce']=="Přidat odkaz"){
}else{
$sql = mysql_query("SELECT * FROM odkazy ORDER BY poradi ASC");
echo("<center><table border=\"1\" class=\"tabulka_cerna\">");
$posledni_pocet = mysql_num_rows(mysql_query("SELECT * FROM odkazy"));
while($vypis=mysql_fetch_array($sql)){
if($vypis['poradi']<"2"){
$nahoru = "";
}else{
$nahoru = "<a href=\"index?admin=odkazy&smer=nahoru&poradi=".$vypis['poradi']."\"><img src=\"images/up.gif\"></a>";
}
if($vypis['poradi']==$posledni_pocet){
$dolu = "";
}else{
$dolu = "<a href=\"index?admin=odkazy&smer=dolu&poradi=".$vypis['poradi']."\"><img src=\"images/down.gif\"></a>";
}
if($nahoru=="" AND $dolu==""){
$nahoru_dolu_nic = "-";
}else{
$nahoru_dolu_nic = "";
}
echo("
<tr>
<th style=\"padding: 5px 5px 5px 5px;\">".$vypis['poradi']."</th>
<td style=\"padding: 5px 5px 5px 5px;\"><a href=\"".$vypis['adresa']."\">".$vypis['nazev']."</a></td>
<td style=\"padding: 5px 5px 5px 5px; text-align: center;\">".$nahoru.$dolu.$nahoru_dolu_nic."</td>
</tr>
");
}
echo("</table></center>");
if(isset($_GET['smer'])){
if($_GET['smer']=="nahoru"){
$prvni = $_GET['poradi'];
$prvni_vysledek = $_GET['poradi']-1;
$druhy = $_GET['poradi']-1;
$druhy_vysledek = $_GET['poradi'];
mysql_query("UPDATE odkazy SET poradi='$prvni_vysledek' WHERE poradi='$prvni' LIMIT 1;");
print(mysql_error());
mysql_query("UPDATE odkazy SET poradi='$druhy_vysledek' WHERE poradi='$druhy' LIMIT 1;");
print(mysql_error());
header("location: index?admin=odkazy");
}elseif($_GET['smer']=="dolu"){
$prvni1 = $_GET['poradi'];
$prvni_vysledek1 = $_GET['poradi']+1;
$druhy1 = $_GET['poradi']+1;
$druhy_vysledek1 = $_GET['poradi'];
mysql_query("UPDATE odkazy SET poradi='$prvni_vysledek1' WHERE poradi='$prvni1' LIMIT 1;");
print(mysql_error());
mysql_query("UPDATE odkazy SET poradi='$druhy_vysledek1' WHERE poradi='$druhy1' LIMIT 1;");
print(mysql_error());
header("location: index?admin=odkazy");
}else{
echo("<span class=\"redalert\">Chyba</span>");
}
}
} |
||
| WertriK Profil |
#2 · Zasláno: 15. 4. 2010, 16:15:29
Dalo mi to chvilku než jsem se v tom našel, ale chybička je jasná :-)
Třeba tahle situace (posun nahoru):
$prvni = $_GET['poradi'];
$prvni_vysledek = $_GET['poradi']-1;
$druhy = $_GET['poradi']-1;
$druhy_vysledek = $_GET['poradi'];
mysql_query("UPDATE odkazy SET poradi='$prvni_vysledek' WHERE poradi='$prvni' LIMIT 1;");
print(mysql_error());
mysql_query("UPDATE odkazy SET poradi='$druhy_vysledek' WHERE poradi='$druhy' LIMIT 1;");
print(mysql_error());
Berme, že $_GET['poradi'] = 5 (příklad). Chyba je v tom, že když se ti provede první UPDATE tak nastavíš UPDATE odkazy SET poradi='4' WHERE poradi='5' LIMIT 1 A v tom druhém UPDATE odkazy SET poradi='5' WHERE poradi='4' LIMIT 1 Takže to co nastavíš v tom prvním updatu - ta 4, tak ta potom splní podmínku i pro ten druhý - což nemá. Principielně je to v pořádku, jen musíš ošetřit i tuhle chybku. |
||
| Nookyn Profil |
#3 · Zasláno: 16. 4. 2010, 06:43:28
njn ale to právě nevim jak... ošetřit
|
||
| Nookyn Profil |
#4 · Zasláno: 16. 4. 2010, 07:04:39
jestli by to šlo, mohl bys poslat tu danou část která potřebuje opravit ??? :-) pls
|
||
| panther Profil |
#5 · Zasláno: 16. 4. 2010, 08:47:26
Nookyn:
může to udělat například tak, že kromě pozice si budeš v GETu předávat i id položky. Nejprve provedeš ten druhý update podle GET['poradi'], pak ten první podle GET['id']. Třeba. |
||
| WertriK Profil |
#6 · Zasláno: 16. 4. 2010, 08:58:32
Předávej si i id odkazu:
$nahoru = "<a href=\"index?admin=odkazy&smer=nahoru&poradi=".$vypis['poradi']."&id=".$vypis['id']."\"><img src=\"images/up.gif\"></a>"; .... $dolu = "<a href=\"index?admin=odkazy&smer=dolu&poradi=".$vypis['poradi']."&id=".$vypis['id']."\"><img src=\"images/down.gif\"></a>"; A upravíš ty updaty (posun nahoru):
$poradi = $_GET['poradi'];
$id = $_GET['id'];
/* předešlý odkaz posouvám dolů */
mysql_query("UPDATE odkazy SET poradi=poradi+1 WHERE poradi=".$poradi-1." LIMIT 1;");
/* zvolený odkaz posouvám nahoru */
mysql_query("UPDATE odkazy SET poradi=poradi-1 WHERE id = ".$id." LIMIT 1;");
|
||
| Nookyn Profil |
#7 · Zasláno: 16. 4. 2010, 13:37:33 · Upravil/a: Nookyn
a logicky by měl bejt jak posun dolů ??? obrátit znamínka ... ?
|
||
| panther Profil |
#8 · Zasláno: 16. 4. 2010, 13:40:47
Nookyn:
„a logicky by měl bejt jak posun dolů ??? obrátit znamínka ... ?“ výše máš dvě řádky kódu - nekopíruj je, ale zkus je pochopit. Pak posun opačným směrem nebude problém. |
||
| Nookyn Profil |
#9 · Zasláno: 16. 4. 2010, 13:58:11
to já samozřejmě chápu ale třeba včera sem to posunování dělal přez 2 hodiny a nemohl sem na to přijít ... ale dík moc
|
||
|
Časová prodleva: 16 let
|
|||
0