Autor Zpráva
Dadadada
Profil *
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
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 *
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
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 *
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
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
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 *
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 *
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
Dadadada:
pozice prvku v poli (číslováno od 0)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0