Autor Zpráva
andrstom
Profil
Dobrý den, ahoj

Rád bych si vypsal data z databáze do formuláře. Ve formuláři bude jeden input do kterýho se zadá číselná hodnota, která označuje prioritu daného inputu. Po odeslání formuláře se data setřídí právě podle priority. Určitě má někdo z Vás milion řešení jak to naprosto triviálně udělat, ale já nebyl dosud osvícen. jde o to udělat unikátní name pro input "priorita"...nedaří se mi to...zkoušel jsem to lámat pomocí for(), ale nepodařilo se mi to:-(

Přikládám script:
<?php
$mistnost=1;
$query = mysql_query("SELECT Mistnost,Nazev,TypFama,InvCislo,ProvozDenik FROM metrologie WHERE Mistnost = '$mistnost' ORDER BY InvCislo ASC");
?>
  <table align='center' width='800'>
    <tr><th>Priorita</th><th>Název</th><th>Model</th><th>Inventární číslo</th></tr>
      <form name='seznamDenikuPriorita' method='GET' action='<?php echo $_SERVER["PHP_SELF"]?>'>
        <input type="hidden" size='5' name="mistnostVyber" value="<?php echo"".$mistnost."";?>"/>
        <?php
        @$priorita = stripcslashes(mysql_real_escape_string(trim($_GET['priorita'])));
        while($row = mysql_fetch_array($query)) { 
          if (!empty($_GET['priorita'])) {
          ?>
          <tr>
            <td><input type="text" size='5' name="priorita" value="<?php echo "".$_GET['priorita'].""?>"/></td>
            <td><?php echo "".$row['Nazev'].""?></td>
            <td><?php echo "".$row['TypFama'].""?></td>
            <td><?php echo "".$row['InvCislo'].""?></td>
          </tr>
          <?php
          } 
          else {
          ?>
          <tr>
            <td><input type="text" size='5' name="priorita" value=""/></td>
            <td><?php echo "".$row['Nazev'].""?></td>
            <td><?php echo "".$row['TypFama'].""?></td>
            <td><?php echo "".$row['InvCislo'].""?></td>
          </tr>
        <?php
        } 
      }
      ?>
      <tr><td colspan='4' align='center'><br /><button type='submit' class='btn btn-primary'>Vytisknout seznam</button></td></tr>
    </form>
  </table>
Keeehi
Profil
Nikde nevidím žádné třídění. Akorát podmíněný výpis proměnné je li nastavena.

Zbytečně zjišťuješ počet řádků. Navíc špatně (neatomicky).
Escapuješ špatnými funkcemi. Koukni se na ESCAPOVÁNÍ - DEFINITIVNÍ PŘÍRUČKA.
Taps
Profil
andrstom
z jakého důvodu požaduješ unikátní hodnotu inputu. Pokud pracuješ s více formulářovými poli, tak je lepší použít pole

  <td><input type="text" size='5' name="priorita[]" value="<?php echo "".$_GET['priorita'].""?>"/></td>
andrstom
Profil
to KEEhi: počet řádků mi tam zbyl...máš pravdu v tomto scriptu nemá co dělat - odeberu;-)

to Taps: unikátní to potřebuju abych to v následném scriptu (není uveden) byl schopen podle těch inputů setřídit a vytisknout.

Ve výsledku to má udělat to, že si zobrazená data potřebuji vytisknout v tabulce, ve které ty data budou seřazena podle pořadí (priority), kterou jsem si zvolil (1, 2, 3, atd.).
Joker
Profil
andrstom:
V takových situacích bývá řešením pojmenování ve stylu: priorita[index položky], kde index položky je nějaký její unikátní identifikátor.

Pokud by údajů bylo víc než jeden, bude lepší to udělat takhle:
První položka by měla: polozky[1][nazev], polozky[1][priorita]
Druhá položka by měla: polozky[2][nazev], polozky[2][priorita]
atd.
andrstom
Profil
Joker
Upne si nejsem jisty,jestli se to da pouzit v pripade,kdy je polozek treba 30...mohl bys mi to nastinit ve scriptu?

Krasne a elegantni reseni vy bylo treba drag&drop,ale to je je pro me totalni spanelsko...jsem naklonen jakemukoliv reseni:-) a rad se necemu priucim.
Taps
Profil
andrstom:
ona skript bude použitelný i když budeš mít 30 položek
andrstom
Profil
Ukazal bys mi navrh toho reseni...hodne mi to pomuze
Taps
Profil
andrstom:
viz [#3] Taps. Pro kontrolu si pak můžeš po odeslání vytisknout pole

<?
print_r($_GET);
?>
Joker
Profil
andrstom:
Upne si nejsem jisty,jestli se to da pouzit v pripade,kdy je polozek treba 30
Klidně i když jich tam bude třeba 300.

mohl bys mi to nastinit ve scriptu?
Je to celkem primitivní- naznačím:
$databaze->query($sql);
while($zaznam = $databaze->fetch()) {
  $name = "polozky[" . $zaznam["id"] . "]"; // např "polozky[1]"
  // Jednotlivé inputy mají name polozky[x][nazev] a polozky[x][priorita]
  echo '<label>Název: <input type="text" name="' . $name . '[nazev]"></label>';
  echo '<label>Priorita: <input type="text" name="' . $name . '[priorita]"></label>';
}

No a čtení:
$polozky = $_POST["polozky"];
foreach ($polozky as $id => $pol) {
  echo "Položka #" . $id . ": Název " . $pol["nazev"] . ", priorita: " . $pol["priorita"] . "<br>";
}
andrstom
Profil
mám se stále hodně co učit....díky za rady, vyzkouším a dám vědět;-)

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: