Autor | Zpráva | ||
---|---|---|---|
Dadadada Profil * |
#1 · Zasláno: 24. 8. 2012, 19:51:38
Dobrý den, řeším nyní řazení výsledků najednou
elseif(isset($_POST['sortieren'])) { $sql_2 = MySQL_Query("UPDATE partneri SET list='$i' WHERE id IN (".implode(',', $_POST['sort']).") "); if (!$sql_2){ error("$lng_admin_chyba"); } else { ok("Seřazeno!"); } } .. .. $sql_pocet = MySQL_Query("SELECT * FROM partneri"); $pocet = mysql_num_rows($sql_pocet); $list = $row['list']; //zjistí jaké číslo je v databázi nyní Echo " <select name='sort[]'>".PHP_EOL; For($i = 1; $i <= $pocet; $i++) Echo "<option ".($i == $list ? "selected='true' " : "")."value='$i'>$i</option>".PHP_EOL; Echo "</select></td></tr>".PHP_EOL; <input type="submit" name="sortieren" value="Seřadit" /> Apliakce napíše:seřazeno, ale nic se nestane... nevíte včem dělám chybu? |
||
Joker Profil |
#2 · Zasláno: 24. 8. 2012, 20:08:19
Dadadada:
A co by se mělo stát? Ten dotaz my měl pro položky, které jsou v $_POST["sort"] nastavit sloupec list na hodnotu proměnné $i. Co z toho přesně nefunguje? Jinak ten kód obsahuje několik asi nesouvisejících chyb: Řádek 4: Uvozovky se píší jen kolem řetězců, ne kolem proměnných, ani hodnot jiných typů než řetězec. Řádek 12-13: Pokud chcete jen zjistit počet určitých záznamů v databázi, používejte SELECT COUNT a ne SELECT a pak spočítání vrácených řádků. Řádek 16: Jen formalita, Jsou-li HTML atributy, které prvek ovlivňují svou existencí/neexistencí (jako checked, selected, disabled atp.) zapsané včetně hodnoty, používá se standardně jako hodnota název atributu. Tj. obvyklý zápis je buď jen selected bez hodnoty, nebo selected="selected"
|
||
Dadadada Profil * |
#3 · Zasláno: 24. 8. 2012, 22:03:34 · Upravil/a: Dadadada
Mělo by se to seřadit, teď ikdyž udělám
$sql_2 = MySQL_Query("UPDATE partneri SET list='5' WHERE id IN (".implode(',', $_POST['sort']).") ");
tak se 5 zapíše pouze u některých záznamů takhle nějak mám celý kod: <?php echo"<form name=\"myform\" action=\"?strana=partneri&archiv\" method=\"post\">"; echo "<table>"; echo' <tr> <th scope="col" class="rounded-company">Název</th> <th scope="col" class="rounded-q4" align="center">Admin</th> </tr> '; $sql= MySQL_Query("SELECT * FROM partneri"); while ($row = MySQL_Fetch_Array($sql)) { echo"<tr>"; echo "<td align=\"left\" width=\"90%\">".$row["nazev "]."</td>" echo "<td align=\"center\" width=\"10%\"><a href=\"?strana=partneri&edit=".$row['id']."\">Editovat</a> "; $sql_p = MySQL_Query("SELECT * FROM partneri"); $pocet = mysql_num_rows($sql_p); $list = $row['list']; Echo " <select name='sort[]'>".PHP_EOL; For($i = 1; $i <= $pocet; $i++) Echo "<option ".($i == $list ? "selected='true' " : "")."value='$i'>$i</option>".PHP_EOL; Echo "</select></td></tr>".PHP_EOL; } echo "</table> <div align='right' style='padding:5px'> <input type='submit' name='sortieren' value='Seřadit'> </div> </form>"; if(isset($_POST['sortieren'])) { $sql_2 = MySQL_Query("UPDATE partneri SET list='5' WHERE id IN (".implode(',', $_POST['sort']).") "); if (!$sql_2){ error("$lng_admin_chyba"); } else { ok("Seřazeno!"); } } ?> Má to fungovat tak, že u každýho záznamu si vyberu číslo, dám Seřadit a do databáze se uloží ke každýmu záznamu svoje číslo |
||
mimochodec Profil |
#4 · Zasláno: 25. 8. 2012, 00:39:17
Dadadada:
> Mělo by se to seřadit, teď ikdyž udělám $sql_2 = MySQL_Query("UPDATE partneri SET list='5' WHERE id IN (".implode(',', $_POST['sort']).") "); > tak se 5 zapíše pouze u některých záznamů Nastavení stejného čísla několika řádkům v tabulce znamená "seřadit"? Aha. Ten dotaz si dej nejdřív do proměnné a až pak ho prováděj: $qry = ...; $ret= mysql_query($qry); To je obecná rada. Umožní ti to jednoduše si vypsat echo $qry; abys viděl, co se snažíš provést. Udělej to i teď a možná se něčeho dopátráš. Tvůj kód je napsán dost únavným stylem, nemám energii na to, abych se tím prokousával. |
||
Dadadada Profil * |
#5 · Zasláno: 25. 8. 2012, 09:23:58
mimochodec:
Díky, dopátral sem se k tomu, že do id se mi píšou čísla řazení, který mají být v list. Nevím jak mám přiřadit ID, tak sem udělal prasárnu s chcekboxem $sql_p = MySQL_Query("SELECT * FROM partneri"); $pocet = mysql_num_rows($sql_p); $list = $row['list']; echo"<input type=\"checkbox\" value=\"".$row['id']."\" name=\"ide[]\" checked>"; Echo " <select name='sort[]'>".PHP_EOL; For($i = 1; $i <= $pocet; $i++) Echo "<option ".($i == $list ? "selected='true' " : "")."value='$i'>$i</option>".PHP_EOL; Echo "</select></td></tr>".PHP_EOL; if(isset($_POST['sortieren'])) { $qry = "UPDATE partneri SET list IN (".implode(',', $_POST['sort']).") WHERE id IN (".implode(',', $_POST['ide']).") "; $ret= mysql_query($qry); echo"$qry"; if (!$ret){ error("$lng_admin_chyba"); } else { ok("Seřazeno!"); } } Nyní mi přikáz napíše: UPDATE partneri SET list IN (4,4,4,5,7,9,4,3,4) WHERE id IN (11,7,8,6,12,13,1,10,9) Ale data se neuloží, nevíte někdo proč?? |
||
Joker Profil |
#6 · Zasláno: 25. 8. 2012, 09:35:43
Dadadada:
„Ale data se neuloží, nevíte někdo proč??“ Protože ten SQL dotaz je špatně, konstrukce SET list IN něco nedává smysl.
Upřímně řečeno, já nějak nechápu, co to vlastně má dělat. |
||
mimochodec Profil |
#7 · Zasláno: 25. 8. 2012, 09:38:23
Dadadada:
„Nevím jak mám přiřadit ID“ Nijak, ID nepřiřazuj, nech ho vytvářet databázi (auto increment) a nikdy se ho nesnaž měnit. Vícenásobný UPDATE tak jaks ho napsal, nemůže fungovat. Vlastně nevím o tom, že by bylo možné updatovat jedním dotazem více řádků. Udělej to prostě po jednom. Opravdu není jasné, o co se snažíš, ani z popisu ani z kódu. Zkus to vysvětlit. |
||
Dadadada Profil * |
#8 · Zasláno: 25. 8. 2012, 10:33:09 · Upravil/a: Dadadada
Chci seřadit víc záznamů najednou...
Přikládám obrázek název sloupce v databázi list tam potřebuju přiřazovat IDčka co mám na obrázku vlevo |
||
Dadadada Profil * |
#9 · Zasláno: 25. 8. 2012, 12:16:18
tak už sem to vyřešil
$sort = $_POST['sort']; foreach($sort as $sortstring) { $serad=explode("-", $sortstring); $qry = "UPDATE partneri SET list = '$serad[1]' WHERE id = '$serad[0]' "; $ret= mysql_query($qry); } můžete mi prosím někdo vbysvětlit co zanmenají ty čísla v hranatých závorkách ($serad[0])? |
||
Keeehi Profil |
#10 · Zasláno: 25. 8. 2012, 12:20:23
Dadadada:
pozice prvku v poli (číslováno od 0) |
||
Časová prodleva: 12 let
|
0