| 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: 13 let
|
|||
0

